-1

我正在尝试以下方法,但它不起作用......

做一个饼干。启动一个 php 脚本。该脚本将在 10 秒后显示 cookie 的内容。在脚本运行时,删除 cookie。为什么脚本显示 cookie 的数据,就像 cookie 仍然存在一样?

<?php
    sleep(10000);
    echo $_COOKIE['data'];
?>

为了制作和删除制作 cookie,我使用了 chrome 扩展“编辑此 Cookie”

4

2 回答 2

3

Cookie 作为页面 HTTP 请求的一部分从浏览器发送到服务器,然后 PHP 将它们放入$_COOKIE数组中。这发生在脚本开始之前。

使用$_COOKIE不访问客户端计算机实时获取当前cookie。在脚本执行期间,对 cookie 的任何更改都是不可见的。在下一次对页面的请求之前,您将无法检测到这些更改,届时浏览器将再次发送 cookie。

于 2013-11-08T14:13:59.730 回答
2

我怀疑问题与 PHP 如何处理 cookie 无关,而与您对 cookie 如何工作的理解有关。(在没有看到您的代码的情况下,这是完整而彻底的猜测。)

言归正传,cookie 仅在从浏览器发送/接收内容时设置/读取,因为 cookie 数据作为 HTTP 标头的一部分传输,仅在页面加载时发生。因此,您需要重新加载页面(而不是简单地等待“x”秒)才能看到您所做的任何更改。

在一些细节方面:

  1. 当您设置 cookie 时,它​​将在来自 Web 服务器的出站 HTTP 响应中发送到浏览器(并随后相应地存储)。

  2. 要读取 cookie,它必须之前已按上述方式设置,在这种情况下,它将作为后续浏览 URI 请求的一部分呈现给 Web 服务器

  3. 删除 cookie 遵循与设置相同的规则,因此 cookie 只会在来自浏览器的后续请求中不再可用。

顺便说一句,您可以使用 [INSERT YOUR OF CHOICE HERE] 的开发工具轻松确认上述内容 - 只需查看请求/响应标头,您就会看到 cookie 数据。

于 2013-11-08T14:14:14.443 回答