[PHP] Cookies in Firefox?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Tha Ertenal
  • Registratie: September 2002
  • Laatst online: 31-05-2022
Hallo, ik heb een probleem. Ik ben bezig met een forum aant maken, en gebruik daarvoor cookies. Verder geen problemen mee in internet explorer, maar zo gauw ik met firefox ga werken, en ik wil uitloggen, dan werkt dat hele gedoe niet. Hij verwijdert geen cookies. De code die ik gebruik:

PHP:
1
setcookie("mid", $mid, time()-3600);

AMD Phenom II X6 1090T | 2x 4GB Kingston | Geforce GTX 560TI | Creative I-Trigue L3450


Acties:
  • 0 Henk 'm!

  • Tommetje
  • Registratie: Februari 2004
  • Laatst online: 19-11-2024
PHP:
1
2
3
<?
setcookie("mid", "", time()-3600);
?>

Zo misschien? :)

Hoi!


Acties:
  • 0 Henk 'm!

  • Tha Ertenal
  • Registratie: September 2002
  • Laatst online: 31-05-2022
dat zal niets uitmaken lijkt me...

AMD Phenom II X6 1090T | 2x 4GB Kingston | Geforce GTX 560TI | Creative I-Trigue L3450


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

http://nl2.php.net/setcookie
Because setting a cookie with a value of FALSE will try to delete the cookie, you should not use boolean values. Instead, use 0 for FALSE and 1 for TRUE.
Ik heb het zelf niet getest, maar als ik dat zo lees zou je het Cookie moeten kunnen verwijderen door $mid te vervangen door FALSE. :)

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • Tha Ertenal
  • Registratie: September 2002
  • Laatst online: 31-05-2022
hm, heb geprobeeert, maar werkt niet. Of hoef je er dan geen time()-3600 erbij te zetten?

AMD Phenom II X6 1090T | 2x 4GB Kingston | Geforce GTX 560TI | Creative I-Trigue L3450


Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Of zet een cookie met bogus waarden / of zet een cookie met een tijd in het verleden. Beiden zouden moeten werken met firefox.

Acties:
  • 0 Henk 'm!

  • Tha Ertenal
  • Registratie: September 2002
  • Laatst online: 31-05-2022
hm, weird. Allebei dus niet ;(

AMD Phenom II X6 1090T | 2x 4GB Kingston | Geforce GTX 560TI | Creative I-Trigue L3450


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Voor het verwijderen van een cookie gebruik ik meestal (werkt bij mij ook in Firefox):

PHP:
1
setcookie('username', '', 0, '/');

Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Sybr_E-N schreef op maandag 14 februari 2005 @ 20:39:
Voor het verwijderen van een cookie gebruik ik meestal (werkt bij mij ook in Firefox):

PHP:
1
setcookie('username', '', 0, '/');
Nu je het zegt in alle andere voorbeelden wordt geen pad meegegeven. Normaliter mag dit niks uitmaken volgens mij en zou php een default moeten gebruiken.

Ik heb echter ook ooit eens een soortgelijk probleem gehad onder IE, geen pad opgegeven geen cookie gezet. Wel pad opgegeven wel cookie gezet. (De cookie werd wel gezet maar IE gaf hem niet terug)

Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
om een cookie te verwijderen roep je hetzelfde aan als hoe je een cookie set, alleen leg je de tijd van het cookie in het verleden.

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

zet ook je error_reporting even op E_ALL; misschien stuur je al output voordat je je cookie zet?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
crisp schreef op maandag 14 februari 2005 @ 23:38:
zet ook je error_reporting even op E_ALL; misschien stuur je al output voordat je je cookie zet?
dat is toch niet verboden?
alleen bij session_start enzo moet dat wel voor je output

[ Voor 1% gewijzigd door SWINX op 14-02-2005 23:49 . Reden: grrr.. weer eens een typo :( ]

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

SWINX schreef op maandag 14 februari 2005 @ 23:48:
[...]

dat is toch niet verboden?
alleen bij session_start enzo moet dat wel voor je output
cookies worden ook met de headers verstuurd hoor; een session_start genereert after all ook een cookie, en dat heeft dus dezelfde reden dat het voor elke output gedaan moet worden ;)

uit de manual:
setcookie() defines a cookie to be sent along with the rest of the HTTP headers. Like other headers, cookies must be sent before any output from your script (this is a protocol restriction). This requires that you place calls to this function prior to any output, including and tags as well as any whitespace. If output exists prior to calling this function, setcookie() will fail and return FALSE. If setcookie() successfully runs, it will return TRUE. This does not indicate whether the user accepted the cookie.

[ Voor 66% gewijzigd door crisp op 14-02-2005 23:52 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
Het cookie zit volgens mij pas bij de headers van de volgende pagina.
Dit herken je ook weer terug aan dat een cookie nog niet op dezelfde pagina kan worden opgevraagd.

Ik ben het dus niet helemaal met de PHP manual eens (of is dat TE eigenwijs ;))

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

not true:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<body>
<div style="display:none">
<?php

// buffertje vullen :P
echo str_repeat('tralalalala',1000);

?>
</div>
<?php

    setcookie('test', 'test', time()+3600);

?>
je cookie: <script type="text/javascript">document.write(document.cookie);</script>
</body>
</html>

geeft:
Warning: Cannot modify header information - headers already sent by (output started at f:\wwwroot\bla.php:7) in f:\wwwroot\bla.php on line 13
je cookie:

geen cookie dus, terwijl dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

    setcookie('test', 'test', time()+3600);

?>
<html>
<body>
<div style="display:none">
<?php

// buffertje vullen :P
echo str_repeat('tralalalala',1000);

?>
</div>
je cookie: <script type="text/javascript">document.write(document.cookie);</script>
</body>
</html>

geeft:
je cookie: test=test


likewise, dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<body>
<div style="display:none">
<?php

// buffertje vullen :P
echo str_repeat('tralalalala',1000);

?>
</div>
<?php

    setcookie('test', 'test', time()-3600);

?>
je cookie: <script type="text/javascript">document.write(document.cookie);</script>
</body>
</html>

verwijderd je cookie dus niet(!) en geeft dus ook nog gewoon je cookie weer.

Verder zie je dus dat clientside je cookie wel degelijk meteen op te vragen is. Serverside kan je dit truuken door dit te doen:
PHP:
1
2
$_COOKIE['test'] = 'test';
setcookie('test', $_COOKIE['test'], time()+3600);

dan kan je in de rest van je script al gelijk met $_COOKIE['test'] werken.

De reden dat ik eerst een hoop loos geblaat stuur is omdat sommige webservers intern vaak eerst bufferen voordat ze beginnen met output sturen. Soms is het dus mogelijk om na een aantal bytes output toch nog headers (en dus ook cookies) te sturen, maar ga daar maar beter niet van uit.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Onno
  • Registratie: Juni 1999
  • Niet online
SWINX schreef op dinsdag 15 februari 2005 @ 00:02:
Het cookie zit volgens mij pas bij de headers van de volgende pagina.
Dat kan per definitie niet. Hoe weet PHP nou wat 'de volgende pagina' is?
Dit herken je ook weer terug aan dat een cookie nog niet op dezelfde pagina kan worden opgevraagd.
Jij haalt twee dingen door elkaar: het versturen van een cookie van de server naar de client, en het vervolgens weer meegeven van datzelfde cookie door de client terug naar de server.

Acties:
  • 0 Henk 'm!

  • Tha Ertenal
  • Registratie: September 2002
  • Laatst online: 31-05-2022
hm, hij had idd wat outputs. Stom, niet eens error_reporting in gezet :P. Maar goed, alle errors er nu uit, werkt nog steeds niet :(

AMD Phenom II X6 1090T | 2x 4GB Kingston | Geforce GTX 560TI | Creative I-Trigue L3450


Acties:
  • 0 Henk 'm!

  • Superdeboer
  • Registratie: December 2002
  • Niet online

Superdeboer

Sa-weee-tah

Het spijt me voor deze ranzige grote kick, maar ik loop tegen hetzelfde probleem als de topicstarter: ik wil mijn cookie verwijderen door een van bovengenoemde manieren, maar in Firefox gebeurt er niets; cookie blijft waar hij is. Zelfs na afsluiten van Firefox en dan weer teruggaan, heb ik tóch die cookie weer.

Ik gebruik Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5.
Ik zet mijn cookie door:
PHP:
1
setcookie('user_id',$user_id,time() + 14 * 3600,"/",COOKIE_DOMAIN);

en wil 'm verwijderen door:
PHP:
1
setcookie('user_id', FALSE, time()-30000, COOKIE_DOMAIN);


Doe ik dat, dan geeft LiveHTTPHeaders in Firefox keurig aan:
code:
1
Set-Cookie: user_id=deleted; expires=Sun, 05-Dec-04 01:05:01 GMT; path=www.url.tld

Ga ik echter met de Add N Edit Cookies extension kijken of mijn koekje nu weggetrapt is, dan zie ik 'm daar nog keurig staan... met z'n oude waarde, oude expiration date en oude domein... :|
Ik heb de hierboven genoemde varianten volgens mij allemaal geprobeerd, maar geen van allen haalt mijn cookie weg. ;(
Nogmaals het probleem van de TS dus; heeft iemand een idee waar dit aan ligt?

When I write my code, only God and I know what it means. One week later, only God knows.
Hell yes it's a Cuban Cigar, but I'm not supporting their economy, I'm burning their fields.


Acties:
  • 0 Henk 'm!

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

TheDane

1.618

Dit al geprobeerd?

PHP:
1
2
3
<?
setcookie('user_id', false,time()-100000,"/",COOKIE_DOMAIN);
?>

Volgens mij moet je bij het verwijderen van een cookie namelijk precies dezelfde -of in ieder geval 't zelfde aantal - parameters meegeven alleen dan ipv een cookie value false.


Weet je ook zeker dat time()-30000 of time()-100000 or whatever ook daadwerkelijk een tijd is die in 't verleden ligt? time()-iets is op server wel in 't verleden, maar op de workstation waar de cookie geschreven wordt, misschien niet.

[ Voor 66% gewijzigd door TheDane op 05-12-2005 02:21 ]


Acties:
  • 0 Henk 'm!

Verwijderd

een cookie verwijder je net als dat je hem maakt alleen dan met een negatieve tijd

beste kan je wel outputbuffering gebruiken: ob_start(); ob_end_flush(); omdat een cookie voor de rest van de output verzonden moet worden

Acties:
  • 0 Henk 'm!

Verwijderd

zo hoort die te zijn:

inloggen:

setcookie("cookienaam", "cookiewaarde", time() + $instellingen[cookietijd], "/", "", "0");

uitloggen:

setcookie ("cookienaam", "cookiewaarde", time() - 3600, "/", "", "0");


cookienaam moet hetzelfde zijn, de waarde hoeft dat niet te zijn niet, bij het uitloggen maak ik er altijd een niet bestaande waarde van, waardoor een cookie ook al in feite geen waarde meer heeft

[ Voor 85% gewijzigd door Verwijderd op 05-12-2005 03:40 ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Verwijderd schreef op maandag 05 december 2005 @ 03:30:
setcookie("cookienaam", "cookiewaarde", time() + $instellingen[cookietijd], "/", "", "0");

setcookie ("cookienaam", "cookiewaarde", time() - 3600, "/", "", "0");
Je wilt echt wel een zinnig domein+pad opgeven bij je cookie, een beetje browser blokkeert anders je cookie...

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Superdeboer
  • Registratie: December 2002
  • Niet online

Superdeboer

Sa-weee-tah

TheDane schreef op maandag 05 december 2005 @ 02:15:
Dit al geprobeerd?
Volgens mij moet je bij het verwijderen van een cookie namelijk precies dezelfde -of in ieder geval 't zelfde aantal - parameters meegeven alleen dan ipv een cookie value false.
Arggg wat stom! Daar heb ik dan gisteren 3 uur aan besteed. :X
Ik dacht eerst: wat een onzinreactie plaats je nou, want ik héb steeds met dezelfde parameters geprobeerd de cookie te verwijderen.
Blijkt dat ik die éne stomme parameter "/" voor het path steeds wel bij het maken van de cookie gebruik, maar niet bij het verwijderen. En daar moet ik dan achter komen door in dit topic, naar aanleiding van jouw reactie, mijn twee stukjes code nog eens te vergelijken. :X
Bleek dus basic debugging te zijn in plaats van een heavy browserbug... maar toch bedankt. ;)

When I write my code, only God and I know what it means. One week later, only God knows.
Hell yes it's a Cuban Cigar, but I'm not supporting their economy, I'm burning their fields.


Acties:
  • 0 Henk 'm!

Verwijderd

Je wilt echt wel een zinnig domein+pad opgeven bij je cookie, een beetje browser blokkeert anders je cookie...
het pad is al opgegeven en het domein wordt automatisch gezet alleen als je subdomeinen gebruikt haal je het www gebeuren er af zodat die ook voor alle subdomeinen geldig is
Pagina: 1