Jag försöker genom att använda cookies och if-satser hålla en användare inloggad. Den kollar om sessionen inte är online, och är den inte det, men cookien "inloggad"=ja så ska den kolla om cookievärdena för användarnamn och lösenord finns i databasen, och om de finns så ska den skapa sessionen igen.
Kod:
<% if Session("VTXOnline") <> "Ja" and Request.Cookies("tubsockor")("inloggad") = "Ja" then
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("sockdb/vtforum.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset") %>
<% '====================================================================================================================== %>
<% ' Kontrollera användarnamn, lösenord och behörighet %>
<% '====================================================================================================================== %>
<% Visa = "SELECT * FROM sockuser"
RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic
X = FALSE
Do Until X = TRUE OR RecSet.EOF
If RecSet("Usernamn") = Request.Cookies("tubsockor")("usernamn") 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("Losenord") = Request.Cookies("tubsockor")("losenord") Then
Y = TRUE
Exit Do
End If
RecSet.MoveNext
Loop
End If
If X = TRUE AND Y = TRUE Then
Session("VTXOnline") = "Ja"
Response.Cookies("tubsockor")("usernamn") = RecSet("usernamn")
Response.Cookies("tubsockor")("namn") = RecSet("Namn")
Response.Cookies("tubsockor")("epost") = RecSet("Epost")
Response.Cookies("tubsockor")("inloggad") = "Ja"
Response.Cookies("tubsockor").Expires = DateAdd("d", 5, Date)
end if
end if%>
Till att börja med kan du kasta bort det där inloggningsscriptet (som verkar härstamma från idg, oh hemska idg), så långt du bara kan, gärna dit där pepparn växer.
Scriptet är värdelöst. Katastrofalt och hemskt, och lägg inte tid på att försöka få det att fungera.
Kika här i asp-forumet efter varianter som är 236 miljoner gånger bättre.
Scriptet tillåter nämligen att vilken användare som helst i tabellen loggar in med vilket lösenord som helst, som finns i tabellen.
Det är enkelt att göra ett inloggningsscript på cirkus fyra rader som är extremt mycket bättre, snabbare och säkrare än de exkrementer du försökt använda ovan.
Det finns inget kodstycke som någonsin producerats i denna värld som motsvarar detta inloggningsscripts värdelöshet.
<%
if Session("VTXOnline") <> "Ja" and Request.Cookies("tubsockor")("inloggad") = "Ja" then
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("sockdb/vtforum.mdb")
strSQL = "SELECT * FROM sockuser [b]WHERE Usernamn = '" & f(Request.Cookies("tubsockor")("usernamn")) & "' AND Losenord = '" & f(Request.Cookies("tubsockor")("losenord")) & "'[/b]"
set objRS = Connect.Execute (strSQL)
if not objRS.EOF Then ' Inloggningen är korrekt
Session("VTXOnline") = "Ja"
Response.Cookies("tubsockor")("namn") = objRS("Namn")
Response.Cookies("tubsockor")("epost") = objRS("Epost")
Response.Cookies("tubsockor").Expires = DateAdd("d", 5, Date)
End if
objRS.Close : set objRS = Nothing
Connect.Close : set Connect= Nothing
End if
function f(strText)
f = Replace(strText, "'", "''")
end function
%>
Jag kan ju passa på att nämna, att om man ändå håller på, kan man ju passa på att byta ut Access-drivisen till OLEDB-dito. Se https://www.connectionstrings.com .
En tillklantning till så väntar det kanske ett jobb hos IDG? :e
Funkar finfint nu. Ska ta och ändra om detta till min ordinarie inloggskod också, så kan ju idg dra dit peppar växer som nån klok man sa för länge sedan.
Funkar finfint nu. Ska ta och ändra om detta till min ordinarie inloggskod också, så kan ju idg dra dit peppar växer som nån klok man sa för länge sedan.
Härligt!
Jag ska be att få understryka dock, att idg gör mycket annat bra. Men just detta inloggningsscript är alldeles fantastiskt, sensationellt, superlativt illa så det faktiskt sjunger sämre än Håkan Hellström.