Avatar billede lose2life Nybegynder
28. januar 2007 - 18:08 Der er 16 kommentarer og
1 løsning

Slet Cookie

Jeg er ved at lave et login system. Men en ting der driller, som har drillet før, er at logge ud igen.
Systemet er baseret på cookies.

Logind.php :
<?
setcookie ("cok_bruger", $_GET['bruger'], time()+60*60*24*365*2);
setcookie ("cok_kodeord", $_GET['kodeord'], time()+60*60*24*365*2);
echo ("<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;url=index.php\">");
?>

logud.php :
<?
setcookie ("cok_bruger", "loggetud", time()-3600);
setcookie ("cok_kodeord", "loggetud", time()-3600);
echo ("<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;url=index.php\">");
?>

Men det virker bare ikke! Efter man har trykket på "log ud" er man stadig logget ind, og cookie's har stadig samme information.
Jeg har prøvet at ændre tiden til endnu mere -, og til +0 uden resultat.

Hva kan man gøre?
Avatar billede michaeltryl Seniormester
28. januar 2007 - 18:34 #1
jeg kender ikke meget til cookies, men fandt ud af, da jeg lavede et autologin til min side, at det kun virkede hvis jeg slettede cookien på samme side som den er oprettet.
Avatar billede dragothica Nybegynder
28. januar 2007 - 19:01 #2
echo ("<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;url=index.php\">"); == header("location: index.php");

60*60*24*365*2 = 63072000 - 3600 = 63068400 - Dette skal skal være <= 0... Man kan sagtens slette cookies på andre sider, end de er oprettet.
Avatar billede lose2life Nybegynder
28. januar 2007 - 19:24 #3
dvs hvis jeg ændrer logud til 60*60*24*365*20 f.eks. så burde det virke? Prøver lige..
Avatar billede lose2life Nybegynder
28. januar 2007 - 19:25 #4
virker stadig ik..
Avatar billede showsource Seniormester
29. januar 2007 - 00:10 #5
Sæt en path på! ( + sæt en cookie med samme navn !!! )
setcookie ("cok_bruger", $_GET['bruger'], (time()+60*60*24*365*2), "/");

setcookie ("cok_bruger", $_GET['bruger'], (time()-3600)), "/");
Avatar billede lose2life Nybegynder
29. januar 2007 - 10:01 #6
path er det den sidste "/". prøver det når jeg kommer hjem..
Avatar billede lose2life Nybegynder
29. januar 2007 - 12:00 #7
hov ville ha formuleret det som et spørgsmål. "path er den sidste "/", ik?"
Avatar billede showsource Seniormester
29. januar 2007 - 12:54 #8
Nåh, mig som var tåget!

Det med path, er mest fordi der har været nogle spm. om cookie der ikke har virket, men når path blev sat, virkede det. ( firefox, mener jeg )

Og for at slette en cookie skal den jo IKKE ha' nogen værdi, samt en tid som er datid

Sæt cookie:
setcookie ("cok_bruger", $_GET['bruger'], (time()+60*60*24*365*2), "/");

Slet cookie
setcookie ("cok_bruger", "", (time()+60*60*24*365*2), "/");

Og der må ikke være noget output til brugeren før cookien sættes/slettes.
( Kan dog omgås med ob_start() )
Avatar billede lose2life Nybegynder
29. januar 2007 - 16:14 #9
nu når du siger at når man sletter den ska den ha datid, mener du vel os

setcookie ("cok_bruger", "", (time()-60*60*24*365*2), "/");

i stedet for + time ik? Prøver nu.,
Avatar billede showsource Seniormester
29. januar 2007 - 17:12 #10
Ja, selvf........ ( ren tåge )
Avatar billede masik7 Nybegynder
29. januar 2007 - 17:18 #11
Kan man ikke slette den ved hjælp af unset:
unset($_COOKIE["cok_bruger"]);

?
Avatar billede lose2life Nybegynder
30. januar 2007 - 19:20 #12
setcookie ("cok_bruger", "", (time()-60*60*24*365*2), "/"); <- virker ikke

Den fjerner stadig ik cookien, så man er stadig logget ind når man trykker log ud :(
Avatar billede showsource Seniormester
31. januar 2007 - 07:37 #13
Måske fordi serveren kører med register_globals on, og du bruger en var som hedder $cok_bruger ???
Men du kan jo prøve dette, det burde virke:

<?php
if(isset($_GET["saet_cookie"])) {

    if($_GET["saet_cookie"] == "ja") {
    setcookie("navn", "cookienavn", time()+3600, "/");
    }else{
    setcookie("navn", "", time()-3600, "/");
    }

header("Location:". $_SERVER["PHP_SELF"] ."");
exit;
}

if(isset($_COOKIE["navn"])) {

echo "Cookie navn er sat, ". $_COOKIE["navn"] ." - <a href=\"". $_SERVER["PHP_SELF"] ."?saet_cookie=nej\">Slet cookien</a>";

}else{

echo "Cookie navn er ikke sat, - <a href=\"". $_SERVER["PHP_SELF"] ."?saet_cookie=ja\">Sæt cookien</a>";
}

?>
Avatar billede lose2life Nybegynder
31. januar 2007 - 19:14 #14
well, selvom serveren kører med globals on, burde jeg jo godt ku bruge cok_bruger som string navn, så længe jeg bruger $_COOKIE osv. Men prøver lige det andet og vender tilbage :)
Avatar billede lose2life Nybegynder
02. februar 2007 - 20:41 #15
så virker det sq!! kanon! tak for hjælpen. lægger du et svar showsource?
Avatar billede showsource Seniormester
02. februar 2007 - 21:04 #16
"selvom serveren kører med globals on, burde jeg jo godt ku bruge cok_bruger som string navn, så længe jeg bruger $_COOKIE"

NIX!!!!!

GET, POST, COOKIE, SESSION, (ENV ?) hvis du har en af værdierne defineret, (sat), og register_globals er on, så finder dit script "næste" streng defineret med samme navn.

Og jeg vil ikke ha' point, ellers mange tak! :O)
Avatar billede lose2life Nybegynder
03. februar 2007 - 12:39 #17
cool nok. men tak for hjællpen :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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