webForumDet fria alternativet

Stora och små bokstäver!

ASP

6 svar · 363 visningar · startad av magnusfernstrom

Medlem sedan mars 20033 686 inlägg
Frågan#1

Hurra hurra!
Ännu ett problem.

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.

Medlem sedan mars 20033 686 inlägg
#2

Dumt av mig att inte tänka :)

<%
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

Medlem sedan juni 200032 967 inlägg
#3

Nä, inget oväntat borde hända, men varför tog du bort den? :)

Medlem sedan juli 20015 107 inlägg
#4

@nders skrev:

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"

Eller är jag morgontrött?

Medlem sedan juni 200032 967 inlägg
#5

M.Cheraghi skrev:

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å.

Medlem sedan juli 20015 107 inlägg
#6

@nders skrev:

M.Cheraghi skrev:

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

Medlem sedan juni 200032 967 inlägg
#7

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
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)