这是一个小测试。我设置了一个cookie,然后尝试访问它:
<?php
setcookie("t",0,time()+900);
echo ($_COOKIE['t']+10);
setcookie("t",0,time()-3600);
?>
当我运行代码时,我收到如下错误消息:
Notice: Undefined index: t in /var/www/x/testcookie.php on line 5
10
为什么我无法访问cookie?
答案 0 :(得分:4)
它不起作用。 setcookie
只是说“使用下一个http连接告诉客户端(浏览器)设置此cookie。浏览器将其发送回下一个http连接,如果它尚未过期。只有它才包含在$_COOKIE
中所以你可以在下一页重新加载后检查它是否在PHP中设置。
除了在你的代码中,第二个cookie不会被设置,因为你在setcookie
函数(任何头函数)之前输出了一些被禁止的东西。
setcookie()定义了一个与其他HTTP头一起发送的cookie。与其他标头一样,必须在脚本的任何输出之前发送cookie(这是协议限制)。这要求您在任何输出之前调用此函数,包括和标记以及任何空格。
设置好cookie后,可以在下一页访问它们 加载$ _COOKIE
答案 1 :(得分:0)
您需要了解Cookie的工作原理。使用setcookie,您将标题发送到浏览器,告诉浏览器存储cookie。 $ _COOKIE superglobal包含来自用户请求标头的cookie。所以这意味着你用setcookie设置的变量只有在刷新后才能在$ _COOKIE数组中可用,当它带回用户请求头时。并且请记住,只有在输出之前才能设置标题,因此第二个setcookie将无效。