Det virker fint nok, men så lige pludselig så vil det ikke logge ud, så skal man slette cookies manuelt via browserens indstillinger og så virker det igen, og så lige pludselig så kommer problemet igen.
Muligvis viser siden bare den cachede indloggede side. Hvad hvis du i toppen af alle sider skriver:
<%Response.Expires=-1%>
Synes godt om
Slettet bruger
07. oktober 2007 - 20:10#2
Her er mit login script, og tjekker for det meste om Session("userid") er større end 0.
<% If Session("userid") = "" OR Session("userid") = 0 Then
If Request.Cookies("vdb_autologin")("autologin") = "yes" Then username = Request.Cookies("vdb_autologin")("username") password = Request.Cookies("vdb_autologin")("password") ElseIf Request.Form("login_username") > "" Then username = Request.Form("login_username") password = Request.Form("login_password") End If
strSQL = "Select * from sys_users where usUsername='" & username & "' AND usPassword='" & password & "' AND usValid=true" Set rsLogin = ConnMain.Execute (strSQL) If not (rsLogin.EOF OR rsLogin.BOF) Then
If rsLogin("usRole") >= SITE_VARIABLE_LOCKUSERLOGIN Then
If Session("userrole") >= 9 Then Session("bypasslockdown") = true End If
If rsLogin("usLastLogin") > "" Then Session("userlastlogin") = rsLogin("usLastLogin") Else Session("userlastlogin") = Now() End If
loginSQL = "update sys_users set [usLastLogin]=Now() where usID=" & rsLogin("usID") ConnMain.Execute(loginSQL)
Foldercheckuser rsLogin("usID")
If Request.Form("login_autologin") <> "" OR Request.Cookies("vdb_autologin")("autologin") = "yes" Then Response.Cookies("vdb_autologin")("username") = username Response.Cookies("vdb_autologin")("password") = password Response.Cookies("vdb_autologin")("autologin") = "yes" Response.Cookies("vdb_autologin").Expires = Date+365 End If
Jeg tror der ligger er par artikler omkring sql injetion, dem kan du får stor glæde af at læse, eller google lidt på emnet. Men det er et andet problem
Synes godt om
Slettet bruger
07. oktober 2007 - 20:35#6
Gammelhat >>> Er ikke helt med på hvad du mener det andet problem det er!?
Problemet er sql injektion. Du kontrollerer ikke brugerens input, så han kan manipulere med din sql forespørgsel. Det gør ham i stand til at lave alle mulige former for unoder, bl.a. logge ind som en anden bruger, uden kendskab til dennes password
Synes godt om
Slettet bruger
07. oktober 2007 - 20:41#8
Okay, det lyder ikke så godt, men hvor kan man finde forklaringer på hvordan man laver sådan noget rigtigt, det der sql injektion?
Hvis du sætter response.expires=-1 på alle dine sider, så bliver de ikke gemt i cachen, og så kommer du ikke til at se gamle sider, f.eks. som om du er logget ind, når du ikke er.
Istedet for at bruge din replace, har jeg sat en funktion ind, så man kun kan oprette en bruger/logge ind, hvis bruger og kode er rene tal og/eller bogstaver.
Jeg køre også med din response.expires=-1 nu, men jeg tror ikke det er det der er problemet, jeg tror ikke at den sletter cookies og derfor bliver den ved men at logge ind fordi der findes cookies for en aktiv bruger.
Så prøv at response.write noget på skærmen lige efter sletning af cookies, så vi ser, om den kører den del.
Synes godt om
Slettet bruger
08. oktober 2007 - 14:04#13
Jeg tror den udføre scriptet, for den kommer ikke med fejl eller noget, hvis jeg sætter noget tekst ind lige efter sletning. Er lige kommet itanke om noget, med ikke helt om dette har nogen betydning, men det site jeg har problemer med ligger på et subdomæne og login/logout er en kopi af det script der ligger på hoveddomænet, dvs. Response.Cookies("vdb_autologin")("username") osv., hedder det samme på begge sider, kan det være muligt at den kan bruge cookie fra hoveddomæne på subdomæne, men at den ikke kan få lov at slette den?
Synes godt om
Slettet bruger
09. oktober 2007 - 14:46#14
Nå, men indtil nu ser det ud til at det virker, så hvis i begge vil lægge et svar så deler jeg point mellem jer, da i begge har hjulpet med forbedringen af min side.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.