setcookie('name', 'soso');
var_dump($_COOKIE['name']);
上面这道题,大家暂时别运行,先猜猜看,输出结果是什么?
公布答案:
Warning: Undefined array key "name" in /www/wwwroot/wp/php_cookie.php on line 3
NULL
猜对没?
这个问题的原因是 setcookie()
函数并不会立即在当前请求中设置 $_COOKIE
数组。
原因分析
setcookie()
只是向浏览器发送一个 HTTP 响应头,告诉浏览器设置 cookie;$_COOKIE
数组包含的是当前请求中浏览器 已经发送 的 cookie;- 只有在 下一次请求 时,浏览器才会发送这个 cookie,此时
$_COOKIE['name']
才会存在。