[php]Cookie wil maar niet weg

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MRED
  • Registratie: Maart 2000
  • Laatst online: 22-12-2020

MRED

Carpe diem...

Topicstarter
Ok, ik begrijp er dus helemaal niet meer van. Met de volgende code plaats ik een cookie:


code:
1
setcookie("website", $useri, time()+3600);


Nu doe ik het volgende om het cookie te 'verwijderen'

code:
1
setcookie("website", $unaam, time()-3600);


Ik gebruik het cookie om te controleren of iemand wel of niet ingelogd is. Bovenstaande code vind ik terug in de handleiding van php.net en ook in vrijwel alle antwoorden op deze vraag hier op GoT.

Echter wanneer ik de code uitvoer om het cookie te verwijderen gebeurd er dus helemaal niets in mijn map Cookies bijft het in eerste instantie geplaatste cookie gewoon bestaan en veranderd er niets.

Wie heeft de oplossing.

Mijn weblog


Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 00:18
Je kan ook

setcookie("website", '', time()-35000);
ofzo doen. Dan is de var sowieso leeg.

|>


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Niet toevallig output boven de code staan?

En probeer eens
PHP:
1
2
3
<?
  print_r($_COOKIE);
?>

om al je cookies te zien
en
PHP:
1
2
3
<?
  unset($_COOKIE["website"]);
?>

om je cookie leeg te maken

[ Voor 14% gewijzigd door Megamind op 24-04-2005 22:08 ]


Acties:
  • 0 Henk 'm!

  • MRED
  • Registratie: Maart 2000
  • Laatst online: 22-12-2020

MRED

Carpe diem...

Topicstarter
Megamind schreef op zondag 24 april 2005 @ 22:08:
Niet toevallig output boven de code staan?

En probeer eens
PHP:
1
2
3
<?
  print_r($_COOKIE);
?>

om al je cookies te zien
en
PHP:
1
2
3
<?
  unset($_COOKIE["website"]);
?>

om je cookie leeg te maken
Heb het net even geprobeerd met unset. Het werkt niet het cookie blijft aanwezig.

Heb nu onderstaande totale code om het cookie te verwijderen:

code:
1
2
3
4
5
6
7
8
9
10
11
<?php
    If ($loguit == "ja")
    {
        
    $unaam = $_COOKIE["website"];
    unset($_COOKIE["website"]); 
    
    echo "je bent uitgelogd $unaam";
    exit;
    }
?>

Mijn weblog


Acties:
  • 0 Henk 'm!

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 16:30

TheDane

1.618

Cookies must be deleted with the same parameters as they were set with. If the value argument is an empty string, or FALSE, and all other arguments match a previous call to setcookie, then the cookie with the specified name will be deleted from the remote client.
van php.net

Dus $unaam moet leeg zijn, of false.

Acties:
  • 0 Henk 'm!

  • MRED
  • Registratie: Maart 2000
  • Laatst online: 22-12-2020

MRED

Carpe diem...

Topicstarter
Ben nog even aan het puzzelen geweest. Wanneer ik de code in het bestand inlog.php integreer met de volgende regels werkt het eea dus niet.

code:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
    If ($loguit == "ja")
    {
        
    $unaam = $_COOKIE["just4fun"];
    
    setcookie("just4fun", "", time()-3600);
    echo "je bent uitgelogd $unaam";

    exit;
    }
?>


ik start deze code op met deze url: http://192.168.2.100/php/login.php?loguit=ja

Wanneer ik dezelfde codes nu in een appart bestand zet (bv test.php) en ik roep dit aan werkt het wel 8)7 .

Mijn weblog


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 09:19
Erm, je hebt register_globals toch wel aanstaan hoop ik danvoor je? Anders moet je $_GET['loguit'] gebruiken ipv $loguit.

[edit]
Ik hoop het eigenlijk niet, want zonder register_globals wordt je code meestal een stuk veiliger. Waarom is wel te vinden in de FAQ geloof ik.

[ Voor 42% gewijzigd door Mithrandir op 24-04-2005 22:54 ]

Verbouwing


Acties:
  • 0 Henk 'm!

  • MRED
  • Registratie: Maart 2000
  • Laatst online: 22-12-2020

MRED

Carpe diem...

Topicstarter
Mithrandir schreef op zondag 24 april 2005 @ 22:53:
Erm, je hebt register_globals toch wel aanstaan hoop ik danvoor je? Anders moet je $_GET['loguit'] gebruiken ipv $loguit.

[edit]
Ik hoop het eigenlijk niet, want zonder register_globals wordt je code meestal een stuk veiliger. Waarom is wel te vinden in de FAQ geloof ik.
De register_globals staan aan. Dat dit eigenlijkniet super verstandig is weet ik, maar goed: De code wordt wel degelijk uitgevoerd. De meldingstekst "Je bent uitgelogd..." verschijnt namelijk wel.

Mijn weblog


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

MRED schreef op zondag 24 april 2005 @ 23:10:
De register_globals staan aan. Dat dit eigenlijkniet super verstandig is weet ik, maar goed: De code wordt wel degelijk uitgevoerd. De meldingstekst "Je bent uitgelogd..." verschijnt namelijk wel.
Niet alleen is het onverstandig, het vergroot ook nog eens de kans op fouten in je script. Wat nou als je per ongeluk de variabelenaam van je cookie hergebruikt? Met register globals op on kun je dan nogal vreemde effecten tegemoet zien. Ik kan niet anders zeggen dan: zet register globals op off, en programmeer op de nette manier, dan heb je veel minder kans op fouten. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Zet eens bovenaan:

PHP:
1
  error_reporting(E_ALL);

Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 00:18
Megamind schreef op maandag 25 april 2005 @ 07:12:
Zet eens bovenaan:

PHP:
1
  error_reporting(E_ALL);
that for a start, maar kijk nou eens naar mijn post. Waarschijnlijk los je het daarmee op.

|>


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Simon schreef op maandag 25 april 2005 @ 07:45:
[...]


that for a start, maar kijk nou eens naar mijn post. Waarschijnlijk los je het daarmee op.
Ligt eraan, ik denk dat er nog output gegeven wordt vóór de setcookie. Dan werkt het niet he

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Simon schreef op maandag 25 april 2005 @ 07:45:
that for a start, maar kijk nou eens naar mijn post. Waarschijnlijk los je het daarmee op.
Heeft ie al geprobeerd. ;)
Megamind schreef op maandag 25 april 2005 @ 07:54:
Ligt eraan, ik denk dat er nog output gegeven wordt vóór de setcookie. Dan werkt het niet he
Als er output voor staat, dan zou dat een warning opwerpen, en die staan standaard al aan, dus dat lijkt me onwaarschijnlijk. Hoe dan ook, het kan natuurlijk nooit kwaad om error_reporting op E_ALL te zetten (sterker nog, het is gewoon best practice tijdens het scripten). :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Glaanie
  • Registratie: Juni 2002
  • Laatst online: 16:38

Glaanie

Medewerker Product Content

All your spec are belong to us

Wat ik lees van de quote van The Dane:
Cookies must be deleted with the same parameters as they were set with. If the value argument is an empty string, or FALSE, and all other arguments match a previous call to setcookie, then the cookie with the specified name will be deleted from the remote client
Is dat als je een cookie set met setcookie("cookieNaam", "Inhoud", time()+3600), je de cookie moet verwijderen door dezelfde parameters te gebruiken, maar dan ZONDER de value, dus setcookie("cookienaam", "", time()+3600). Dus niet de tijd in het verleden zetten, gewoon de value string leeg laten.
Ik heb geen PHP omgeving op deze PC staan, dus kan het niet testen :p

[ Voor 10% gewijzigd door Glaanie op 25-04-2005 12:33 . Reden: vergeten te zeggen dat ik niet kan testen... ]


Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
setcookie("website", $useri, time()+3600);

code:
1
setcookie("website", $unaam, time()-3600);


.
Ligt het aan mijn of zijn dat 2 verschillende cookievariabelen... zou het niet
code:
1
setcookie("website", $useri, time()+3600);


en

code:
1
setcookie("website", $useri, time()-3600);


moeten zijn?
Pagina: 1