Sofortiges Setzen von Cookies in PHP
Um ein gesetztes Cookie sofort
im Array $_COOKIE verfügbar zu machen,
kann man einen cleveren Trick anwenden.
Der Trick besteht darin: Zuerst setzen wir
das Cookie mit setcookie und dann
schreiben wir es manuell in das Array $_COOKIE:
<?php
setcookie('str', 'eee');
$_COOKIE['str'] = 'eee';
var_dump($_COOKIE['str']); // gibt sofort 'eee' aus
?>
Damit das Cookie nicht jedes Mal an den Browser gesendet wird, kann man das Setzen des Cookies in eine Bedingung packen. Wenn es ein solches Cookie nicht gibt, dann setzen wir es:
<?php
if (!isset($_COOKIE['str'])) { // wenn das Cookie nicht existiert
setcookie('str', 'eee');
$_COOKIE['str'] = 'eee';
}
echo $_COOKIE['str']; // gibt 'eee' aus
?>
Lassen Sie uns besprechen, wie das funktioniert. Beim ersten
Aufruf der Seite gelangen wir in den if-Block,
setzen das Cookie im Browser und schreiben es sofort
in $_COOKIE. Danach wird über echo
der von uns manuell gesetzte Wert ausgegeben.
Bei den folgenden Aufrufen der Seite gelangen wir nicht
in den if-Block, aber in $_COOKIE wird
unser Cookie enthalten sein, das bereits vom Browser
mitgeschickt wurde.
Auf diese Weise befindet sich unser Cookie sowohl beim ersten Aufruf
als auch bei den folgenden in $_COOKIE.
Probieren Sie den beschriebenen Trick aus.