PHP如何处理cookie?

时间:2013-11-08 14:07:21

标签: php cookies

我正在尝试以下但是它不起作用......

制作一个cookie。启动php脚本。该脚本将在10秒后显示cookie的内容。脚本运行时,删除cookie。为什么脚本显示cookie的数据,比如cookie仍然存在?

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

要制作和删除我使用Chrome扩展程序“编辑此Cookie”的Cookie

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

我怀疑问题与PHP处理cookie的方式无关,而是与您对Cookie的工作原理有关。 (但是,如果没有看到您的代码,那么完整且完全猜测。)

事实证明,只有在从浏览器发送/接收内容时才设置/读取cookie,因为cookie数据是在HTTP页眉中传输的,只会在页面加载时发生。因此,您需要重新加载页面(而不是简单地等待'x'秒)才能看到您所做的任何更改。

就某些细节而言:

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

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

  3. 删除Cookie遵循与设置相同的规则,因此cookie只会在浏览器的后续请求中停止使用。

  4. 顺便提一下,您可以使用[在此处选择浏览此选项]的开发人员工具轻松确认上述内容 - 只需查看请求/响应标题,您就会看到Cookie数据。