20. marts 2002 - 21:02Der 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""> ") 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!
For du kan jo ikke hente rs("Password") hvis du er EOF...
Synes godt om
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.
Synes godt om
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"
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
Synes godt om
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?
Kan du ikke paste koden herind som den ser ud nu? Efter du har lavet de nyeste ændringer.
Synes godt om
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""> ") 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>")
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!
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">
Synes godt om
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...
Synes godt om
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""> ")
'################### 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
Synes godt om
Ny brugerNybegynder
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.