Avatar billede systemnet Nybegynder
26. januar 2004 - 16:27 Der er 19 kommentarer og
1 løsning

Session ud fra en Cookie

Hejsa

Jeg har følgende script som laver en session og en cookie.

<%

J_User = FixaTecken(Request.Form("username"))
J_Pass = FixaTecken(Request.Form("password"))
url = Request.Form("Url")
        SQLStmt = "SELECT * FROM Members Where M_Approve  = 1 and M_Name ='" & J_User & "' AND M_Password = '" & J_Pass & "'"
        Set RS = Conn.Execute(SQLStmt)
If RS.EOF Then
        Response.Redirect ("default.asp")
Else
        session("Userid") = rs("M_ID")
        session("M_name") = rs("M_name")
        session("M_email") = rs("M_email")
        Session("inlog") = True
        Response.Cookies(StrTitle).Expires = Date + 365
        Response.Cookies(StrTitle)("J_User") = J_User
        Response.Redirect url
END IF
       
%>

Er det muligt at lave et script som når den finder denne cookie at den så lave en session som hedder "inlog". Dette er mest tænkt som en slag autologin. Kan dette laves, eller er der en smartere måde at gøre det på ?
Avatar billede eagleeye Praktikant
26. januar 2004 - 17:41 #1
Ja det man men du skla nok gemme noget mere info end kun brugernavn eller kan man let logge ind som en anden bruger. Gem også password i cookien. Eller lav et Random password til hver bruger og gem det i cookien.

Så det nemt at lave:

username = Request.Cookies(StrTitle)("J_User")
password = Request.Cookies(StrTitle)("J_Pass")
if username <> "" AND password <> "" AND Session("inlog")<>"" then
  'Tjek og lav autologin
  SQLStmt = "SELECT * FROM Members Where M_Approve  = 1 and M_Name ='" & username & "' AND M_Password = '" & password & "'"
  Set RS = Conn.Execute(SQLStmt)
  If not RS.EOF Then
    session("Userid") = rs("M_ID")
    session("M_name") = rs("M_name")
    session("M_email") = rs("M_email")
    Session("inlog") = True
  END IF
end if
Avatar billede systemnet Nybegynder
26. januar 2004 - 20:39 #2
Det ser ikke rigtigt ud til at jeg kan få det til at virke. Koden skal jeg bruge til det forum jeg har fundet på denne side : http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=7293&lngWId=4

Det som jeg gerne vil lave er auto login lige som til andre forummer, men jeg troede at jeg kunne lave det ved at lave den cookie som login siden laver om til en session og så på den måde lave en art auto login. MEn hvis kan få dig til at kigge koden igennem på forummet og lave en gang rigtigt auto login så sætter jeg gerne mange point til.
Avatar billede eagleeye Praktikant
26. januar 2004 - 20:49 #3
Jeg kan vise hvad jeg har gjort en gang. Jeg har lavet en fil som hedder autologin.asp og på de sider jeg vil give mulighed for automatisk login includer jeg filen i toppen:

<!--#include file="autologin.asp"-->


Koden til filen:


<%
'Tjek om autologin cookie er gemt samt tjek man ikke alderede er logget ind
if Request.Cookies("login")("autologin") = "yes" and session("loginOK") <> "jada" then

  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "Data Source="& server.mappath("db5.mdb") & ";Provider=Microsoft.Jet.OLEDB.4.0;"
  Set rs = Server.CreateObject("ADODB.RecordSet")

  'Hendt brugernan og password
  username = replace(Request.Cookies("login")("brugernavn"),"'","''")
  password = replace(Request.Cookies("login")("password"),"'","''")

  strSQL= "SELECT * FROM dp_members WHERE account_valid = 1 AND (username = '" & username & "' AND userpassword='" & password & "');"
  Set rs = Conn.Execute (strSQL)
  'Tjek bruger og password findes i databasen
  if NOT rs.EOF then
    'Jeps der var en bruger sæt session variablerne som man er logget ind
    session("loginOK") = "jada"
    session("loginUserType") = rs("userType")
    session("loginMemberID") = rs("memberID")
    session("username") = rs("username")
  else
    'Ingen bruger, sæt session variablerne = ""
    session("loginOK") = ""
    session("loginUserType") = ""
    session("loginMemberID") = ""
    session("username") = ""
  end if

  Rs.Close
  Set rs = Nothing
  Conn.Close
  Set Conn = Nothing
end if
%>
Avatar billede systemnet Nybegynder
26. januar 2004 - 21:53 #4
Det syntes jeg ikke rigtigt jeg kan sætte mig ind i, har nu bikset med op flere login script i snart en måned og intet har jeg kunne få til at virke som jeg gerne ville så jeg må tilstå at jeg er ved at give op. Så hvis jeg kunne få dig at komme det lidt nærmere ville jeg blive meget glad. Kender du det med at gå i totalt sort !!!!
Avatar billede eagleeye Praktikant
26. januar 2004 - 22:00 #5
Fra spørgsmålet hvad indeholder er variablen  StrTitle ?
Avatar billede systemnet Nybegynder
26. januar 2004 - 22:03 #6
Dette er navnet på forummet som trækkes ud fra databasen.
Avatar billede eagleeye Praktikant
26. januar 2004 - 22:05 #7
Ok, så skal autologin side også hendte den strTitle så autlogin delen kan hente fra cookien.
Avatar billede systemnet Nybegynder
26. januar 2004 - 22:11 #8
Dette skulle den også gøre i starten af den fil hvor jeg har included autologin.asp filen. Der er en fil der hedder settings.asp som henter det fra databasen. Denne er included før autologin.asp. Ellers prøv at hente forummet fra ovenstående.
Avatar billede eagleeye Praktikant
26. januar 2004 - 22:26 #9
Prøv at lave den sådan her så:



<%
if Response.Cookies(StrTitle)("J_User") <> "" and Session("inlog") = "" then

  SQLStmt = "SELECT * FROM Members Where M_Approve  = 1 and M_Name ='" & J_User & "'"
  Set RS = Conn.Execute(SQLStmt)
  If RS.EOF Then
    ''Ingen bruger:
  Else
    session("Userid") = rs("M_ID")
    session("M_name") = rs("M_name")
    session("M_email") = rs("M_email")
    Session("inlog") = True
  END IF
end if
%>
Avatar billede systemnet Nybegynder
26. januar 2004 - 22:39 #10
Jeg har prøvet at kopiere det ovenstående til filen autologin.asp og det giver følgende fejl :

Error Type:
Microsoft VBScript runtime (0x800A01B6)
Object doesn't support this property or method: 'Response.Cookies(...)'

Opdagede så at der stod : Response.Cookies. Prøvede at ændre dette til Request.Cookies, denne gang uden fejl, men det virker stadig ikke.
Avatar billede eagleeye Praktikant
26. januar 2004 - 22:39 #11
Ja det skal være request.
Avatar billede eagleeye Praktikant
26. januar 2004 - 22:40 #12
Prøv at rette if sætningen til:

if request.Cookies(StrTitle)("J_User") <> "" and Session("inlog") <> True then
Avatar billede systemnet Nybegynder
26. januar 2004 - 22:43 #13
Nope det virkede heller ikke
Avatar billede eagleeye Praktikant
26. januar 2004 - 22:46 #14
arh, jeg kan da se en fejl i koden prøv lige denne:

<%
if request.Cookies(StrTitle)("J_User") <> "" and Session("inlog") <> True then
  J_User = request.Cookies(StrTitle)("J_User")
  SQLStmt = "SELECT * FROM Members Where M_Approve  = 1 and M_Name ='" & J_User & "'"
  Set RS = Conn.Execute(SQLStmt)
  If RS.EOF Then
    ''Ingen bruger:
  Else
    session("Userid") = rs("M_ID")
    session("M_name") = rs("M_name")
    session("M_email") = rs("M_email")
    Session("inlog") = True
  END IF
end if
%>
Avatar billede systemnet Nybegynder
26. januar 2004 - 22:52 #15
Det ser ud til at virke. Hvis man nu skal tage password med i autologin.asp er det så rigtigt at autologin.asp skal se sådan ud :

<%
if request.Cookies(StrTitle)("J_User") <> "" and Session("inlog") <> True then
  J_User = request.Cookies(StrTitle)("J_User")
  J_Pass = request.Cookies(StrTitle)("J_Pass")

  SQLStmt = "SELECT * FROM Members Where M_Approve  = 1 and M_Name ='" & J_User & "'"
  Set RS = Conn.Execute(SQLStmt)
  If RS.EOF Then
    ''Ingen bruger:
  Else
    session("Userid") = rs("M_ID")
    session("M_name") = rs("M_name")
    session("M_email") = rs("M_email")
    Session("inlog") = True
  END IF
end if
%>

Og filen som laver cookien skal se sådan ud : 

<%

J_User = FixaTecken(Request.Form("username"))
J_Pass = FixaTecken(Request.Form("password"))
url = Request.Form("Url")
        SQLStmt = "SELECT * FROM Members Where M_Approve  = 1 and M_Name ='" & J_User & "' AND M_Password = '" & J_Pass & "'"
        Set RS = Conn.Execute(SQLStmt)
If RS.EOF Then
        Response.Redirect ("default.asp")
Else
        session("Userid") = rs("M_ID")
        session("M_name") = rs("M_name")
        session("M_email") = rs("M_email")
        Session("inlog") = True
        Response.Cookies(StrTitle).Expires = Date + 365
        Response.Cookies(StrTitle)("J_User") = J_User
        Response.Redirect url
END IF
       
%>
Avatar billede eagleeye Praktikant
26. januar 2004 - 22:55 #16
Ja det er så næste skridt :)


Autologin delen kommen til at se sådan her ud, du skulle lige havde J_Pass med i SQL sætningen også :)


<%
if request.Cookies(StrTitle)("J_User") <> "" and Session("inlog") <> True then
  J_User = request.Cookies(StrTitle)("J_User")
  J_Pass = request.Cookies(StrTitle)("J_Pass")

  SQLStmt = "SELECT * FROM Members Where M_Approve  = 1 and M_Name ='" & J_User & "' AND M_Password = '" & J_Pass & "'"
  Set RS = Conn.Execute(SQLStmt)
  If RS.EOF Then
    ''Ingen bruger:
  Else
    session("Userid") = rs("M_ID")
    session("M_name") = rs("M_name")
    session("M_email") = rs("M_email")
    Session("inlog") = True
  END IF
end if
%>
Avatar billede eagleeye Praktikant
26. januar 2004 - 22:56 #17
Samt login delen skal så også gemme passwordet i cookien så disse to linjer:
        Response.Cookies(StrTitle).Expires = Date + 365
        Response.Cookies(StrTitle)("J_User") = J_User

Bliver til disse 3 linjer:
        Response.Cookies(StrTitle).Expires = Date + 365
        Response.Cookies(StrTitle)("J_User") = J_User
        Response.Cookies(StrTitle)("J_Pass") = J_Pass
Avatar billede systemnet Nybegynder
26. januar 2004 - 23:00 #18
Yepper mand, alt virker nu som det skal, du har lige gjordt mig til en meget meget meget glad mand. Det var rigtigt dejligt. Du får alle point uden at blinke.
Avatar billede eagleeye Praktikant
26. januar 2004 - 23:03 #19
Ok, det lyder godt så ligger jeg lige et svar :)

Så håber jeg det sorte gået væk igen *smiler*
Avatar billede systemnet Nybegynder
26. januar 2004 - 23:06 #20
Det kan du tro. Takker for super prof. og hurtig support.
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