Hej!! Jag håller på med en applikation som gör att en medlem kan ändra sitt lösenord. Som det ser ut nu har jag 4 formulär: strMember, strPass, strNew1, strNew2. Det jag vill åstadkomma är ett felmeddelande för varje typ av fel som användaren kan tänkas göra. Du kan försöka med det här: Tack Andreas....funkar hur bra som helst. Jag hade en viss oroskänsla att jag var ute på hal is, och det var jag tydligen.Kolla medlem, ändra lösenord
1. Medlemmen finns inte i databasen
2. Lösenordet passar inte ihop med medlemsnummret
3. Det nya lösenordet är inte korrekt verifierat
Det viktiga är att medlemmen får reda på var han gjort fel.
Mitt problem är att jag hela tiden stöter på felmeddelandet: Undantag inträffade
<code>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open(sConnect)
SQLtemp = "SELECT Member, Pass FROM tblCustomers WHERE Member = '" & Request.form("strMember") & "' "
Set RS = Conn.Execute(SQLtemp)
'***Testar SQL-strängen***
'Response.Write("Sql-sträng: " & SQLtemp)
'Response.End
'If RS.EOF Then
' Response.Write "Ja, det fanns en post med det nummret" 'Endast test ska inte synas om medlemmen finns i databasen
'Else
' Response.Write "Medlemsnummret finns inte i vår databas"
'End If
If Request.Form("strMember") = "" then
strMessage = "Du måste ange ditt medlemsnummer"
Else
If Request.Form("strMember") = RS("Member") AND Request.Form("strPass") = RS("Pass") AND Request.Form("strNew1") = Request.Form("strNew2") then
SQL = "UPDATE tblCustomers SET Pass = '" & Request.Form("strNew2") & "' WHERE Member = '" & Request.Form("strMember") & "'"
Conn.Execute(SQL)
strMessage = "Ditt lösenord är ändrat"
Else
strMessage = "Någonting har gått fel"
End If
End If
set sConnect = Nothing
RS.Close
Conn.Close
%></code>
Någon som kan hjälpa?
Tackar på förhand
//UffeSv: Kolla medlem, ändra lösenord
<code>
<%
If Request.Form("strMember") = "" then
Response.Write "Du måste ange ditt medlemsnummer!"
ElseIf Request.Form("strNew1") = "" Then
Response.Write "Du måste ange ett nytt lösenord!"
ElseIf Request.Form("strNew1") <> Request.Form("strNew2") Then
Response.Write "Ditt lösenord stämmer inte med din verifikation!"
Else
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open sConnect
SQLtemp = "SELECT Member, Pass FROM tblCustomers WHERE Member = '" & Replace(Request.form("strMember"), "'", "''") & "' "
Set RS = Conn.Execute(SQLtemp)
If RS.EOF Then
Response.Write "Det finns ingen med det medlemsnummert!"
Else
If Request.Form("strPass") = RS("Pass") Then
SQL = "UPDATE tblCustomers SET Pass = '" & Replace(Request.Form("strNew2"), "'", "''") & "' WHERE Member = '" & Replace(Request.Form("strMember"), "'", "''") & "'"
Conn.Execute SQL
Response.Write "Ditt lösenord är ändrat"
Else
Response.Write "Du har angivit ett felaktigt gammalt lösenord!"
End If
End If
RS.Close
Set RS = Nothing
Conn.Close
Set Conn = Nothing
End If
%>
</code>
Du hade gjort en väldigt farlig kod. En hacker skulle kunna ändra lösenordet för alla användare.
Du måste ersätta varj '-tecken med två '-tecken i dina strängkonstanter i SQL. Annars ger det möjlighet att infoga yttryck och vilkor. T.Ex.Sv: Kolla medlem, ändra lösenord
Tack än en gång o god fortsättning