På denna lösenordskontroll fil check.inc
Blir felt oftast, men även på andra sidor.
<%
' Öppna dataförbindelsen
Set con = Server.CreateObject("ADODB.Connection")
con.open "xxxxxx", "xxxxxxx", "xxxxxxx"
Set RecSet = Server.CreateObject("ADODB.Recordset")
Visa = "SELECT * FROM users2"
RecSet.Open Visa, Con, adOpenStatic, adLockOptimistic
X = FALSE
Do Until X = TRUE OR RecSet.EOF
If RecSet("Username") = Session("Username") Then
X = TRUE
Exit Do
End If
RecSet.MoveNext
Loop
If X = TRUE Then
Y = FALSE
Do Until Y = TRUE OR RecSet.EOF
If RecSet("Password") = Session("Password") Then
Y = TRUE
Exit Do
End If
RecSet.MoveNext
Loop
End If
If X = FALSE Then
Response.Write "Du har anget ett felaktigt användarnamn!"
ElseIf Y = FALSE Then
Response.Write "Du har anget ett felaktigt lösenord!"
End If
If X = TRUE AND Y = TRUE AND Session("access") = "A" Then
ELSE
RecSet.Close
con.Close
set RecSet = nothing
set con = nothing
Response.redirect "fel_inloggning.asp"
End If
RecSet.Close
Con.Close
set RecSet = nothing
set con = nothing
%>
Jag skrev om koden, så att det blir färre databasaccesser.
<%
' Öppna dataförbindelsen
Set con = Server.CreateObject("ADODB.Connection")
con.open "xxxxxx", "xxxxxxx", "xxxxxxx"
sql = "select password from user2 where username = '" & session("username") & "'"
set recset = con.execute(sql)
login = false
if recset.eof then
Response.Write "Du har anget ett felaktigt användarnamn!"
else
if recset("password") <> session("password") then
Response.Write "Du har anget ett felaktigt lösenord!"
else
login = true
end if
End If
RecSet.Close
con.Close
set RecSet = nothing
set con = nothing
if not login then
Response.redirect "fel_inloggning.asp"
End If
%>
Om du har väldigt många användare lagrat så kan det ta lite tid.
Om du bara har 4 poster så borde du inte råka ut för timeout även om du använder din kod. (Med så få poster borde det inte bli någon nämnvärd prestandaskillnad mellan din och min kod.) Det låter som databashanteraren är rejält överlastad.
Det finns någon egenskap på kommando/connection man kan sätta för att öka ut timeout. Kommer inte ihåg utantill vad den heter men du kan ju söka på timeout+ado hos msdn.
r:
Ett problem med din kod är att den godkänner att man loggar in med ett namn och någon annans lösenord.