php $ _COOKIE isset

Fra*_*ank 0 php cookies

我正在使用此代码设置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

}
Run Code Online (Sandbox Code Playgroud)

即使所有三个cookie都是在我的浏览器中设置的,它仍会运行该if()语句.通过消除过程,我发现中间cookie !isset($_COOKIE['secret'])似乎导致if()语句运行,即使cookie secret已在我的浏览器中设置.该脚本表示,当我查看浏览器并且已经设置时,它尚未设置.你能想到为什么php说它没有设置的原因吗?

xda*_*azz 7

setcookie只定义一个cookie与其他HTTP头一起发送,并且可以在下一页加载时访问它们$_COOKIE.使用您的代码,不会发送HTTP标头.

您只需要setcookie在未设置cookie时使用.喜欢:

if (!isset($_COOKIE['token'])) {
    setcookie("token", "value", time()+60*60*24*100, "/");
}
Run Code Online (Sandbox Code Playgroud)