webForumDet fria alternativet

Kontroll av login och lösenord.

ASP

1 svar · 296 visningar · startad av Oputres

Medlem sedan feb. 2004333 inlägg
Frågan#1

Allå.

Jag har slitit ut följande ur ett större sammanhang som tidigare har fungerat jättebra. Tanken är att koden skall kontrollera ett inslaget användarnamn och lösenord mot godkända användare i en databas. Det som händer nu är att koden nedanför bara godkänner en av tre namn med lösenord i databasen. Hur skall jag skriva för att den skall kontrollera ALLA namn med tillhörande lösen i databasen?

Set RecSet = Connect.Execute("Select * From users Order By id Asc")

Do UNTIL RecSet.EOF
If Request.Form("username") = RecSet("username") And Request.Form("password") = RecSet("password") Then
Session("behorig") = "Ja"
Session.TimeOut = 90
Response.Redirect "inside.asp"
Else
Session("Fel_inloggning") = "<b><font color='Red'>Felaktigt användarnamn<br>eller lösenord!</font></b>"
Response.Redirect "admin_login.asp"
End If
RecSet.MoveNext
Loop

En annnan fråga. Hur många till namnet lika RecSet kan man ha på en site? Kan jag lite längre ner på den här asp-sidan definiera en ny RecSet som har helt andra uppgifter eller måste jag döpa den till typ RecSet2?

Medlem sedan aug. 20011 087 inlägg
#2

ok testa nått sånthär, det är enligt mig bättre kod men jag är inget proffs.

dim strUsername, strPassword
strUsername = request.form("username")
strPassword = request.form("password")

Dim cmd
Set cmd = server.createobject("adodb.command")
cmd.activeConnection = connect

MySQL = "Select username,password from users where username = ? and password = ? LIMIT 1"
cmd.CommandText = MySQL
SET rs = cmd.Execute (, array(strUsername, strPassword))

if rs.eof then

strError= "<b><font color='Red'>Felaktigt användarnamn<br>eller lösenord!</font></b>"
Response.Redirect "admin_login.asp"

else

Session("behorig") = "Ja"
Session.TimeOut = 90
Response.Redirect "inside.asp"

end if

kanske funkar, kanske inte ;)
använder du access så får du ta select top1 istället för limit 1

Sedan tycker jag det e onödigt att lägga felmeddelandet i en session för o skriva ut på admin_login.asp vilket jag antar du gör.
Lägg det istället i querystring på detta viset.

strError= "<b><font color='Red'>Felaktigt användarnamn<br>eller lösenord!</font></b>"
Response.Redirect("admin_login.asp?Error=" & strError & "")

och om du väljer att ändå köra session så se till o stänga den ifall den inta används eller efter den används.

och på andra frågan så kan du stänga recset med recset.close och sedan öppna ett nytt recset med samma namn längre ner.
tror jag iaf, ha rinte jobbat på det viset på ett tag.

263 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)