Bekijk Volledige Versie : vreemd voorval met cookies
Matthijs de Z
13/12/07, 11:55
Hoi,
draadje nummer 4 op rij...tja...sorry ;-)
Ik heb een php scriptje voor een test met cookies.
De bedoeling is dat er met toevoeging aan de url een ref kan worden
meegegeven.
test.php?ref=1111
Wanneer ik het script voor het eerst draai door test.php op te vragen zonder
ref, krijg ik
"cookie had geen inhoud"
dat is correct.
Dan vraag ik het script op met test.php?ref=111
dan krijg ik
"ref= 111"
dat klopt ook.
Maar....als ik het script dan opvraag met test.php (dus zonder ref=), dan
krijg ik
"cookie had geen inhoud"
en dat is natuurlijk niet de bedoeling. Pas als ik op refresh druk krijg ik
"oude cookie: 111"
Iemand een idee hoe dit kan en vooral hoe het verholpen kan worden?
Groeten,
Matthijs
<?php
if(isset($_GET['ref']))
{
setcookie("TestCookie2", $_GET['ref']);
echo "ref= ".$_GET['ref'];
}
else
{
if($_COOKIE["TestCookie2"]<>"")
{
echo"oude cookie: ".$_COOKIE["TestCookie2"];
}
else
{
echo "cookie had geen inhoud";
}
}
?>
Ronald Klip
13/12/07, 12:35
Op Thu, 13 Dec 2007 11:42:33 +0100 schreef Matthijs de Z:
> Ik heb een php scriptje voor een test met cookies.
>
> De bedoeling is dat er met toevoeging aan de url een ref kan worden
> meegegeven.
>
> test.php?ref=1111
>
> Wanneer ik het script voor het eerst draai door test.php op te vragen
> zonder ref, krijg ik
>
> "cookie had geen inhoud"
>
> dat is correct.
>
> Dan vraag ik het script op met test.php?ref=111
>
> dan krijg ik
>
> "ref= 111"
>
> dat klopt ook.
>
> Maar....als ik het script dan opvraag met test.php (dus zonder ref=),
> dan krijg ik
>
> "cookie had geen inhoud"
>
> en dat is natuurlijk niet de bedoeling. Pas als ik op refresh druk krijg
> ik
>
> "oude cookie: 111"
>
> Iemand een idee hoe dit kan en vooral hoe het verholpen kan worden?
caching-probleempje?
Misschien te voorkomen door allerlei no-cache headers mee te sturen.
--
groet, Ronald
Matthijs de Z wrote:
> Hoi,
>
> draadje nummer 4 op rij...tja...sorry ;-)
>
> Ik heb een php scriptje voor een test met cookies.
>
> De bedoeling is dat er met toevoeging aan de url een ref kan worden
> meegegeven.
>
> test.php?ref=1111
>
> Wanneer ik het script voor het eerst draai door test.php op te vragen
> zonder ref, krijg ik
>
> "cookie had geen inhoud"
>
> dat is correct.
>
> Dan vraag ik het script op met test.php?ref=111
>
> dan krijg ik
>
> "ref= 111"
>
> dat klopt ook.
>
> Maar....als ik het script dan opvraag met test.php (dus zonder ref=),
> dan krijg ik
>
> "cookie had geen inhoud"
>
> en dat is natuurlijk niet de bedoeling. Pas als ik op refresh druk krijg ik
>
> "oude cookie: 111"
>
> Iemand een idee hoe dit kan en vooral hoe het verholpen kan worden?
Bij mij werkt het prima. Wellicht een IE hickup ? Probeer het eens met
Firefox en op een echte webserver.
> Groeten,
>
> Matthijs
>
>
> <?php
> if(isset($_GET['ref']))
> {
> setcookie("TestCookie2", $_GET['ref']);
> echo "ref= ".$_GET['ref'];
> }
> else
> {
> if($_COOKIE["TestCookie2"]<>"")
> {
> echo"oude cookie: ".$_COOKIE["TestCookie2"];
> }
> else
> {
> echo "cookie had geen inhoud";
> }
> }
>
> ?>
>
>
>
>
Matthijs de Z
13/12/07, 12:55
> Bij mij werkt het prima. Wellicht een IE hickup ? Probeer het eens met
> Firefox en op een echte webserver.
Hallo Ronald en Leihcim (of zal ik er toch maar Michiel van maken ;-)),
ik dacht eerst ook even aan een cashe probleem, maar als ik de code iets
aanpas, zodat de nieuwe cookie waarde gelijk op het scherm moet verschijnen,
doet ie het ook niet...
ik heb regel 5 aangepast (was==> echo "ref= ".$_GET['ref'];)
Nu doet ie niet wat je zou verwachten...
Bij jullie ook?
<?php
if(isset($_GET['ref']))
{
setcookie("TestCookie2", $_GET['ref']);
echo "ref= ".$_COOKIE["TestCookie2"];
}
else
{
if($_COOKIE["TestCookie2"]<>"")
{
echo"oude cookie: ".$_COOKIE["TestCookie2"];
}
else
{
echo "cookie had geen inhoud";
}
}
?>
Rik Wasmus
13/12/07, 13:05
On Thu, 13 Dec 2007 12:49:58 +0100, Matthijs de Z
<MendanLdaarnaDenalslaatstZ@hotmail.com> wrote:
>> Bij mij werkt het prima. Wellicht een IE hickup ? Probeer het eens met
>> Firefox en op een echte webserver.
>
> Hallo Ronald en Leihcim (of zal ik er toch maar Michiel van maken ;-)),
>
> ik dacht eerst ook even aan een cashe probleem, maar als ik de code iets
> aanpas, zodat de nieuwe cookie waarde gelijk op het scherm moet
> verschijnen, doet ie het ook niet...
>
> ik heb regel 5 aangepast (was==> echo "ref= ".$_GET['ref'];)
> Nu doet ie niet wat je zou verwachten...
> Bij jullie ook?
>
> <?php
> if(isset($_GET['ref']))
> {
> setcookie("TestCookie2", $_GET['ref']);
> echo "ref= ".$_COOKIE["TestCookie2"];
Dit klopt niet: de cookie TestCookie2 is niet meegestuurd in het request,
dus zal deze ook niet in de $_COOKIE array zitten hier. Een setcookie()
vult niet automatisch de $_COOKIE array, dit wordt enkel gedaan vóór de
rest van het script start, op basis van waardes die de bezoeker
daadwerkelijk stuurt.
--
Rik Wasmus
Matthijs de Z
13/12/07, 13:05
> Dit klopt niet: de cookie TestCookie2 is niet meegestuurd in het request,
> dus zal deze ook niet in de $_COOKIE array zitten hier. Een setcookie()
> vult niet automatisch de $_COOKIE array, dit wordt enkel gedaan vóór de
> rest van het script start, op basis van waardes die de bezoeker
> daadwerkelijk stuurt.
uh, ik begrijp even niet helemaal wat je bedoelt. Ik heb het script iets
aangepast, omdat er een foutje inzat.
Als ik onderstaand script gebruik en de ref= wijzig, dan is "nieuw cookie"
wel goed, maar "Huidig cookie" niet...terwijl die ook opgevraagd wordt na
setcookie (immers isset ref is true).
mazzel,
Matthijs
<?php
if(isset($_GET['ref']))
{
setcookie("TestCookie2", $_GET['ref']);
echo "nieuw cookie: ".$_GET['ref']."<br>";
}
else
{
if($_COOKIE["TestCookie2"]<>"")
{
echo"oude cookie: ".$_COOKIE["TestCookie2"]."<br>";
}
else
{
echo "cookie had geen inhoud<br>";
}
}
echo"Huidig cookie: ".$_COOKIE["TestCookie2"]
?>
Rik Wasmus
13/12/07, 13:25
On Thu, 13 Dec 2007 13:03:41 +0100, Matthijs de Z
<MendanLdaarnaDenalslaatstZ@hotmail.com> wrote:
>> Dit klopt niet: de cookie TestCookie2 is niet meegestuurd in het
>> request, dus zal deze ook niet in de $_COOKIE array zitten hier. Een
>> setcookie() vult niet automatisch de $_COOKIE array, dit wordt enkel
>> gedaan vóór de rest van het script start, op basis van waardes die de
>> bezoeker daadwerkelijk stuurt.
>
> uh, ik begrijp even niet helemaal wat je bedoelt. Ik heb het script iets
> aangepast, omdat er een foutje inzat.
> Als ik onderstaand script gebruik en de ref= wijzig, dan is "nieuw
> cookie" wel goed, maar "Huidig cookie" niet...terwijl die ook opgevraagd
> wordt na setcookie (immers isset ref is true).
OK, laten we van het volgende geval uit gaan:
url = ?ref=test
geen cookie.
...en dan het script doorlopen: aan het begin worden de superglobal arrays
gevuld:
$_GET = array('ref'=>'test');
$_COOKIE = array();
> <?php
> if(isset($_GET['ref']))
Klop, is gezet.
> {
> setcookie("TestCookie2", $_GET['ref']);
Header naar de bezoeker om een cookie te ztten. Dit veranderd NIETS aan de
huidige $_COOKIE array.
> echo "nieuw cookie: ".$_GET['ref']."<br>";
Output: 'nieuw cookie: test'.
> }
> else
> echo"Huidig cookie: ".$_COOKIE["TestCookie2"]
Output:
"Notice: Undefined index: 'TestCookie2' in ...
Huidig cookie: "
... omdat die waarde gewoonweg niet gezet is.
--
Rik Wasmus
Matthijs de Z
14/12/07, 09:15
> OK, laten we van het volgende geval uit gaan:
> url = ?ref=test
[doorlopen van uitleg]
ok, bedankt. Ik heb het door.
mazzel,
Matthijs