Bekijk Volledige Versie : Cookies niet goed verwijderd
Nico Schuyt
17/03/05, 09:45
Ik heb een (slecht reproduceerbaar) probleem dat een site cookies niet goed
onthoudt of juist later weer met een waarde uit een verwijderde cookie naar
voren komt.
Het probleem doet zich voor op sommige PC's. Er lijkt geen verband te zijn
met besturingssysteem of instellingen in IE.
Cookie wordt gezet met:
setcookie ("C_c_debnr",$deb_nr,time()+10000000);
en verwijderd met:
setcookie ("C_c_debnr","",time()-100000000);
Ook andere varianten (bijv.: time()-10000000) werken niet goed.
Var $deb_nr is een tekenreeks als "X999999"
Iemand een idee waar dit mis kan gaan??
--
Nico
http://www.nicoschuyt.nl
Rene Pijlman
17/03/05, 11:05
Nico Schuyt:
>Cookie wordt gezet met:
> setcookie ("C_c_debnr",$deb_nr,time()+10000000);
Foutafhandeling!
"If [...] setcookie() will fail and return FALSE. If setcookie()
successfully runs, it will return TRUE."
>en verwijderd met:
>setcookie ("C_c_debnr","",time()-100000000);
Wat is de PHP manual toch slecht.
"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."
Echt, het staat er.
Waarom zet je expire niet gewoon op 0?
>Iemand een idee waar dit mis kan gaan??
"expire is compared to the client's time which can differ from server's
time."
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Nico Schuyt
17/03/05, 12:15
Rene Pijlman wrote:
> Nico Schuyt:
>> Cookie wordt gezet met:
>> setcookie ("C_c_debnr",$deb_nr,time()+10000000);
> Foutafhandeling!
> "If [...] setcookie() will fail and return FALSE. If setcookie()
> successfully runs, it will return TRUE."
>> en verwijderd met:
>> setcookie ("C_c_debnr","",time()-100000000);
> Wat is de PHP manual toch slecht.
> "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."
> Echt, het staat er.
> Waarom zet je expire niet gewoon op 0?
>> Iemand een idee waar dit mis kan gaan??
> "expire is compared to the client's time which can differ from
> server's time."
OK, ok, je boodschap is duidelijk :-)
Bedankt!!
--
Nico
http://www.nicoschuyt.nl
Nico Schuyt
17/03/05, 19:35
Rene Pijlman wrote:
> Nico Schuyt:
>> Cookie wordt gezet met:
>> setcookie ("C_c_debnr",$deb_nr,time()+10000000);
>> en verwijderd met:
>> setcookie ("C_c_debnr","",time()-100000000);
> Wat is de PHP manual toch slecht.
> "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."
> Echt, het staat er.
Toch blijft het vreemd. Ik heb op een gegeven moment die expiration time een
factor 10 verhoogd omdat die cookie het vertikte te verdwijnen en ik ook
dacht dat het iets met server time te maken had.
Als ik op mijn PC een cookie plaats met time()+10000000, laat die zich óók
probleemloos verwijderen met time()+100
Met identieke parameters blijft het probleem overigens bij een aantal
bezoekers bij de betreffende site.
> Waarom zet je expire niet gewoon op 0?
Als je bedoelt dat je met 0 een cookie een lange levensduur kunt geven kan
ik dat niet plaatsen. Als het om een cookie gaat die alleen tijdens de
sessie actief is, is de expire toch overbodig?
--
Nico
http://www.nicoschuyt.nl
Rene Pijlman
17/03/05, 21:35
Nico Schuyt:
>Toch blijft het vreemd. Ik heb op een gegeven moment die expiration time een
>factor 10 verhoogd omdat die cookie het vertikte te verdwijnen en ik ook
>dacht dat het iets met server time te maken had.
>Als ik op mijn PC een cookie plaats met time()+10000000, laat die zich óók
>probleemloos verwijderen met time()+100
>Met identieke parameters blijft het probleem overigens bij een aantal
>bezoekers bij de betreffende site.
Dit is meer Voodoo dan programmeren.
>> Waarom zet je expire niet gewoon op 0?
>
>Als je bedoelt dat je met 0 een cookie een lange levensduur kunt geven kan
>ik dat niet plaatsen. Als het om een cookie gaat die alleen tijdens de
>sessie actief is, is de expire toch overbodig?
Oh, die knoeiers van PHP weer. 0 heeft een bijzondere betekenis als
optionele parameter-hack en dat vertellen ze ergens in de babbeltekst, in
plaats van in de beschrijving van de parameter. Bah, bah, bah :-(
Nou ja, 1 dan. Eén seconde na de Unix epoch. Waarom zet je expire niet op
de in PHP laagst mogelijke waarde, namelijk 1, in plaats van een
arbitraire Voodoo waarde als 100 of 1000000?
--
René Pijlman
Ceterum censeo PHP esse delendam.
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Nico Schuyt
17/03/05, 22:15
Rene Pijlman wrote:
> Dit is meer Voodoo dan programmeren.
Hehehe, ik besprenkel mijn toetsenbord ieder half uur met kippenbloed. Naast
Voodoo brand ik regelmatig wierook en offer periodiek maagden.
--
Nico
http://www.nicoschuyt.nl