标签归档:http

一道“埋坑”的笔试题

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 数组

原因分析

  1. setcookie() 只是向浏览器发送一个 HTTP 响应头,告诉浏览器设置 cookie;
  2. $_COOKIE 数组包含的是当前请求中浏览器 已经发送 的 cookie;
  3. 只有在 下一次请求 时,浏览器才会发送这个 cookie,此时 $_COOKIE['name'] 才会存在。