När jag loggar in som t.ex. magnusfernstrom så står det i forumet på min sida att jag är inloggad som magnus fernström med små bokstäver.
Fast namnet i databasen är: MagnusFernstrom.
Min fråga är då, hur "tvingar" man användaren att skriva sitt exakta användarnamn när han loggar in?
Det är nämligen så att den session som användarnamnet ligger i hämtas från formuläret.
<%
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("userdatabas.mdb") & ";"
SQL = "SELECT * FROM users WHERE username = '" & Request.Form("username") & "'"
Set rs = db.Execute(SQL)
If rs.EOF Then
Response.Redirect "index.asp"
End If
If Not rs("password") = Request.Form("password") Then
Response.Redirect "index.asp"
End If
%>
<%
Session("inloggad") = "ja"
Session("username") = rs("username")
Response.Redirect "index.asp"
%>
Men en fråga: Det var ett tag sedan jag skrev själva inloggnings scriptet. SÅ nu tog jag bort en rad, rs.Close som stod mellan End If och %>.
Kan något oväntat hända nu?
Kanske en konstig fråga, men jag har varit med om både det ena och det andra när det gäller ASP. :D
Nä, inget oväntat borde hända, men varför tog du bort den? :)
För han använder sig utan Recorset när han definerar sina sessioner, om han tar rs.close innan han ska definera variablerna så skapas väl ingen session? eller sessionen blir tom och han får ett felmedelande i typ av
"recordsätet kunde inte hittas i mängden, RS.bof eller RS.eof är true"
För han använder sig utan Recorset när han definerar sina sessioner, om han tar rs.close innan han ska definera variablerna så skapas väl ingen session? eller sessionen blir tom och han får ett felmedelande i typ av
"recordsätet kunde inte hittas i mängden, RS.bof eller RS.eof är true"
Eller är jag morgontrött?
magnusfernstrom har ju öppnat ett recordset. Då bör man lämpligen stänga det också.
För han använder sig utan Recorset när han definerar sina sessioner, om han tar rs.close innan han ska definera variablerna så skapas väl ingen session? eller sessionen blir tom och han får ett felmedelande i typ av
"recordsätet kunde inte hittas i mängden, RS.bof eller RS.eof är true"
Eller är jag morgontrött?
magnusfernstrom har ju öppnat ett recordset. Då bör man lämpligen stänga det också.
Jo men jag tänkte att man borde stänga det efter ex. att han delat ut sessionerna som innehåller en del utav recordsetet!
Istället för att stänga det innan han skapat sessionerna som innehåller en del utav Recordsetet
men man kanske kan stänga recordsetet iaf? och använda sig utav värderna i det forna RS
Man ska givetvis stänga recordsetet när man är klar med det, inte innan. ;)
Dessutom bör koden se ut så här:
<%
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("userdatabas.mdb") & ";"
SQL = "SELECT * FROM users WHERE username = '" & Replace(Request.Form("username"), "'", "''") & "'"
Set rs = db.Execute(SQL)
If rs.EOF Then
loginError = 1
else
If Not rs("password") = Request.Form("password") Then
loginError = 1
Else
Session("inloggad") = "ja"
Session("username") = rs("username")
End if
End if
Rs.Close
Set Rs = Nothing
db.close
Set db = Nothing
If loginError = 1 then ' Gör något speciellt om inloggningen misslyckades!
Response.redirect "index.asp?error=1"
Else
Response.Redirect "index.asp"
End if
%>
Ska man använda sig av värden från ett recordset som kan vara tomt, då får man se till att ha denna kod i if-satsen som kontrollerar EOF.
Sen kan man ju passa på att byta till OLEDB-drivern också, om man är sugen. ;)
Mvh
259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e