Avatar billede iceb1977 Nybegynder
29. maj 2002 - 19:45 Der er 38 kommentarer og
1 løsning

Cookies problem til log ud funktion ?????

Hejsa

Hver gang man går ind på min side bliver der

tjekket efter en cookie og hvis den er der

bliver man logget automatisk ind...

Hvis den ikke er der kommer man ikke videre...

Men hvordan laver jeg en log ud funktion

der lukker alle sessions og sletter alle

cookies?

Avatar billede medions Nybegynder
29. maj 2002 - 19:46 #1
Sessions.Abandon

//>Rune
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 19:48 #2
ja den har jeg også .....

men det sletter ikke cookie ?

her er min kode:

<%
Session.Abandon()

response.cookies("forumData").Expires = now()




%>
Avatar billede medions Nybegynder
29. maj 2002 - 19:51 #3
Response.Cookies("navn").Expires = now()
skulle slette cookies
Session.Abaodon
skulle sletet alle sessions!

hvis ikke dette sker, så er det noget andet der er galt!

//>Rune
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 20:05 #4
ja når jeg kører koden slettes cookien ikke ....
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 20:31 #5
nå jeg har fundet ud af fejlen må ligge her ...

jeg skal jo ikke bruge sessions så hvordan fjerner

jeg dem fra min kode ?

<%

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 & "');"
  Set rs = Conn.Execute (strSQL)
if request.form("username")="" then
response.redirect "formular.asp"
end if
if request.form("password")="" then
response.redirect "formular.asp"
end if
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="predokument.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 medions Nybegynder
29. maj 2002 - 20:33 #6
Hvorfor er det lige du ikke vil bruge sessions?

//>Rune
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 20:33 #7
nej jeg vil ikke bruge sessions .....

hvordan tager jeg dem ud ?

s
Avatar billede medions Nybegynder
29. maj 2002 - 20:35 #8
Well, sletter alt hvad der har med Sessions at gøre!!!

Hvis du har et loginsystem, så er du Nødt til at bruge sessions!!

//>Rune
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 20:40 #9
skal jeg bruge sessions ?

Kan jeg ikke bare sige at der tjekkes efter

cookie og hvis der ikke er cookies så læs siden

videre ....

også når man logger ind check om det indtastede eksisterer

i databasen og hvis det gør så skriv medlems id*et til cookien

og log ind ?

Hvorfor ska jeg bruge sessions ?
Avatar billede medions Nybegynder
29. maj 2002 - 20:44 #10
Nej, for det er ikke alle mennesker der vil tillade browsere at lægge cookies ind på deres maskiner! -og sessions tillader alle (man kan ikke fra vælge det!)

Cookies, kan man bruge i det tilfælde at man vil ha' den til at kunne huske ens password og brugernavn til en anden gang man kommer ind på siden, eller automatisk logge en ind!

//>Rune
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 20:48 #11
nå ok men hvordan laver jeg det kun med cookies ?
Avatar billede tmceu Praktikant
29. maj 2002 - 21:17 #12
Giver medions ret i, at cookies måske ikke er det bedste valg, men det er ikke så meget gr. cookie eller ej spørgsmålet. For det kræver også cookies at anvende sessions, da der sendes en sessionscookie med hver request/response.

Min bekymring er mere, at alle værdier i din cookie bliver sendt frem og tilbage mellem serveren og browseren. Det betyder at al kommunikation potentielt bliver meget langsom.

Men hvis du insisterer:

Du erstatter eks. session("loginMemberID")

request.cookies("forumData")("loginMemberID")

Dvs. at Session(variabel) bliver til request.cookies(cookienavn)(variabel)

Og naturligvis response i stedet for request, når du vil skrive i den.
Avatar billede tmceu Praktikant
29. maj 2002 - 21:19 #13
Er det forresten ikke 3. spørgsmål vedr. dette vi mødes i :-) Den loginfunktion giver dig lidt flere problemer end du har ønsket :-)
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 21:46 #14
hm den vil ikke finde cookien i den her kode som jeg har fået lavet

hvordan kan det være ?

og jo det er 3gang ssss det er til min eksamen jo og ikke valgfrit s

KODE:

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 request.cookies("forumData")("brugerID")="" then
//response.redirect "predokument.asp"
//else



strSQL="SELECT * FROM medlemmer WHERE id=" & request.cookies("forumData")("brugerID")
response.write strSQL
response.end
Set rs = Conn.Execute(strSQL)


Do

  ' Udskriv værdien af kolonnen Fornavn
response.write "Hej "& rs("brugernavn")&" Status: Du er logget ind"

vid=1
vid=rs("taeller")+vid



strSQL = "update medlemmer set taeller="& vid &" WHERE id=" & request.cookies("forumData")("brugerID")

Conn.Execute(strSQL)



  ' Gå til næste Record i rs
  rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop While Not rs.EOF
Conn.Close
//end if
%>





<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>Velkommen <br>


<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">Din 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/logud.asp">Log ud</a><br>


</body>
</html>
Avatar billede tmceu Praktikant
29. maj 2002 - 21:52 #15
Jeg skal lige vide om du vil henvise os til de linier, du mener der er problemet eller om du forsøger at kommentere kode ud med JavaScript syntaks i et VBScript ?

//if request.cookies("forumData")("brugerID")="" then
//response.redirect "predokument.asp"
//else

Måske skulle du til at debugge og bruge response.write og response.end

Eksempelvis i toppen af din kode:

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

Se om den har nogen værdi og stop scriptet. Har den det, fint flyt din response.end længere ned i scriptet og se hvor langt den kommer. Er der ikke nogen værdi i din cookie og du mener der bør være det, må du finde den kode der skriver din cookie.

Det er en smule svært at "remote debugge" herfra, i en kode under konstant forandring. Håber du forstår :-)
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 21:59 #16
http://www.iceb.ljnet.dk/flash/predokument.asp

gå lige herind og test lidt ....

for jeg tror jeg min pc gemmer cookien under

et forkert navn ...

prøv at logge ind og søg på ljnet under

søg og under c windows cookies

og fortæl mig hvad den hedder ?

user= ice

pass= ic
Avatar billede medions Nybegynder
29. maj 2002 - 22:01 #17
iceb1977> Er du fra Kolding?

//>Rune
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 22:03 #18
nemlig .....

hvilke resultater fik i ?
Avatar billede medions Nybegynder
29. maj 2002 - 22:05 #19
iceb1977> Hvor i Kolding? -jeg er oxo fra Kolding!

//>Rune
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 22:14 #20
jeg bor i sydbyen og kommer godt nok ikke

herfra .....

har i prøvet linket ?
Avatar billede medions Nybegynder
29. maj 2002 - 22:19 #21
hvd mener du med at du ikke kommer her fra?

Sydbyen? -Nede i byen eller hvad? Hvad hedder du?

//>Rune
Avatar billede tmceu Praktikant
29. maj 2002 - 22:31 #22
Hvad mener du med "gemmer under et forkert navn" ?

Cookien bliver ikke gemt under navnet "forumdata", hvis du regnede med det. Den bliver gemt under et navn, der består af Windows brugeren og webadressen. Her er starten af indholdet i min cookie:

forumData
brugerID=48
www.iceb.ljnet.dk
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 22:53 #23
ja det ved jeg nemlig godt ....

winbrugernavn@iceb.ljnet.dk

sådan her ....

men hvad nu hvis den bliver gemt som

winbrugernavn@iceb.ljnet.dk(1)

og

winbrugernavn@iceb.ljnet.dk(2)

kan det ikke gøre der kommer fejl .....

?
Avatar billede tmceu Praktikant
29. maj 2002 - 23:01 #24
Nej, det bør ikke betyde noget. Faktisk hedder den også (1) hos mig. Har du prøvet mit forslag til debugging ?
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 23:04 #25
hmmmm ok nu har jeg lavet en logud funktion....

http://www.iceb.ljnet.dk/flash/predokument.asp

prøv den også prøv den her bagefter ....

http://www.iceb.ljnet.dk/flash/dokument.asp

ok?
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 23:18 #26
virker det ....

det virker ikke for mig nemlig jeg kan ikke

blive logget ud ....

<%

response.cookies("forumData").Expires = now()
response.redirect "predokument.asp"

%>

Dette ovenfor er koden
Avatar billede tmceu Praktikant
29. maj 2002 - 23:30 #27
I et af de andre spørgsmål, fortalte jeg dig at du ikke må sætte en cookie og lave en redirect i samme dokument. Du risikerer, som det tydligvis er tilfældet her, at din cookie ikke bliver opdateret.

Lav dette i stedet

<%

response.buffer = true

[din eksisterende kode]

response.cookies("forumData").Expires = dateadd("h", -1, now())

%>
<HTML>
<HEAD>
<META HTTP-EQUIV="refresh" CONTENT="1; url=predokument.asp">
</HEAD>
</HTML>

Dette sletter din cookie og laver en client-side redirect.
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 23:34 #28
ok nu forsvandt min cookie....

længe efter jeg har trykket på log af ... s

hmmm tror jeg skal ændre noget ja s
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 23:40 #29
ok fedt nok så virker det som det skal ....

hmm nu skal jeg så bare sætte denne kode som tjekker

om der er cookie og hvis der er læser videre og hvis

der ikke er redirecter til login siden .....

skal jeg gøre det i include filer og

skal jeg så requeste dem eller ?

Her er koden der tjekker om der er cookie....

dokument.asp

if request.cookies("forumData")("brugerID")="" then
response.redirect "predokument.asp"
else

ok?
Avatar billede tmceu Praktikant
29. maj 2002 - 23:46 #30
Du kan sagtens bruge request.cookie.... og response.redirect i samme script. Det er kun når du skriver en cookie, at du ikke må lave redirect.

Jeg ville lave en includefil, eks. CheckCookie.asp:

<%

if request.cookies("forumData")("brugerID")="" then response.redirect "predokument.asp"

%>

Og så inkludere denne fil øverst i alle dine scripts

<!-- #Include file="CheckCookie.asp" -->

Dermed sikrer du dig, at alle sider laver et check på cooki'en og hvis den ikke findes redirecter til en anden side, sandsynligvis din loginside.
Avatar billede iceb1977 Nybegynder
30. maj 2002 - 00:01 #31
nå skal jeg så tilføje et ekstra end if i bunden af

hver side ?
Avatar billede iceb1977 Nybegynder
30. maj 2002 - 00:03 #32
for jeg får jo expected end fejl
ik ?
Avatar billede tmceu Praktikant
30. maj 2002 - 00:18 #33
Nej, ikke når If ... Then ... Et eller andet er i én linie.

Der skal altså ikke tilføjes nogen end if
Avatar billede iceb1977 Nybegynder
30. maj 2002 - 00:47 #34
nå hvorfor skriver den så en fejl der hedder....

expected end

????
Avatar billede tmceu Praktikant
30. maj 2002 - 00:56 #35
Vis din kode og marker den linie den melder fejl i....
Avatar billede iceb1977 Nybegynder
30. maj 2002 - 01:04 #36
hm det er altså nemmere med bare at sætte

de 3 linier kode ind uden at bruge include ... så

det har jeg gjort ... og det ser ud til hver gang

jeg sætter include in i dokumenterne får jeg

expected end ....
Avatar billede tmceu Praktikant
30. maj 2002 - 01:09 #37
Du er vel opmærksom på, at din include skal stå uden for dine script tags ?

Eksempelvis:


<!-- #Include file="CheckCookie.asp" -->
<HTML>
....
<BODY>
<%

[en masse kode her]

%>
Avatar billede iceb1977 Nybegynder
30. maj 2002 - 08:50 #38
hmmmm nå tester lige .....
Avatar billede iceb1977 Nybegynder
30. maj 2002 - 09:36 #39
ah ok så virker det også ....

med> du kan jo prøve min icq hvis du vil ...s

28796776
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