Avatar billede iceb1977 Nybegynder
26. maj 2002 - 16:14 Der er 10 kommentarer og
1 løsning

Cookie overskrives ikke ??????

Hej

jeg har lavet et login system til min side....

som lige nu kun har to profiler ....

en test profil

og min egen profil

Lige nu har jeg en cookie der går ind og tager

medlemsid i min tabel så når man udskriver

den får man at vide hvilket medlems id den

pågældende bruger har.

Jeg vil gerne kunne logge ind som test profilen

og det kan jeg da også nu ....

eneste problem er at min cookie skriver stadig

mit medlemsid og ikke testprofilens når jeg

udskriver den til skærmen.....

altså jeg vil gerne have jeg kan skrifte imellem

disse 2 profiler og jo dermed også disse

to cookies når jeg vil ..... hvordan gør jeg det ?

Her er min kode:

formular.asp


<%

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
  ' Databaseforbindelse - husk at angive sti til din database
  Set Conn = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & Server.MapPath("/db/hp.mdb")
  Conn.Open DSN
  Set rs = Server.CreateObject("ADODB.RecordSet")
  username = replace(Request.Form("username"),"'","")
  password = replace(Request.Form("password"),"'","")
strSQL= "SELECT * FROM medlemmer WHERE (brugernavn= '" & username & "' AND kode='" & password & "') AND (status = 1 OR status = 2)"
  Set rs = Conn.Execute (strSQL)

if not rs.EOF then
    session("loginOK") = "naturligvis"
    session("loginMemberID") = rs("ID")
    response.cookies("forumData")("brugerID") = Session("loginMemberID")
    response.cookies("forumData").Expires = now + 365
    Conn.Close
    'Den side man skal til når man er logget ind
    Response.Redirect("dokument.asp")
  else
    session("loginOK") = ""
    session("loginMemberID") = ""
  if not rs.EOF then
    session("loginOK") = "naturligvis"
    session("loginMemberID") = rs("memberID")
      response.cookies("forumData")("brugerID") = Session("loginMemberID")
      response.cookies("forumData").Expires = now + 365
 
    Conn.Close
    'Den side man skal til når man er logget ind
else   
Response.Redirect("til.asp")
 
    session("loginOK") = ""
    session("loginMemberID") = ""
    response.cookies("forumData")("brugerID") = ""
end if
  end if
end if
%>
<html>
<head></head>

<body bgcolor="#999966" text="#000000" link="#000000" vlink="#000000" alink="#FFFFFF">


<center><p>Velkommen til login her:</p>

Tilmeld dig <a href="http://iceb.ljnet.dk/flash/login/til.asp" target="_blank"> her</a>
<table border="1">
<form method="post" action="formular.asp">
  <tr><td>Brugernavn:</td><td><input name="username"></td></tr>
  <tr><td>Kode:</td><td><input type="password" name="password"></td></tr>
  <tr><td colspan="2" align="center"><input type="submit" value="Login" name="Action">

</td></tr>
</form></table>
<%
response.write request.cookies("forumData")("brugerID")
%>

For tests only user: ice pass: ic

</center>



</body>
</html>

Avatar billede tmceu Praktikant
26. maj 2002 - 21:28 #1
Problemet er at så længe du kører i samme script, vil request.cookies("forumData")("brugerID") indeholde de oprindelige værdier fra da brugeren requestede din side. Du vil ikke kunne se ændringen før i næste request.

Det du ændrer med response.cookies.... bliver jo netop sendt til browseren, og kan altså ikke ses i request.cookies før næste gang der requestes en side.
Avatar billede iceb1977 Nybegynder
26. maj 2002 - 21:47 #2
ok jeg har lige prøvet at request cookien på den næste side.....

medlemssiden ......

der kommer den også frem som min egen profil og ikke testprofilen

som jeg loggede ind med ...... jeg har id 49 og testprofilen har

id 48....

her er koden til medlemssektionen hvor jeg prøver at udskrive

cookien som jo sku være id 48 men som ER 49 .....

dokument.asp

<%
' Databaseforbindelse - husk at angive sti til din database
  Set Conn = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & Server.MapPath("/db/hp.mdb")
  Conn.Open DSN
  Set rs = Server.CreateObject("ADODB.RecordSet")

if Session("loginOK") = "natulivis" then
else
  if request.cookies("forumData") <> "" then
    session("loginMemberID") = request.cookies("forumData")("brugerID")
    strSQL = "SELECT * FROM medlemmer WHERE ID = " & session("loginMemberID")
    set rs = Conn.Execute(strSQL)
   
if NOT rs.EOF then
      session("loginOK") = "naturligvis"
    else
      session("loginMemberID") = ""
    end if
  else
    response.redirect("formular.asp")
  end if
end if



Conn.Close
%>


<html>
<title>tid og dato</title>
<head>
</head>

<body bgcolor="#999966" text="#000000" link="#000000" vlink="#000000" alink="#FFFFFF">


<h1>Dette er medlemssektionen</h1>
<br><b>Brugerfunktioner</b><br><br>
<a href="http://www.iceb.ljnet.dk/flash/db.asp" target="_blank">E-handel</a><br><br>
<a href="http://www.iceb.ljnet.dk/flash/se.asp" target="_blank">Forum</a><br><br>
<a href="http://www.iceb.ljnet.dk/flash/ustat.asp" target="_blank">Min side</a><br><br>
<a href="http://www.iceb.ljnet.dk/flash/photo_click.html" target="_blank">Gratis sektion</a><br><br>
<b>Generelle funktioener</b><br><br>
<a href="http://www.iceb.ljnet.dk/flash/mail.html" target="_blank">Anbefal Heilpraktikken</a><br><br>
<a href="http://www.iceb.ljnet.dk/flash/til.asp" target="_blank">Registrer ny bruger</a><br><br>
<a href="http://www.iceb.ljnet.dk/flash/kont.html" target="_blank">Kontakt</a><br><br><br><br>

<a href="http://www.iceb.ljnet.dk/flash/predokument.asp" target="_blank">Log ud</a><br>


</body>
</html>

<% response.write request.cookies("forumData")("brugerID")%>
Avatar billede iceb1977 Nybegynder
26. maj 2002 - 21:48 #3
jeg har også prøvet at få andre til at logge ind som ikke har

min cookie..... så FÅR de nemlig 48 udskrevet som jeg også gerne skulle hvordan kan det være ?
Avatar billede tmceu Praktikant
26. maj 2002 - 22:14 #4
Jeg orker ikke lige at gå hele din kode igennem, men jeg kan se at du på et tidspunkt laver Response.Redirect og det kan være problemet. Det er almindelig kendt, at en cookie ikke altid bliver opdateret korrekt, når der laves en redirect. Dette skyldes at response.redirect modificerer i HTTP headers.
Avatar billede iceb1977 Nybegynder
26. maj 2002 - 22:37 #5
ok ....

jeg har lige slettet min 49 id cookie og skrevet en 48 id ccokie

men når jeg udskriver cookien til skærmen skriver den statig 49

så kiggede jeg i min nye cookie og der står der 48 som der skal og

ikke 49 så hvorfor skriver den 49 på skærmen når cookien er slettet?
Avatar billede tmceu Praktikant
26. maj 2002 - 22:44 #6
Måske er der gået kuk i (alle) de flytninger du laver af ID'en mellem cookie'en og sessions variablen.
Avatar billede iceb1977 Nybegynder
26. maj 2002 - 22:49 #7
hm nu restartede jeg og nu er min 48 cookie der som den skal være....
Avatar billede iceb1977 Nybegynder
26. maj 2002 - 22:55 #8
så nu kan jeg også overskrive......

men jeg vil stadig gerne have at den skriver en

cookie når man logger ind jo og dermed vil jeg ikke

have den checkbox....

hvordan kan jeg så lave det om ?

har lavet lidt om på koden ....

formular.asp


<%

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
  ' Databaseforbindelse - husk at angive sti til din database
  Set Conn = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & Server.MapPath("hp.mdb")
  Conn.Open DSN
  Set rs = Server.CreateObject("ADODB.RecordSet")
  username = replace(Request.Form("username"),"'","")
  password = replace(Request.Form("password"),"'","")
  strSQL= "SELECT * FROM medlemmer WHERE (brugernavn= '" & username & "' AND kode='" & password & "');"
  Set rs = Conn.Execute (strSQL)

if not rs.EOF then
    session("loginOK") = "naturligvis"
    session("loginMemberID") = rs("ID")
    response.cookies("forumData")("brugerID") = Session("loginMemberID")
    response.cookies("forumData").Expires = now + 365
    Conn.Close
    'Den side man skal til når man er logget ind
    Response.Redirect("dokument.asp")
  else
    session("loginOK") = ""
    session("loginMemberID") = ""

    Conn.Close
    'Den side man skal til når man er logget ind
    Response.Redirect("til.asp")

end if

 
else
    session("loginOK") = ""
    session("loginMemberID") = ""
    response.cookies("forumData")("brugerID") = ""
  end if
%>
<html>
<head></head>
<body>
<center><p>Velkommen til denne site login her:</p>
<table border="1">
<form method="post" action="formular.asp">
  <tr><td>Brugernavn:</td><td><input name="username"></td></tr>
  <tr><td>Password:</td><td><input type="password" name="password"></td></tr>
  <tr><td colspan="2" align="center"><input type="submit" value="Login" name="Action">
<input type=checkbox name=huskmig value=ja>
</td></tr>
</form></table></center>
</body>
</html>
Avatar billede iceb1977 Nybegynder
26. maj 2002 - 23:18 #9
nå jeg har fundet ud af jeg kan bruge hidden

i stedet for checkbox....

hvordan kan jeg redirecte fra min hovedside til

medlemsside HVIS der findes en medlems cookie på

brugerens pc ?

Her er koden til hovedsiden...

predokument.asp

<%
' Databaseforbindelse - husk at angive sti til din database
  Set Conn = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & Server.MapPath("/db/hp.mdb")
  Conn.Open DSN
  Set rs = Server.CreateObject("ADODB.RecordSet")

if Session("loginOK") = "natulivis" then
else
  if request.cookies("forumData") <> "" then
    session("loginMemberID") = request.cookies("forumData")("brugerID")
    strSQL = "SELECT * FROM medlemmer WHERE ID = " & session("loginMemberID")
    set rs = Conn.Execute(strSQL)
response.write rs("ID")     
if NOT rs.EOF then
      session("loginOK") = "naturligvis"
    else
      session("loginMemberID") = ""
    end if
  else
    response.redirect("formular.asp")
  end if
end if

response.write request.cookies("forumData")("brugerID")



Conn.Close
%>


<html>
<title>tid og dato</title>
<head>
</head>

<body bgcolor="#999966" text="#000000" link="#000000" vlink="#000000" alink="#FFFFFF">


<h1>Dette er forsiden</h1><br><br>

<%

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
  ' Databaseforbindelse - husk at angive sti til din database
  Set Conn = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & Server.MapPath("hp.mdb")
  Conn.Open DSN
  Set rs = Server.CreateObject("ADODB.RecordSet")
  username = replace(Request.Form("username"),"'","")
  password = replace(Request.Form("password"),"'","")
  strSQL= "SELECT * FROM medlemmer WHERE (brugernavn= '" & username & "' AND kode='" & password & "');"
  Set rs = Conn.Execute (strSQL)

if not rs.EOF then
    session("loginOK") = "naturligvis"
    session("loginMemberID") = rs("ID")
    response.cookies("forumData")("brugerID") = Session("loginMemberID")
    response.cookies("forumData").Expires = now + 365
    Conn.Close
    'Den side man skal til når man er logget ind
    Response.Redirect("dokument.asp")
  else
    session("loginOK") = ""
    session("loginMemberID") = ""

    Conn.Close
    'Den side man skal til når man er logget ind
    Response.Redirect("til.asp")

end if

 
else
    session("loginOK") = ""
    session("loginMemberID") = ""
    response.cookies("forumData")("brugerID") = ""
  end if
%>
<html>
<head></head>
<body>
<p>Velkommen til denne site login her:</p>
<table border="1">
<form method="post" action="formular.asp">
  <tr><td>Brugernavn:</td><td><input name="username"></td></tr>
  <tr><td>Password:</td><td><input type="password" name="password"></td></tr>
  <tr><td colspan="2" align="center"><input type="submit" value="Login" name="Action">
<input type=hidden name=huskmig value=ja>
</td></tr>
</form></table><br><br><br><br>

<a href="http://www.iceb.ljnet.dk/flash/mail.html" target="_blank">Anbefel Heilpraktikken</a><br><br>

<a href="http://www.iceb.ljnet.dk/flash/kont.html" target="_blank">Kontakt</a><br>



</body>
</html>
Avatar billede iceb1977 Nybegynder
27. maj 2002 - 22:02 #10
nå intet svar....
Avatar billede tmceu Praktikant
27. maj 2002 - 22:18 #11
Jeg synes du blev hjulpet ret godt på vej og jeg håber du får løst det sidste også. Det er min overbevisning, at du vil få bedre hjælp herinde, hvis du ikke bare poster en masse "uoverskuelig" kode, men bruger lidt mere tid på at formulere problemet.

Dette handler ikke om point eller noget som helst, men er ment som et godt råd. Mange herinde, incl. undertegnede, orker ikke at læse x antal liners kode igennem for at finde ud af hvad problemet er :-)
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