[PHP] Cookies overschrijven

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok, ik set dus een cookie met de naam 'name' in PHP.

code:
1
setcookie("name", $name, strtotime("now") + $duration);


Geen problemen zou je zeggen. Als ik dat nog een keer doe, binnen de tijd van de duration, overschrijft hij de cookie met de naam "name" gewoon. Zowel in FF als in IE.

dus:

code:
1
2
$name - "ruud";
setcookie("name", $name, strtotime("now") + $duration);


en daarna verander ik de naam in piet:
code:
1
2
$name - "piet";
setcookie("name", $name, strtotime("now") + $duration);


Bij een van onze testcomputers ging de naam echter continu weer terug naar ruud, terwijl we als piet inlogden. Wat blijkt? Bij het kijken bij de bestaande cookies in de settings staan de volgende waarden

code:
1
2
name: "name" value:"ruud"
name: "name" value:"piet"


Dus hij overschrijft hem niet, maar maakt gewoon een nieuwe aan met dezelfde name. Dat is nog niet zo'n ramp, als ie het consequent deed. Maar hij doet het dus wel in de FF op de ene computer en niet op praktisch dezelfde FF op een andere computer.

verder:
Testcomputer 1: FireFox 3.0.8
Testcomputer 2: Firefox 3.x (kan ik even zo gauw niet zien).

De uiteindelijke gebruikers zijn mensen van het type "cookies :? ", dus ik wil ook niet dat men handmatig de internetgegevens moet opschonen.

Iemand een idee hoe dit komt?

Acties:
  • 0 Henk 'm!

  • DJ-Visto
  • Registratie: Maart 2009
  • Laatst online: 27-08 10:26

DJ-Visto

Aye aye, sir!

Ik doe het zo, het gaat bij mij over een login systeem

code:
1
2
3
   if($_COOKIE['name']){
                    setcookie("name", '', time()-1);
                    }


Eerst kijken of het cookie bestaat derna gewoon leeg maken ;) Anders geen actie ondernemen, bij mij werkt het perfect ;)
Dit heb ik natuurlijk in uitloggen staan, anders blijf je .. tijd ingelogd ;)
Ik heb ook gecheckt of wel de 2 cookies bestaan ;) Ik heb een cookie met naam een met wachtwoord.
Of bedoel je dit niet?

[ Voor 14% gewijzigd door DJ-Visto op 02-04-2009 15:55 ]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21-09 10:43

Matis

Rubber Rocket

PHP:
1
2
3
4
5
6
// Alle cookies
print_r($_COOKIE);
// verlopen cookie
setcookie("name", "", time()-3600);
// Alle cookies als t goed is geen...
print_r($_COOKIE);


Edit:

geen user maar name ;)

[ Voor 11% gewijzigd door Matis op 02-04-2009 15:59 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
DJ-Visto schreef op donderdag 02 april 2009 @ 15:54:
Ik doe het zo, het gaat bij mij over een login systeem

code:
1
2
3
   if($_COOKIE['name']){
                    setcookie("name", '', time()-1);
                    }


Eerst kijken of het cookie bestaat derna gewoon leeg maken ;) Anders geen actie ondernemen, bij mij werkt het perfect ;)
Dit heb ik natuurlijk in uitloggen staan, anders blijf je .. tijd ingelogd ;)
Ik heb ook gecheckt of wel de 2 cookies bestaan ;) Ik heb een cookie met naam een met wachtwoord.
Of bedoel je dit niet?
Nou ja, ik bedoel meer:

ik set hoe dan ook die cookie. Als ie al bestaat, rewrite ie hem, als ie nog niet bestaat maakt ie een nieuwe aan. Naar mijn weten gaat dat gewoon zo dat een cookie met dezelfde naam hoe dan ook overschreven wordt door een nieuwe cookie met die naam.

[ Voor 51% gewijzigd door Verwijderd op 02-04-2009 16:07 ]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21-09 10:43

Matis

Rubber Rocket

bedoel je dan dit?

http://nl3.php.net/manual/en/function.setrawcookie.php

Dat is zonder url encoding.

Staan er ook meer cookies in je temp-dir?

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmmm,

als ik

code:
1
print_r($_COOKIE);


doe dan ouptut ie bij mij de juiste dingen, maar op die andere computer laat hij juist helemaal geen cookie met
code:
1
[name] -> naam
zien :?

[ Voor 3% gewijzigd door Verwijderd op 02-04-2009 16:22 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oh, overigens, het laten zien van $_COOKIE['name'] gebeurt in een popup ergens nadat ik ben ingelogd. Dat is wel een heel belangrijk detail leek mij zo.

Op de tweede testcomputer komt er in de popup sowieso de eerste poing altijd een bericht dat ik niet ben ingelogd en de tweede keer kom je feilloos die popup in.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
toaomatis schreef op donderdag 02 april 2009 @ 15:59:
PHP:
1
setcookie("name", "", time()-3600);
OK, als ik dit dus hoe dan ook doe, alvorens de cookie name te setten, dan lijkt het te werken. Niet geheel netjes, maar werkend is werkend.

Bedankt en als er toch nog problemen optreden dan schop ik m wel weer omhoog.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Je weet ook zeker dat het niet komt door dit:
PHP:
1
$name - "piet";

ipv.
PHP:
1
$name = "piet";

?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Cartman! schreef op donderdag 02 april 2009 @ 18:01:
Je weet ook zeker dat het niet komt door dit:
PHP:
1
$name - "piet";

ipv.
PHP:
1
$name = "piet";

?
Whoops, een typfoutje. Ja dat weet ik zeker, aangezien ik het even heel simpel herschreven heb om geen onduidelijk verhaal op te hangen :)

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Ok, had gekund. Zal niet de eerste keer zijn dat iemand door n simpel tikfoutje rare resultaten krijgt ;)

Kun je misschien een testcase maken zodat wij even kunnen checken met welke versies t wel en niet goed gaat? Misschien is het een bugje van PHP of FireFox.

Acties:
  • 0 Henk 'm!

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Wat mij bijstaat is dat firefox geen cookies set op 'localhost', of beter gezegd domeinnamen zonder puntjes. Zie ook hier en hier.

Ok, even nuanceren: als je het pad meegeeft zou het wel moeten werken.

[ Voor 22% gewijzigd door WouZz op 02-04-2009 19:52 ]

On track


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21-09 10:43

Matis

Rubber Rocket

WouZz schreef op donderdag 02 april 2009 @ 19:46:
Wat mij bijstaat is dat firefox geen cookies set op 'localhost', of beter gezegd domeinnamen zonder puntjes. Zie ook hier en hier.

Ok, even nuanceren: als je het pad meegeeft zou het wel moeten werken.
Ja natuurlijk, dat zal het wel eens geweest kunnen zijn. Het probleem is soms ook dat je (in mijn geval) op 3 manieren op localhost kan komen.

http://localhost natuurlijk
http://10.0.0.xxx ip van mijn pc
http://mathijs-desktop naam van mijn pc (vista)

sommige zien dat als dezelfde maar sommige ook weer niet, moet je ook consequent in zijn ;)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Cartman! schreef op donderdag 02 april 2009 @ 18:11:
Ok, had gekund. Zal niet de eerste keer zijn dat iemand door n simpel tikfoutje rare resultaten krijgt ;)

Kun je misschien een testcase maken zodat wij even kunnen checken met welke versies t wel en niet goed gaat? Misschien is het een bugje van PHP of FireFox.
Als ik vanmiddag tijd heb probeer ik dat even te doen.

Maarrrr... het werkt nu.. weliswaar op de onorthodoxe manier...ik ben al tevreden met de tips die geleid hebben tot het werkend maken (=de timestamp van de cookie in het verleden zetten) :)

[ Voor 9% gewijzigd door Verwijderd op 03-04-2009 13:49 ]


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Naar mijn weten gaat dat gewoon zo dat een cookie met dezelfde naam hoe dan ook overschreven wordt door een nieuwe cookie met die naam.
Ja, normaal gezien wel.

PHP:
1
2
setcookie ( 'name', 'piet' );
setcookie ( 'name', 'pol' );


Nu heb ik één cookie met de name "name" en waarde "pol" (Firefox 3.0.8).
Verwijderd schreef op donderdag 02 april 2009 @ 17:27:
Niet geheel netjes, maar werkend is werkend.
Wat is hier niet netjes aan? Het verwijderen van een cookie doe je door een cookie met dezelfde naam aan te maken, maar een negatieve expire mee te geven.

March of the Eagles

Pagina: 1