Installation instantanée des cookies en PHP
Afin qu'un cookie défini apparaisse immédiatement
dans le tableau $_COOKIE, on peut
utiliser une astuce.
L'essence de l'astuce est la suivante : d'abord, définissons
le cookie à l'aide de setcookie, puis
inscrivons-le manuellement dans le tableau $_COOKIE :
<?php
setcookie('str', 'eee');
$_COOKIE['str'] = 'eee';
var_dump($_COOKIE['str']); // affichera immédiatement 'eee'
?>
Pour éviter que le cookie ne soit envoyé à chaque fois au navigateur, on peut placer le code de définition du cookie dans une condition. Si le cookie n'existe pas, alors on le définit :
<?php
if (!isset($_COOKIE['str'])) { // si le cookie n'existe pas
setcookie('str', 'eee');
$_COOKIE['str'] = 'eee';
}
echo $_COOKIE['str']; // affichera 'eee'
?>
Discutons du fonctionnement. Lors de la première
visite sur la page, nous entrerons dans le if,
nous définirons le cookie dans le navigateur et l'inscrirons
immédiatement dans $_COOKIE. Ensuite, via echo,
la valeur que nous avons manuellement inscrite sera affichée.
Lors des visites suivantes sur la page, nous n'entrerons pas
dans le if, mais $_COOKIE contiendra
notre cookie, déjà venu du navigateur.
Ainsi, que ce soit lors de la première visite ou lors
des suivantes, $_COOKIE contiendra notre cookie.
Testez l'astuce décrite.