Jag är lite av en nybörjare när det gäller ASP och jag får inte rätt på mitt lilla problem på egen hand. Jag gör en iloggningssida som ska känna av användarnamn och lösenord mot en Access databas och det fungerar så länge jag skriver i rätt anv.namn och lösen. Det fungerar även när jag skriver rätt anv.namn och fel lösen men skriver jag fel anv.namn och fel lösen så får jag detta felmedelande
Antingen är BOF eller EOF satt till True, eller så har aktuell post raderats. Den begärda åtgärden kräver en aktuell post.
/Snicksnack/index.asp, line 47
Line 47 är då jag hämtar info från databasen och lägger den i variabeln user2.
Jag vill ju att besökaren ska få mina felmedelanden oavsett vilket fel de gör.
Hoppas att det inte blev rörigt och nån kan hjälpa mig.
<%
Dim rs, objConn, strConn, user, password, user2, password2, fel1, fel2, check
user=Request.Form("txtUser")
password=Request.Form("txtPassword")
fel1=""
fel2=""
check=True
If Request.Form.Count Then
If user="" Then
Fel1="Fyll i användarnamn!"
check=false
End if
If password="" Then
Fel2="Fyll i lösenord!"
check=false
End if
End if
If check=false Then
Else
If request.form("koll") = "ok" THEN
Set objConn = Server.CreateObject("ADODB.Connection")
strConn = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.mappath("../db/dbSnickSnack.mdb") & ";"
objConn.Open strConn
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM tblUser WHERE fNickName = '"&user&"'", objConn
user2 = rs("fNickName")
password2 = rs("fPassword")
If user2 = user And password2 = password Then
Response.Redirect "profil.asp"
Else
Response.Redirect "fel.htm"
End if
If rs.EOF = True Then
Response.Redirect "fel.htm"
End If
Set rs = Nothing
Set objConn = Nothing
rs.Close
objConn.Close
End if
End if
%>
Jag måste säga att det luktar lite IDG-kod över detta.
Det finns mycket bättre metoder att kontrollera en inloggning direkt i SQL-koden.
Sök lite här på forumet så hittar du säkert ett jättebra exempel på det du skall göra. ;)
Denna kod skall säkert funka ändå. Dock så är SQL-injections ett problem.
<%
Dim rs, objConn, strConn, user, password, user2, password2, fel1, fel2, check
user=Request.Form("txtUser")
password=Request.Form("txtPassword")
fel1=""
fel2=""
check=True
If Request.Form.Count Then
If user="" Then
Fel1="Fyll i användarnamn!"
check=false
End if
If password="" Then
Fel2="Fyll i lösenord!"
check=false
End if
End if
If check=false Then
Else
If request.form("koll") = "ok" THEN
Set objConn = Server.CreateObject("ADODB.Connection")
strConn = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.mappath("../db/dbSnickSnack.mdb") & ";"
objConn.Open strConn
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM tblUser WHERE fNickName = '"&user&"'", objConn
if NOT rs.eof then
user2 = rs("fNickName")
password2 = rs("fPassword")
If user2 = user And password2 = password Then
Response.Redirect "profil.asp"
Else
Response.Redirect "fel.htm"
End if
else
Response.Redirect "fel.htm"
end if
Set rs = Nothing
Set objConn = Nothing
rs.Close
objConn.Close
End if
End if
%>
<%
Dim rs, objConn, strConn, user, password, user2, password2, fel1, fel2, check
user=Request.Form("txtUser")
password=Request.Form("txtPassword")
fel1=""
fel2=""
check=True
If Request.Form.Count Then
If user="" Then
fel1="Fyll i användarnamn!"
check=false
End if
If password="" Then
Fel2="Fyll i lösenord!"
check=false
End if
End if
If NOT check=false Then
If request.form("koll") = "ok" THEN
Set objConn = Server.CreateObject("ADODB.Connection")
strConn = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.mappath("../db/dbSnickSnack.mdb") & ";"
objConn.Open strConn
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM tblUser WHERE fNickName = '"&user&"'", objConn
If NOT rs.EOF Then
user2 = rs("fNickName")
password2 = rs("fPassword")
If user2 = user And password2 = password Then
Response.Redirect "profil.asp"
Else
Response.Redirect "fel.htm"
End If
Else
Response.Redirect "fel.htm"
End If
Set rs = Nothing
Set objConn = Nothing
rs.Close
objConn.Close
End if
End if
%>
/red Blev lite sen eftersom ja tog bort alla tabs ur koden ;)
Lägg till villkoret för password direkt i select-satsen.
dim passed
rs.Open "SELECT * FROM tblUser WHERE fNickName = '"&user&"' and fPassword = '" & password & "'", objConn
if not rs.eof then passed = true else passed = false
rs.close
set rs = nothing
objConn.close
set objConn = nothing
if passed then
Response.Redirect "profil.asp"
Else
Response.Redirect "fel.htm"
End if
Om du vill stänga objekt explicit så måste du göra det innan du gör response.redirect
Dim rs, objConn, strConn, user, password, user2, password2, fel1, fel2, check
user=Request.Form("txtUser")
password=Request.Form("txtPassword")
fel1=""
fel2=""
check=True
If Request.Form.Count Then
If user="" Then
Fel1="Fyll i användarnamn!"
check=false
End if
If password="" Then
Fel2="Fyll i lösenord!"
check=false
End if
End if
If NOT check=false Then
If request.form("koll") = "ok" THEN
Set objConn = Server.CreateObject("ADODB.Connection")
strConn = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.mappath("../db/dbSnickSnack.mdb") & ";"
objConn.Open strConn
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM tblUser WHERE fNickName = '"&user&"' and fPassword = '"& password2 &"'", objConn
if NOT rs.eof then
Response.Redirect "profil.asp"
Else
Response.Redirect "fel.htm"
end if
Set rs = Nothing
Set objConn = Nothing
rs.Close
objConn.Close
End if
End if
%>