Maison >développement back-end >tutoriel php >Pourquoi ma valeur de cookie est-elle manquante après avoir utilisé « setcookie() » en PHP ?
En PHP, utiliser $_COOKIE pour récupérer la valeur d'un un cookie nouvellement créé immédiatement après l'appel de setcookie() peut entraîner l'indisponibilité de la valeur souhaitée. Ce phénomène découle de la nature asynchrone de la gestion des cookies HTTP.
Lorsque setcookie() est invoqué, le script PHP émet une commande pour créer un cookie et incluez-le dans la réponse HTTP sortante. Cependant, la réponse n'est pas envoyée au client (c'est-à-dire au navigateur) tant que le script n'a pas terminé son exécution.
Comme la variable $_COOKIE reflète les cookies inclus dans la requête HTTP actuelle, toute modification apportée aux cookies pendant l'exécution du script côté serveur ne sont pas immédiatement disponibles dans $_COOKIE.
Pour illustrer le timeline :
Pour garantir que $_COOKIE reflète la valeur du cookie nouvellement définie, vous pouvez la remplacer dans le même script :
setcookie('uname', $uname, time() + 60 * 30); $_COOKIE['uname'] = $uname;
Cette action crée le cookie dans la réponse HTTP sortante et définit immédiatement sa valeur dans la variable $_COOKIE, le rendant accessible pour une utilisation dans l'exécution du script en cours.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!