Avatar billede none01 Nybegynder
17. marts 2006 - 21:20 Der er 6 kommentarer og
1 løsning

Vil ikke gemme cookie i login script?

Hej, jeg har et lille problem med et simpel lille loginscript som jeg har lavet.
Problemet er at hvis man sætter flueben ved Remember me, skal den gemme en cookie på computeren med informationer, så at brugeren næste gang ikke skal logge ind.
Men den vil bare ikke gemme den cookie og jeg aner ikke hvorfor.
Det er koden:

<!--#include file="../../config.asp" -->
<!--#include file="md5.asp" -->
<%
 
  'Here we open the database and make a username variable from the username column and password form the password column
  Set rs = Server.CreateObject("ADODB.Recordset")
  strsql = "SELECT * FROM login order by id DESC"
  con.execute(strsql)
  rs.Open strsql, con, 1, 2
  Do While NOT rs.EOF
  username = rs("username")
  password = rs("password")
  level = rs("level")
 
  'Here we find put if the user has a cookie on his computer, and if so the it's makes a session
  if Request.Cookies("login")("status") = "ok" then
  session("status") = "ok"
  session("username") = Request.Cookies("login")("username")
  session("password") = Request.Cookies("login")("password")
  session("level") = Request.Cookies("login")("level")
  end if

  'Here if the login is true then it checks if there is the username and md5 encypted password in the database that is same as the enterd one
  if login = "true" then
  if Request.Form("username") = username AND md5(Request.Form("password")) = password then
  session("status") = "ok"
  session("username") = Request.Form("username")
  session("password") = md5(Request.Form("password"))
  session("level") = level
  if Request.Form("saveme") = true AND session("status") = "ok" then
  Response.Cookies("login")("username") = session("username")
  Response.Cookies("login")("password") = session("password")
  Response.Cookies("login")("level") = session("level")
  Response.Cookies("login")("status") = session("status")
  Response.Cookies("HTMLTest").Expires = Date+365
  end if
    Response.Redirect("default.asp?page=0")
  end if
  end if
  rs.MoveNext
  loop
  set rs = nothing
  if  (Request.Form("username") <> username OR md5(Request.Form("password")) <> password) AND login = "true" then
  Response.Write("<div align=""center"" style=""color:#FF0000;background-color:#CCCCCC;font-size:12px;""><b>Username or password is wrong!</b></div>")
  end if

%>
<form action="default.asp?login=true" method="post">
Username:
<input type="text" name="username" /><br />
Password:
<input type="password" name="password" /><br />
Remember me: <input type="checkbox" name="saveme" /><br />
<input type="submit" value="Login" />
</form>
<%
  con.Close
  set con = nothing
%>
Avatar billede eagleeye Praktikant
17. marts 2006 - 21:26 #1
En checkbox giver ikke true men den værdi der står i value delen eller "on" hvis den er valgt. Så prøv at rette:

if Request.Form("saveme") = true AND session("status") = "ok" then

Til dette:

if lcase(Request.Form("saveme")) = "on" AND session("status") = "ok" then


jeg har lige sat lcase på også for jeg kan ikke helt huske om det er "ON" eller "on" :)
Avatar billede none01 Nybegynder
17. marts 2006 - 21:40 #2
Den vil stadigvæk ikke gemme de cookies :(
Avatar billede none01 Nybegynder
17. marts 2006 - 21:46 #3
Jeg har smidt denne koden i bunden af min side:
<%
strusernm = Request.Cookies("login")("username")
strpasswd = Request.Cookies("login")("password")
strstatus = Request.Cookies("login")("status")

Response.Write(strusernm & " " & strpasswd & " " & strstatus)
%>
Når jeg logger ind og sætter den til at huske mig, udkskriver den alle info'er uden problemer, men når jeg lukker min browser og går ind på siden igen kommer login siden frem. Og når jeg logger ind igen uden at sætte den til at huske mig, udskriver den heller ikke noget i bunden af siden.
Avatar billede eagleeye Praktikant
17. marts 2006 - 21:49 #4
Så prøv at rette disse linier hvor cookien hentes:

  if Request.Cookies("login")("status") = "ok" then
  session("status") = "ok"
  session("username") = Request.Cookies("login")("username")
  session("password") = Request.Cookies("login")("password")
  session("level") = Request.Cookies("login")("level")
  end if


Så de sætte vaiablen login til "ture":


  if Request.Cookies("login")("status") = "ok" then
  session("status") = "ok"
  session("username") = Request.Cookies("login")("username")
  session("password") = Request.Cookies("login")("password")
  session("level") = Request.Cookies("login")("level")
  login = "true"
  end if
Avatar billede none01 Nybegynder
17. marts 2006 - 21:52 #5
Det hjalp ikke så meget, den gør det samme.
Avatar billede none01 Nybegynder
17. marts 2006 - 21:59 #6
det var vist en stavefejl som lavede problemet, og login skal ikke sættes til true, tak for hjælpen eagleeye smid et svar ind os du får de points :)
Avatar billede eagleeye Praktikant
17. marts 2006 - 22:00 #7
ok, umiddelbart kunne det se ud som om den skulle sættes til ture ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester