Avatar billede lunddata Nybegynder
24. august 2007 - 20:23 Der er 21 kommentarer og
1 løsning

Connection til db

Hvad galt er der med følgende:
<%
' Hvis der er blevet trykket på knappen "Login"
If Request.Form("Action") = "Login" Then
    ' Her forberedes de indtastede værdier til validering
    strUID = Trim(Replace(Request.Form("Brugernavn"),"'",""))
    strPWD = Trim(Replace(Request.Form("Adgangskode"),"'",""))

    ' Hvis der er skrevet noget i både brugernavn og adgangskode
    If Len(strUID) > 0 And Len(strPWD) > 0 Then

        ' DSNLess forbindelse til databasen
        Set myConn = Server.CreateObject("ADODB.Connection")
        myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("login_2000.mdb")

        ' Opbygning af SQL streng
        strSQL = "SELECT UserID FROM Users"&_
            " WHERE (Username = '" & strUID & "')"&_
            " AND (Password = '" & strPWD & "')"

        Set rs = myConn.Execute(strSQL)
        If Not (rs.BOF Or rs.EOF) Then
            ' Hvis brugeren fandtes i databasen
            intUID = rs("UserID")
        Else
            ' Hvis brugeren ikke fandtes i databasen
            strERR = "Du blev ikke godkendt af systemet"
        End If

        ' Rydder op i vores connection objekt
        myConn.Close
        Set myConn = Nothing

        If Len(intUID) Then
            ' Hvis variablen intUID indeholder en værdi sættes denne i sessionen "UserID" og brugeren bliver sendt videre
            Session("UserID") = intUID
            Response.Redirect("beskyttet.asp")
        End If
    Else
        ' Hvis der ikke var angivet brugernavn og adgangskode
        strErr = "Du skal skrive både brugernavn og adgangskode"
    End If

    If Len(strErr) > 0 Then
        ' Her laves fejlmeddelsen om til rød skrift
        strErr = "<p><font color=red>" & strErr & "</font></p>"
    End If
End If
%>
-----------------------------------------------------------
Fejlmeddelelse fra supporter på webhotellet skriver:

Sådan som jeg ser det ligger fejlen før dit Response.Redirect tag:

Jeg får flg. fejl på siden når jeg logger på med test/test
ADODB.Connection.1 (0x800A0BB9)
The application is using arguments that are of the wrong type, are out of acceptable range, or are in conflict with one another.
/login.asp, line 12

er der hjælp her på eksperten?
Avatar billede thesurfer Nybegynder
24. august 2007 - 20:33 #1
Jeg synes ikke at der er noget der ser mistænkeligt ud.. Så det handler nu om at isolere fejlen..

Prøv følgende:
1) Opret en ASP fil kaldet "test.asp"

2) Indsæt KUN denne kode:
        Set myConn = Server.CreateObject("ADODB.Connection")
        myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("login_2000.mdb")

        myConn.Close
        Set myConn = Nothing


Hvis du får fejl nu, er det database-relateret..
Avatar billede thesurfer Nybegynder
24. august 2007 - 20:38 #2
Fejlen kan være her:

      If Len(intUID) Then

Du burde nok bruge If Len(intUID) > 0 Then

Jeg kan ikke se nogen definition på intUID.. kun at du sætter dens værdi HVIS (og KUN HVIS) brugeren er logget ind..

Derfor:

Indsæt følgende som DEN FØRSTE linie i din ASP fil:

<% Option Explicit %>

Så skal du definere samtlige variabler, inden du kan bruge dem..

Eksempel - Forkert:
s = "hej"

Eksempel - Korrekt:
dim s
s = "hej"

På den måde kan den fortælle dig, hvis du bruger variabler du ikke kender, f.eks. pga stavefejl..
Avatar billede cpufan Juniormester
24. august 2007 - 20:49 #3
If Len(intUID) Then

returnerer ikke true eller false

så der er en fejl

        If Len(intUID) > 0 Then
Avatar billede softspot Forsker
24. august 2007 - 21:07 #4
Hvad er det nu der står i linie 12?
Avatar billede softspot Forsker
24. august 2007 - 21:16 #5
Prøv evt. at benytte en nyere version af driver (OLEDB) til din database:

myConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("login_2000.mdb")
Avatar billede lunddata Nybegynder
24. august 2007 - 22:06 #6
Nu er der da først gået kage i den.
Jeg har faktisk kun snuset til asp, så derfor har jeg nok de voldsomme problemer;
Jeg har nu forsøgt med:
<%
' Hvis der er blevet trykket på knappen "Login"
If Request.Form("Action") = "Login" Then
    ' Her forberedes de indtastede værdier til validering
    strUID = Trim(Replace(Request.Form("Brugernavn"),"'",""))
    strPWD = Trim(Replace(Request.Form("Adgangskode"),"'",""))

    ' Hvis der er skrevet noget i både brugernavn og adgangskode
    If Len(strUID) > 0 And Len(strPWD) > 0 Then

        ' DSNLess forbindelse til databasen
        Set myConn = Server.CreateObject("ADODB.Connection")
       
        myConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &amp;
Server.MapPath("login_2000.mdb")
       
        ' Opbygning af SQL streng
        strSQL = "SELECT UserID FROM Users"&_
            " WHERE (Username = '" & strUID & "')"&_
            " AND (Password = '" & strPWD & "')"

        Set rs = myConn.Execute(strSQL)
        If Not (rs.BOF Or rs.EOF) Then
            ' Hvis brugeren fandtes i databasen
            intUID = rs("UserID")
        Else
            ' Hvis brugeren ikke fandtes i databasen
            strERR = "Du blev ikke godkendt af systemet"
        End If

        ' Rydder op i vores connection objekt
        myConn.Close
        Set myConn = Nothing

  If Len(intUID) > 0 Then
            ' Hvis variablen intUID indeholder en værdi sættes denne i sessionen "UserID" og brugeren bliver sendt videre
            Session("UserID") = intUID
            Response.Redirect("beskyttet.asp")
        End If
    Else
        ' Hvis der ikke var angivet brugernavn og adgangskode
        strErr = "Du skal skrive både brugernavn og adgangskode"
    End If

    If Len(strErr) > 0 Then
        ' Her laves fejlmeddelsen om til rød skrift
        strErr = "<p><font color=red>" & strErr & "</font></p>"
    End If
End If
%>
<html><head>
<title>Login script</title>
</head><body>
<form method="POST" action="login.asp">
  <p><font size="4">Angiv brugernavn og adgangskode</font></p><%=strErr%>
  <table border="0">
    <tr>
      <td width="50%">Brugernavn:</td>
      <td width="50%"><input type="text" name="Brugernavn" size="20"> (test)</td>
    </tr>
    <tr>
      <td width="50%">Adgangskode:</td>
      <td width="50%"><input type="password" name="Adgangskode" size="20">
        (test)</td>
    </tr>
  </table>
  <p><input type="submit" value="Login" name="Action"></p>
</form>
</body></html>
Avatar billede softspot Forsker
24. august 2007 - 22:33 #7
Udskift lige &amp; med & i denne sætning:

        myConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &amp;
Server.MapPath("login_2000.mdb")

så den bliver til:

        myConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("login_2000.mdb")
Avatar billede cpufan Juniormester
24. august 2007 - 22:35 #8
ja på en linie

        myConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("login_2000.mdb")
Avatar billede lunddata Nybegynder
24. august 2007 - 23:28 #9
Har rettet til det som softspot og cpufan skrev ovenfor til en linie. Men nærmest håbløst. Jeg får nu fejlmeldingen:
Technical Information (for support personnel)

Error Type:
Sun ONE ASP VBScript compilation (0x800A0408)
Unsupported character ' '
/login.asp, line 33, column 1

Browser Type:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; www.ASPSimply.com; .NET CLR 2.0.50727)

Page:
GET /login.asp
Avatar billede cpufan Juniormester
24. august 2007 - 23:46 #10
hvad er der på linie 33
Avatar billede lunddata Nybegynder
24. august 2007 - 23:46 #11
Spørger lidt uvidende:
Svarer line 33, column 1 til linie og søjle som er angivet under html i Front Page for filen login.asp?
Hvis det er tilfældet er der fejl ved
If Len(intUID) > 0 Then
... hvordan kommer jeg videre?
Avatar billede thesurfer Nybegynder
24. august 2007 - 23:53 #12
lunddata> Har du fulgt mine instruktioner fra 24/08-2007 20:38:44?
Avatar billede lunddata Nybegynder
25. august 2007 - 00:05 #13
thesurfer: jeg har skreveti første linie:
<% Option Explicit %>
og ikke andet apropos

Jeg får nu fejlen:
/login.asp, line 54

... hvilket nok er linien:
<p><font size="4">Angiv brugernavn og adgangskode</font></p><%=strErr%>
Avatar billede thesurfer Nybegynder
25. august 2007 - 00:07 #14
Så har du nok ikke læst den er del.. :-)

----


Så skal du definere samtlige variabler, inden du kan bruge dem..

Eksempel - Forkert:
s = "hej"

Eksempel - Korrekt:
dim s
s = "hej"

På den måde kan den fortælle dig, hvis du bruger variabler du ikke kender, f.eks. pga stavefejl..
Avatar billede thesurfer Nybegynder
25. august 2007 - 00:08 #15
Når du får en fejl, kopier hele fejlen og smid den her ind..

Det du gør der, kan vi ikke bruge til ret meget..

Altså:
1) Kopier hele fejlmeddelelsen
2) Skriv hvad der står på linien, der er fejl i
Avatar billede lunddata Nybegynder
25. august 2007 - 00:11 #16
Så om igen:
Technical Information (for support personnel)

Error Type:
Sun ONE ASP VBScript runtime (0x800A01F4)
'strErr' is undefined
/login.asp, line 54
Avatar billede thesurfer Nybegynder
25. august 2007 - 00:13 #17
Ok, så er vi her: 25/08-2007 00:07:14

:-)
Avatar billede lunddata Nybegynder
25. august 2007 - 10:10 #18
Prøver frem og tilbage.
I linie 12 og 13 står der nu:
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("login_2000.mdb")
   
Får nu:
Technical Information (for support personnel)

Error Type:
ADODB.Connection.1 (0x80004005)
SQLState: IM002 Native Error Code: 0 [DataDirect][ODBC lib] Data source name not found and no default driver specified
/login.asp, line 12


Browser Type:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; www.ASPSimply.com; .NET CLR 2.0.50727)

Page:
POST 45 bytes to /login.asp

POST Data:
Brugernavn=test&Adgangskode=test&Action=Login
Avatar billede softspot Forsker
25. august 2007 - 11:48 #19
Det kan godt være at den OLEDB-driver jeg foreslog ikke fungerer på en SUN ASP, så du skal muligvis tilbage til den oprindelige. Dog synes jeg det virkede som om det var i det du åbnede for forbindelsen at fejlen (den oprindelige) opstod, så derfor kan det være du skal undersøge hvad din udbyder har at sige om den sag... :)
Avatar billede lunddata Nybegynder
25. august 2007 - 12:55 #20
Er ved at fortvivle. Jeg har forsøgt med et andet script og får fejl på følgende linie:
rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("usersystem.mdb")



Error Type:
ADODB.Connection.1 (0x800A0BB9)
The application is using arguments that are of the wrong type, are out of acceptable range, or are in conflict with one another.
/login.asp, line 10
Avatar billede lunddata Nybegynder
25. august 2007 - 12:57 #21
usersystem.mdb er uploadet
Avatar billede lunddata Nybegynder
28. august 2007 - 22:36 #22
Har mit site liggende på SUN linux...
Jeg skylder at komme med følgende fra webhotellet (det er jeg først lige blevet oplyst om efter at sendt forespørgsel):
Det er kun muligt at benytte MS Access på Windows-hotellerne. Du kan evt. konvertere den til MySQL, se:
http://support.surftown.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=63&group=dk&languageid=2

Alternativt skal du have et Windows-hotel i stedet.
..... så er jeg ligevidt da jeg ikke har noget kendskab til mysql hvor jeg med dette værktøj nok er nødt til at lave loginsystemet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester