【问题标题】:PHP Cookies are not being set未设置 PHP Cookie
【发布时间】:2012-02-11 23:46:34
【问题描述】:

我在设置 Cookie 时遇到问题。问题是我的 cookie 甚至没有被设置,我在下面设置了一个测试来查看它们是否被设置但它们从未被设置。我什至检查了我的浏览器,看看是否有任何设置,但我的网站上什么都没有。

我希望你帮我设置我的 cookie。我不太确定该怎么做。谢谢你。

这是我的代码:

<?php 
session_start();

setcookie("ridArray","", time()+3600);

if (isset($_COOKIE['ridArray'])) {
    echo "ridArray is set.";    
}
?> 
<head>
</head>
<html> 
<body>
<?php
if (isset($_COOKIE['ridArray'])) {
    echo "ridArray is set.";    
} else { echo "not set"; } 
?> 
</body>
</html> 

【问题讨论】:

  • 您是否尝试过刷新页面?在设置它的同一请求中,$_COOKIE 中的 cookie 将不可用。
  • 您不能将cookie设置为空值。检查这个stackoverflow.com/questions/8775572/…
  • @WordsWorth 哦,对了,谢谢它现在正在工作。谢谢。如果您将其作为答案,我可以标记它,您将获得荣誉,人们将能够看到它。

标签: php cookies setcookie


【解决方案1】:

问题出在SetCookie 文档中:

必须使用与设置相同的参数来删除 Cookie。如果 value 参数是空字符串或 FALSE,并且所有其他参数与之前对 setcookie 的调用匹配,则将从远程客户端删除具有指定名称的 cookie。这是通过将值设置为“已删除”并将到期时间设置为过去一年来在内部实现的。

您正在将 cookie 值设置为空字符串 ("")。试试:

setcookie("ridArray","not blank value", time()+3600);

另一个问题是,当您设置 cookie 时,它​​不会出现在请求标头中(通过 $_COOKIE 访问),直到下一个页面加载。这意味着当您第一次加载该页面时,不会设置 $_COOKIE['ridArray']。在后续加载时,它会被设置,并且每次都会被重置。

第一页加载,它不会被设置。刷新,它就会被设置。

调试 cookie 的最简单方法是使用 Chrome 的开发人员工具或 Firefox 的 FireBug 之类的工具,并查看 SetCookie 标头的响应标头,以及请求标头以查看您的浏览器正在发送哪些 cookie。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多