Avatar billede Slettet bruger
20. marts 2002 - 21:02 Der er 31 kommentarer og
2 løsninger

Undtagelse opstår

Hej

Kan I se hvad faen der er galt her?

<%
If Request.Form("Logind") <> "" Then

'################### Lokale vars
strBrugernavn = fixSQL(Trim(Request.Form("brugernavn")))
strPassword = fixSQL(Trim(Request.Form("password")))

'################### Validering af formen
    If strBrugernavn = "" Then
        strError = "FEJL : Du har ikke indtastet dit brugernavn"
    ElseIf strPassword = "" Then
        strError = "FEJL : Du har ikke indtastet dit password"
    End If

    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "driver={MySql};dsn=localhost;Database=mindb;uid=root;pwd="
    strSQL = "SELECT * FROM tbl_users where brugernavn = '" & strBrugernavn & "'"
    Set rs = Conn.Execute(strSQL)

        '################### Hvis der ingen bruger findes med det ønskede navn
        If rs.BOF Or rs.EOF Then
        strError = "FEJL : Det indtastede brugernavn eksisterer ikke"
        end if
   
            '################### Hvis kodeordet matcher kodeordet i databasen
            if rs("Password") = strPassword then
            '################### Laver session
            session("user")     = rs("brugernavn")
            session("id")         = rs("password")
            session("login")    = "yes"
            Response.Redirect("profil.asp")
                                   
            else
            '################### Hvis kodeordet var forkert!
            session("login")    = "no"
            strError = "FEJL : Passwordet matchede ikke det indtastede brugernavn"
            end if

'################### Rydder op

Set Conn = Nothing

'################### Hvis ikke der er POSTET fra form

Else

Response.write("<table border=""0"" cellpadding=""0"" cellspacing=""4"" width=""100%"">")
Response.write("")
Response.write("")
Response.write("  <tr>")
Response.write("    <td>")
Response.write("")
Response.write("")
Response.write("    <p>Her logger du ind. Hvis ikke du er registreret  er du velkommen til at <a href=""opret.asp"">gøre det her</a></p>")
Response.write("    <p class=""fejl"">" & strError & "</p>")
Response.write("")
Response.write("    <form method=""POST"" action=""logind.asp"">")
Response.write("    <span class=""fed"">Dit brugernavn</span><br>")
Response.write("    <input type=""tekst"" name=""brugernavn"" class=""felter""><br>")
Response.write("    <span class=""fed"">Dit password</span><br>")
Response.write("    <input type=""password"" name=""password"" class=""felter""><br><br>")
Response.write("    <input type=""submit"" value=""Log ind"" class=""knap"" name=""Logind"">&nbsp;")
Response.write("    <input type=""reset"" value=""Nulstil"" class=""knap"">")
Response.write("    </form>")
Response.write("")
Response.write("    </td>")
Response.write("  </tr>")
Response.write("")
Response.write("</table>")

End If
%>

Meddelelsen er, at der opstod en undtagelse i linie 35 som er "if rs("Password") = strPassword then"
Det virker fint nok hvis begge felter er udfyldt med korrekt brugernavn og password!

På forhånd tak
Avatar billede skovtrold Nybegynder
20. marts 2002 - 21:06 #1
Skal du ikke udskifte følgende:
If rs.BOF Or rs.EOF Then
        strError = "FEJL : Det indtastede brugernavn eksisterer ikke"
        end if
   
            '################### Hvis kodeordet matcher kodeordet i databasen
            if rs("Password") = strPassword then

med:

If rs.BOF Or rs.EOF Then
        strError = "FEJL : Det indtastede brugernavn eksisterer ikke"
        Else

            '################### Hvis kodeordet matcher kodeordet i databasen
            if rs("Password") = strPassword then

            ....
            end if
Avatar billede skovtrold Nybegynder
20. marts 2002 - 21:08 #2
For du kan jo ikke hente rs("Password") hvis du er EOF...
Avatar billede Slettet bruger
20. marts 2002 - 21:09 #3
skovtrold > Det ville i såfald blive elseif, men jeg tror ikke det er der kæden hopper af - i hvert fald løser det ikke problemet.
Avatar billede Slettet bruger
20. marts 2002 - 21:13 #4
skov > Nej netop... Den gennemløber alle rs i tbl_users og ser om der er et som passer til den indtastede, og hvis det ikke er tilfældet, er strError = "FEJL : Det indtastede brugernavn eksisterer ikke"
Avatar billede skovtrold Nybegynder
20. marts 2002 - 21:14 #5
Får du kun fejl hvis du udfylder korrekt brugernavn men forkert password?
Avatar billede Slettet bruger
20. marts 2002 - 21:16 #6
skov > Den eneste måde den glider igennem på er hvis begge dele er indtastet korrekt...
Avatar billede Slettet bruger
20. marts 2002 - 21:16 #7
Sjovt nok har det virket fint nok tidligere, hvor min validering var Response.redirect "logind.asp?error=blabla"
Avatar billede skovtrold Nybegynder
20. marts 2002 - 21:16 #8
Får du nogen strError skrevet ud/vist?
Avatar billede Slettet bruger
20. marts 2002 - 21:17 #9
skov > Nej det gør jeg ikke...
Avatar billede skovtrold Nybegynder
20. marts 2002 - 21:19 #10
Hvad får du hvis du udskriver din strSQL ?
Avatar billede Slettet bruger
20. marts 2002 - 21:21 #11
Jeg får det jeg skal
##########
SELECT * FROM tbl_users where brugernavn = 'admin'
##########
hvis jeg har indtastet admin som brugernavn
Avatar billede coltau Juniormester
20. marts 2002 - 21:22 #12
Skovtrold har ret i sit første forsøg. !

Jeg har teste din kode og den virker fint - med mindre du indtaster et brugernavn der ikke findes.

        If rs.BOF Or rs.EOF Then
        strError = "FEJL : Det indtastede brugernavn eksisterer ikke"
        end if

            '################### Hvis kodeordet matcher kodeordet i databasen

NÆSTE LINIE MÅ IKKE UDFØRES HVIS BRUGER IKKE ER FUNDET.
            if rs("Password") = strPassword then

Du kan jo løse det med denne linie igen - hvis du ikke vil bruge else som skovtrold siger:

        If rs.BOF Or rs.EOF Then

Thats it. !
Avatar billede Slettet bruger
20. marts 2002 - 21:27 #13
coltau & skov > Jeg fatter det sgu ikke - har skiftet det ud som i siger, men uden resultat. Jeg får strError udskrevet... Hvorfor ikke?
Avatar billede skovtrold Nybegynder
20. marts 2002 - 21:28 #14
Ja, du får vel:
strError = "FEJL : Det indtastede brugernavn eksisterer ikke"
Avatar billede Slettet bruger
20. marts 2002 - 21:30 #15
skov > Nej det gør jeg nemlig ikke... Min validering træder slet ikke i kraft - heller ikke den som tjekker at felterne ikke er tomme...
Avatar billede Slettet bruger
20. marts 2002 - 21:31 #16
Hov kom til at skrive "Jeg får strError udskrevet" Der skulle ha' stået FÅR IKKE :o)
Avatar billede skovtrold Nybegynder
20. marts 2002 - 21:36 #17
Hvad gør fixSQL ?
Avatar billede Slettet bruger
20. marts 2002 - 21:38 #18
Replace(strSource, "'", "''")
Avatar billede skovtrold Nybegynder
20. marts 2002 - 21:46 #19
Jeg ved det ikke... Jeg ville udskrive request(brugernavn+password) og min strSQL og på den måde finde ud af hvor det er det går galt..
Avatar billede Slettet bruger
20. marts 2002 - 21:47 #20
skovtrold > Det har jeg gjort - Response.Write(strSQL) returnerer SELECT * FROM tbl_users where brugernavn = 'admin'
Avatar billede coltau Juniormester
20. marts 2002 - 21:48 #21
Jeg vil æde min hat på at hvis du indsætter disse linier i stedet for så funker den. For det var netop det jeg gjorde med din kode for at få det til at virke.

)

        '################### Hvis der ingen bruger findes med det ønskede navn
        If rs.BOF Or rs.EOF Then
          strError = "FEJL : Det indtastede brugernavn eksisterer ikke"
        else
   
            '################### Hvis kodeordet matcher kodeordet i databasen
            if rs("Password") = strPassword then
            '################### Laver session
            session("user")    = rs("brugernavn")
            session("id")        = rs("password")
            session("login")    = "yes"
            Response.Redirect("profil.asp")
                                   
            else
            '################### Hvis kodeordet var forkert!
            session("login")    = "no"
            strError = "FEJL : Passwordet matchede ikke det indtastede brugernavn"
            end if
        end if
Avatar billede Slettet bruger
20. marts 2002 - 21:52 #22
Find du bare hatten frem min fine coltau :o) Jeg får stadig ikke så meget som en fejl hvis jeg indtaster et ikke-eksisterende brugernavn og heller ej hvis jeg slet ikke indtaster noget...
Er det mon i Response.write("    <p class=""fejl"">" & strError & "</p>")
at problemet er?
Avatar billede skovtrold Nybegynder
20. marts 2002 - 21:55 #23
Kan du ikke paste koden herind som den ser ud nu?
Efter du har lavet de nyeste ændringer.
Avatar billede Slettet bruger
20. marts 2002 - 21:56 #24
<%
If Request.Form("Logind") <> "" Then

'################### Lokale vars
strBrugernavn = fixSQL(Trim(Request.Form("brugernavn")))
strPassword = fixSQL(Trim(Request.Form("password")))

'################### Validering af formen
    If strBrugernavn = "" Then
        strError = "FEJL : Du har ikke indtastet dit brugernavn"
    ElseIf strPassword = "" Then
        strError = "FEJL : Du har ikke indtastet dit password"
    End If

    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "driver={MySql};dsn=localhost;Database=mindb;uid=root;pwd="
    strSQL = "SELECT * FROM tbl_users where brugernavn = '" & strBrugernavn & "'"
    'Response.write (strSQL)
    Set rs = Conn.Execute(strSQL)

        '################### Hvis der ingen bruger findes med det ønskede navn
        If rs.BOF Or rs.EOF Then
          strError = "FEJL : Det indtastede brugernavn eksisterer ikke"
        else
   
            '################### Hvis kodeordet matcher kodeordet i databasen
            if rs("Password") = strPassword then
            '################### Laver session
            session("user")    = rs("brugernavn")
            session("id")        = rs("password")
            session("login")    = "yes"
            Response.Redirect("profil.asp")
                                   
            else
            '################### Hvis kodeordet var forkert!
            session("login")    = "no"
            strError = "FEJL : Passwordet matchede ikke det indtastede brugernavn"
            end if
        end if

'################### Rydder op

Set Conn = Nothing

'################### Hvis ikke der er POSTET fra form


Else

Response.write("<table border=""0"" cellpadding=""0"" cellspacing=""4"" width=""100%"">")
Response.write("")
Response.write("")
Response.write("  <tr>")
Response.write("    <td>")
Response.write("")
Response.write("")
Response.write("    <p>Her logger du ind. Hvis ikke du er registreret  er du velkommen til at <a href=""opret.asp"">gøre det her</a></p>")
Response.write("    <p class=""fejl"">" & strError & "</p>")
Response.write("")
Response.write("    <form method=""POST"" action=""logind.asp"">")
Response.write("    <span class=""fed"">Dit brugernavn</span><br>")
Response.write("    <input type=""tekst"" name=""brugernavn"" class=""felter""><br>")
Response.write("    <span class=""fed"">Dit password</span><br>")
Response.write("    <input type=""password"" name=""password"" class=""felter""><br><br>")
Response.write("    <input type=""submit"" value=""Log ind"" class=""knap"" name=""Logind"">&nbsp;")
Response.write("    <input type=""reset"" value=""Nulstil"" class=""knap"">")
Response.write("    </form>")
Response.write("")
Response.write("    </td>")
Response.write("  </tr>")
Response.write("")
Response.write("</table>")

End If
%>
Avatar billede Slettet bruger
20. marts 2002 - 22:06 #25
huh?
Avatar billede skovtrold Nybegynder
20. marts 2002 - 22:12 #26
Hvilken fejl får du nu?
Og får du en strError ?
Avatar billede Slettet bruger
20. marts 2002 - 22:16 #27
skov > Samme som hele tiden... Ingenting - min validering bliver ikke eksekveret... Der sker intet hvis jeg prøver at logge ind med en ikke-bruger, hvis jeg skriver et existerende brugernavn men forkert password, eller slet ingenting i noget felt... Kort sagt alt som skal valideres - bliver ikke valideret!
Avatar billede skovtrold Nybegynder
20. marts 2002 - 22:22 #28
Jeg er måske ved at stirre mig blind på det hele, men jeg så lige på din form og synes du mangler noget...
Øverst spørger du på:

If Request.Form("Logind") <> "" Then

Men den vil du jo aldrig kunne hente, for du har ikke noget der hedder Logind!
Du skal i din form indsætte f.eks. en :
<input type="hidden" name="Login" value="login">
Avatar billede Slettet bruger
20. marts 2002 - 22:24 #29
skov > Har lige prøvet at indsætte if Request.ServerVariables("REQUEST_METHOD") = "POST" then i stedet, men lige lidt hjælper det...
Avatar billede Slettet bruger
20. marts 2002 - 22:26 #30
i øvrigt har jeg da Response.write("    <input type=""submit"" value=""Log ind"" class=""knap"" name=""Logind"">&nbsp;")
Avatar billede skovtrold Nybegynder
20. marts 2002 - 22:28 #31
Hov, undskyld ja - den havde jeg ikke set :-)
Og jeg skrev selv forkert - det skulle have været Logind og ikke Login.
Avatar billede Slettet bruger
20. marts 2002 - 22:38 #32
coltau > Hvad siger du til det?
Avatar billede coltau Juniormester
21. marts 2002 - 04:57 #33
Jeg sov på det tidspunkt - jeg skulle tidligt op.

Jeg kan få nedenstående til at virke korrekt.

        '################### Hvis der ingen bruger findes med det ønskede navn
        If rs.BOF Or rs.EOF Then
          strError = "FEJL : Det indtastede brugernavn eksisterer ikke"
        else

            '################### Hvis kodeordet matcher kodeordet i databasen
            if rs("Password") = strPassword then
            '################### Laver session
            session("user")    = rs("username")
            session("id")        = rs("password")
            session("login")    = "yes"
            response.write("ok")
'            Response.Redirect("login.asp")

            else
            '################### Hvis kodeordet var forkert!
            session("login")    = "no"
            strError = "FEJL : Passwordet matchede ikke det indtastede brugernavn"
            end if
        end if
    response.write(strError)

'################### Rydder op
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