我正在尝试以下但是它不起作用......
制作一个cookie。启动php脚本。该脚本将在10秒后显示cookie的内容。脚本运行时,删除cookie。为什么脚本显示cookie的数据,比如cookie仍然存在?
<?php
sleep(10000);
echo $_COOKIE['data'];
?>
要制作和删除我使用Chrome扩展程序“编辑此Cookie”的Cookie
答案 0 :(得分:3)
Cookie作为页面的HTTP请求的一部分从浏览器发送到服务器,然后PHP将它们放入$_COOKIE
数组中。这发生在剧本开始之前。
使用$_COOKIE
无法访问客户端的计算机以实时获取当前Cookie。在脚本中,对cookie的任何更改都是不可见的。在浏览器再次发送cookie之前,您将无法在页面的下一次请求之前检测到这些更改。
答案 1 :(得分:2)
我怀疑问题与PHP处理cookie的方式无关,而是与您对Cookie的工作原理有关。 (但是,如果没有看到您的代码,那么完整且完全猜测。)
事实证明,只有在从浏览器发送/接收内容时才设置/读取cookie,因为cookie数据是在HTTP页眉中传输的,只会在页面加载时发生。因此,您需要重新加载页面(而不是简单地等待'x'秒)才能看到您所做的任何更改。
就某些细节而言:
当您设置cookie时,它将被发送到浏览器(并随后相应地存储)在来自Web服务器的出站HTTP响应中。
要读取cookie,必须事先按上述方式设置,在这种情况下,它将作为后续浏览URI请求的一部分呈现给Web服务器
删除Cookie遵循与设置相同的规则,因此cookie只会在浏览器的后续请求中停止使用。
顺便提一下,您可以使用[在此处选择浏览此选项]的开发人员工具轻松确认上述内容 - 只需查看请求/响应标题,您就会看到Cookie数据。