【发布时间】:2012-03-13 23:45:46
【问题描述】:
我正在使用此代码设置 cookie,然后查看它们是否存在
setcookie("token", "value", time()+60*60*24*100, "/");
setcookie("secret", "value", time()+60*60*24*100, "/");
setcookie("key", "value", time()+60*60*24*100, "/");
if (!isset($_COOKIE['token']) || !isset($_COOKIE['secret']) || !isset($_COOKIE['key'])) {
// do something because one of the cookies were not set
}
即使在我的浏览器中设置了所有三个 cookie,它仍然运行 if() 语句。通过消除过程,我发现中间的 cookie !isset($_COOKIE['secret']) 似乎会导致 if() 语句运行,即使在我的浏览器中设置了 cookie secret。当我查看浏览器并已设置时,脚本说它尚未设置。你能想到 php 说它没有设置的任何原因吗?
【问题讨论】:
-
您的代码对我有用。该块在第一次访问时执行,因为 $_COOKIE 尚未填充来自 setCookie 的值。在进一步调用时,不再执行该块。你有没有安装过 cookie 拦截器?
-
您使用什么工具来判断该 cookie 是否存在?萤火虫?看起来很奇怪...