Pagina 1 van 1

[PHP] Cookies expiren niet

Geplaatst: 20 mei 2005, 16:37
door meon
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

Re: [PHP] Cookies expiren niet

Geplaatst: 20 mei 2005, 16:42
door KK
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.

Geplaatst: 20 mei 2005, 16:46
door meon
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 :(

Re: [PHP] Cookies expiren niet

Geplaatst: 20 mei 2005, 17:54
door wem
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 ... ;-) )

Geplaatst: 20 mei 2005, 20:56
door meon
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:

Geplaatst: 21 mei 2005, 00:38
door crapiecorn
Dus als ik het goed snap moeten cookies na een uur verlopen ?

Code: Selecteer alles

<?php setcookie("username", time()+3600, "/"); ?> 
?

Geplaatst: 21 mei 2005, 10:32
door wem
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 ...

Geplaatst: 21 mei 2005, 13:00
door crapiecorn
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.

Geplaatst: 21 mei 2005, 21:52
door Blue-Sky
@meon,
'k Was wat aan het zoeken geweest op de Site van MS, dan toch de cookiesWindows2000 gevonden. (misschien kan het helpen?)

Geplaatst: 21 mei 2005, 21:57
door meon
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).

Geplaatst: 22 mei 2005, 15:37
door ubremoved_539
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.

Geplaatst: 23 mei 2005, 10:28
door meon
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...

Geplaatst: 23 mei 2005, 10:42
door ubremoved_539
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:

Geplaatst: 23 mei 2005, 10:56
door meon
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:

Geplaatst: 23 mei 2005, 11:03
door meon
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:

Geplaatst: 23 mei 2005, 11:41
door Blue-Sky
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: