setcookie php很慢还是发生了什么?

时间:2015-04-17 14:03:54

标签: php cookies localhost session-cookies

这是一个小测试。我设置了一个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?

2 个答案:

答案 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将无效。