我正在使用此代码设置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说它没有设置的原因吗?
setcookie
只定义了一个与其他HTTP头一起发送的cookie,并且可以在下一页加载时使用$_COOKIE
访问它们。使用您的代码,不会发送HTTP标头。
如果没有设置cookie,你只需要setcookie
。喜欢:
if (!isset($_COOKIE['token'])) {
setcookie("token", "value", time()+60*60*24*100, "/");
}
使用
if(true === array_key_exists('secret', $_COOKIE) && strlen($_COOKIE['secret']) > 0) {
}