setcookie php 很慢或者发生了什么事?

setcookie php very slow or what happened?

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

这样不行。 setcookie 只是说“在下一个 http 连接时告诉客户端(浏览器)设置这个 cookie。如果它还没有过期,浏览器会在下一个 http 连接中发回它。只有这样它才会包含在 $_COOKIE数组。因此您可以在下一页重新加载后检查它是否在 PHP 中设置。

此外,在您的代码中不会设置第二个 cookie,因为您向浏览器输出了一些在 setcookie 函数(任何头函数)之前被禁止的内容。

setcookie() defines a cookie to be sent along with the rest of the HTTP headers. Like other headers, cookies must be sent before any output from your script (this is a protocol restriction). This requires that you place calls to this function prior to any output, including and tags as well as any whitespace.

Once the cookies have been set, they can be accessed on the next page load with the $_COOKIE

您需要了解 cookie 的工作原理。使用 setcookie,您将 header 发送到浏览器,这会告诉浏览器存储 cookie。 $_COOKIE superglobal 包含来自用户请求 headers 的 cookie。所以这意味着您使用 setcookie 设置的变量仅在刷新后在 $_COOKIE 数组中可用,当它返回用户请求 headers 时。请记住,您只能在任何输出之前设置 headers,因此第二个 setcookie 将不起作用。