Maison  >  Article  >  développement back-end  >  Une brève analyse des raisons pour lesquelles la valeur de php $_cookie est différente de la valeur stockée

Une brève analyse des raisons pour lesquelles la valeur de php $_cookie est différente de la valeur stockée

PHPz
PHPzoriginal
2023-03-22 16:54:221209parcourir

Lorsque vous utilisez PHP $_COOKIE pour obtenir la valeur du cookie, vous pouvez parfois rencontrer une situation où la valeur obtenue est différente de la valeur stockée. À ce stade, nous devons effectuer un débogage et une inspection du code.

Ce qui suit présentera quelques raisons qui peuvent faire en sorte que la valeur du cookie obtenue soit différente de la valeur stockée.

  1. Noms de variables incohérents

Étant donné que le cookie lui-même est un en-tête de requête dans le protocole HTTP standard, le nom de variable utilisé lors du stockage du cookie doit être cohérent avec le nom de variable utilisé lors de sa récupération. Si les noms de variables sont incohérents, la valeur obtenue sera différente de la valeur stockée.

Par exemple :

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/');
 
// 获取cookie时
$test = $_COOKIE['Test'];

Dans cet exemple, le nom de la variable utilisé lors du stockage du cookie est "test", mais "Test" est utilisé lors de son obtention, ce qui fera que la valeur obtenue sera différente de la valeur stockée.

  1. Le chemin d'action du cookie est incohérent

Semblable au nom de la variable, le chemin d'action du cookie doit également être cohérent. Si le chemin d'action est précisé lors de l'enregistrement du cookie, mais pas lors de sa récupération, la valeur obtenue sera différente de la valeur stockée.

Par exemple :

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/test');
 
// 获取cookie时
$test = $_COOKIE['test'];

Dans cet exemple, le chemin d'action est spécifié comme « /test » lors du stockage du cookie, mais il n'est pas spécifié lors de l'obtention du cookie, ce qui entraîne des valeurs différentes.

  1. Le délai d'expiration du cookie est incohérent

Si le délai d'expiration est spécifié lors du stockage du cookie, mais que le délai d'expiration est dépassé lorsque le cookie est obtenu, la valeur obtenue sera nulle.

Par exemple :

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/');
 
// 过了过期时间再获取cookie时
sleep(3605);
$test = $_COOKIE['test'];

Dans cet exemple, le délai d'expiration du cookie stocké est d'une heure plus tard, mais le délai d'expiration est passé lorsque le cookie est obtenu, ce qui rend la valeur obtenue nulle.

  1. Problème inter-domaines des cookies

Si le nom de domaine où le cookie est stocké est incohérent avec le nom de domaine où le cookie est obtenu, la valeur du cookie obtenue sera également différente de la valeur du cookie stocké.

Par exemple :

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/', '.example.com');
 
// 在另一个域名上获取cookie时
$test = $_COOKIE['test'];

Dans cet exemple, lors du stockage du cookie, le nom de domaine est spécifié comme '.example.com', mais si le cookie est obtenu sur un autre nom de domaine, le cookie ne sera pas obtenu ou un autre la valeur sera obtenue.

Résumé :

Assurez-vous que le nom de la variable, le chemin d'action, l'heure d'expiration et le nom de domaine sont cohérents pour éviter les problèmes de cookies entre domaines. Ce sont les raisons pour lesquelles la valeur du cookie obtenue est différente de la valeur stockée. Lors du débogage du code, veillez à prêter attention à ces problèmes pour éviter les erreurs inutiles.

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