Maison >développement back-end >tutoriel php >Pourquoi les cookies PHP ne sont-ils pas immédiatement disponibles après `setcookie()` ?

Pourquoi les cookies PHP ne sont-ils pas immédiatement disponibles après `setcookie()` ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-14 05:25:14841parcourir

Why are PHP Cookies Not Immediately Available After `setcookie()`?

Comprendre l'apparition retardée des valeurs de cookie dans $_COOKIE

Lors de la tentative de récupération de la valeur d'un cookie immédiatement après avoir invoqué la fonction setcookie() dans PHP, vous pouvez rencontrer un problème où $_COOKIE['uname'] reste indéfini. Cela se produit car les cookies ne sont pas instanciés tant que la réponse HTTP n'est pas transmise au client.

La raison de ce délai est que les cookies PHP reposent sur l'en-tête HTTP Set-Cookie, qui est inclus dans les en-têtes de réponse. Lorsque setcookie() est appelé, il ajoute l'en-tête Set-Cookie à la réponse, mais l'en-tête n'est pas réellement envoyé au client tant que l'exécution du script n'est pas terminée.

Cependant, vous pouvez surmonter cette limitation manuellement définir la valeur $_COOKIE['uname'] après avoir appelé setcookie() :

setcookie('uname', $uname, time() + 60 * 30);
$_COOKIE['uname'] = $uname;

En définissant la valeur $_COOKIE manuellement, le cookie devient disponible pour utilisation dans votre script immédiatement. Cela vous permet d'accéder à la valeur du cookie sans avoir à vous fier à la prochaine demande du client.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn