[PHP] Cookies expiren niet

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

Ik heb een vreemd cookieprobleem; ik krijg geen cookies verwijderd.

Ik set m'n cookie via

Code: Selecteer alles

setcookie("username",$username,time()+60*60*24*365);
Die oproepen via $_COOKIES['username'] lukt overigens niet op de volgende pagina, enkel via $HTTP_COOKIE_VARS['username'].
Cookie verwijderen doe ik via

Code: Selecteer alles

setcookie ("username", "", time - 3600);
Maar ... ze blijven gewoon bestaan.

Enig idee?
Config: Apache/2.0.53 (Win32) mod_ssl/2.0.53 OpenSSL/0.9.7f PHP/5.0.4 Server at localhost Port 80
KK
Elite Poster
Elite Poster
Berichten: 909
Lid geworden op: 02 okt 2004, 04:38

meon schreef:Cookie verwijderen doe ik via

Code: Selecteer alles

setcookie ("username", "", time - 3600);
Maar ... ze blijven gewoon bestaan.
moet het niet 'time() -3600' zijn? Met de haakjes erbij dus.
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

Godverde....

Oké, dat zal het wel zijn zeker?
Maar ik heb net uit de browser m'n cookies gecleared, maar nu krijg ik ze weer niet meer gezet :'(

//edit: oké, ik moet dus het pad mee opgeven, de cookies worden namelijk in een subpad gezet en gelden dus enkel vanaf daar.

Maar dan nog steeds krijg ik ze, ook met time() niet gecleared :(
wem
Premium Member
Premium Member
Berichten: 666
Lid geworden op: 24 mei 2004, 14:48

cookies zijn client-side, dus het zal misschien aan je browser liggen dat de cookies niet gecleared worden, of heb je getest met verschillende browsers? Anders ook eens zien wat er specifiek in de headers wel of niet wordt meegestuurd...
meon schreef:Die oproepen via $_COOKIES['username'] lukt overigens niet op de volgende pagina, enkel via $HTTP_COOKIE_VARS['username'].
$_COOKIES is een autoglobal, staan dezen dus niet af in de config-file ofzo?
ik gebruik trouwens altijd $_REQUEST['coockienaam'] voor coockies (alsook post en get - variabelen, zo is het makkelijk te zien welke door de gebruiker zijn ingesteld en dus mogelijk iets kwaadaardig bevatten ... ;-) )
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

Werklaptop, dus een "uni-image 2.03-standaardinstallatie". Da's Windows 2000 professional + IE6.
Autoglobals staan wel degelijk aan, ik gebruik immers ook $_SESSION en $_GET en $_POST en $_ENV en $_SERVER ;)
Vrij vervelend probleem eigenlijk. Ik snap niet dat een cookie wissen zo moeilijk kan zijn :cry:
crapiecorn
Elite Poster
Elite Poster
Berichten: 2187
Lid geworden op: 01 feb 2003, 11:58
Uitgedeelde bedankjes: 44 keer
Bedankt: 12 keer

Dus als ik het goed snap moeten cookies na een uur verlopen ?

Code: Selecteer alles

<?php setcookie("username", time()+3600, "/"); ?> 
?
wem
Premium Member
Premium Member
Berichten: 666
Lid geworden op: 24 mei 2004, 14:48

crapiecorn schreef:Dus als ik het goed snap moeten cookies na een uur verlopen ?

Code: Selecteer alles

<?php setcookie("username", time()+3600, "/"); ?> 
?
euhm, er staat en - bij de 3600, geen + ;-)
dus de vervaldatum is in het verleden, dus wordt de coockie normaal gezien gewoon verwijdert, omdat deze vervallen is.
volgende voorbeeldje komt van php-site:

Code: Selecteer alles

setcookie ("TestCookie", "", time() - 3600);
Ik maak wel juist de bedenking dat time() de tijd van de server neemt, maar dat de evaluatie van de tijd voor het al dan niet verwijderen client-side gebeurd. Dus als server en client een andere tijd hebben ingesteld (bv. server in de USA ofzo) kan dit wel voor problemen zorgen lijkt me.

Dus dus er misschien ipv -3600 er -86400 van maken (=24 uur)

Ik heb er in ieder geval nog geen problemen mee gehad om coockies te verwijderen ...
crapiecorn
Elite Poster
Elite Poster
Berichten: 2187
Lid geworden op: 01 feb 2003, 11:58
Uitgedeelde bedankjes: 44 keer
Bedankt: 12 keer

Aja,zie het nu pas. Maar dat tijdsverschil mag geen probleem zijn aangezien hij het test op zijn eigen server.

edit : ook nog eens uitgetest met

PHP 4.3.10 (cli) (built: Dec 21 2004 15:11:54)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

geen probleem.
Gebruikersavatar
Blue-Sky
Erelid
Erelid
Berichten: 8554
Lid geworden op: 23 feb 2003, 20:42
Locatie: België - Limburg

@meon,
'k Was wat aan het zoeken geweest op de Site van MS, dan toch de cookiesWindows2000 gevonden. (misschien kan het helpen?)
Afbeelding
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

Blue, je komt in de buurt, alleen zit je bij het verkeerde platform ;)

Jij hebt IIS (Internet Information Services) en ASP opgediept, ik heb Apache met PHP nodig ;)

Maar goed, ik denk dat het de browser zal zijn, wat ik vreemd vind.
Ik krijg de cookie namelijk zonder problemen gezet, maar verwijderen? En je zou net zeggen dat dat net makkelijker gaat dan andersom (wegens privacy bvb).
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

Config je IE zodat hij moet prompten voor het accepten van je cookie... zo kan je meteen zien wat je binnen krijgt van je server, en of dit al of niet correct is.
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

r2504 schreef:Config je IE zodat hij moet prompten voor het accepten van je cookie... zo kan je meteen zien wat je binnen krijgt van je server, en of dit al of niet correct is.
Goed idee, alleen .. werkt het niet :) Misschien omdat het localhost is en bijgevolg in de zone "lokaal intranet" terecht komt?
Het probleem is er nog steeds dus. Vreemd dat het zo moeilijk kan zijn...
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

meon schreef:Goed idee, alleen .. werkt het niet :) Misschien omdat het localhost is en bijgevolg in de zone "lokaal intranet" terecht komt?
Het probleem is er nog steeds dus. Vreemd dat het zo moeilijk kan zijn...
Grof geschut... een netwerk sniffer dan :lol:
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

In plaats in m'n big code te werken eens een testje opgezet:

Code: Selecteer alles

<? 
if (isset($_GET['do'])) {
	if ($_GET['do'] == "set") {
		setcookie("debug",date("H:i:s d M Y",time()),time()+60*60*24*365,"/");
	} else if ($_GET['do'] == "expire") {
		setcookie("debug","",time-100000,"/");
	}
}
?>
Cookie:<br>
<pre><? print_r($_COOKIE); ?></pre><br>
<a href="<?= $_SERVER['PHP_SELF'] ?>">Reload</a> | <a href="<?= $_SERVER['PHP_SELF'] ?>?do=set">Setcookie</a> | <a href="<?= $_SERVER['PHP_SELF'] ?>?do=expire">Expire cookie</a>
En hier werkt het dus wél. Het is dus niet de code op zich, maar een combinatie van andere dingen :(
Het unsetten is in m'n logout.php ongeveer het enige dat ik doe, dus ik vind het vreemd dat dat niet werkt :cry:
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

Oké, ... heel vreemd:D

Ik had login.php, en daar deed ik dus (in metacode):

Code: Selecteer alles

if querystring = logout {
  unset cookies
  unset session
  die(location)
}

//loginsequence
Blijkbaar doet die die() niet veel, de loginsequence doorliep die precies gewoon weer. Het is opgelost door de rest van de code in de 'else' te zetten ...
Oef, gevonden ... Ik heb er maar 4 dagen over gedaan :oops:
Gebruikersavatar
Blue-Sky
Erelid
Erelid
Berichten: 8554
Lid geworden op: 23 feb 2003, 20:42
Locatie: België - Limburg

meon schreef:Het is opgelost door de rest van de code in de 'else' te zetten ...
Oef, gevonden ... Ik heb er maar 4 dagen over gedaan :oops:
Maakt niet uit op 'n paar dagen, je hebt het toch weer opgelost..."Good work" :thumbs:
Afbeelding
Plaats reactie

Terug naar “Development”