查看cookie是否存在于设置的同一文件中

时间:2012-02-23 15:07:59

标签: 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, "/");

我想知道如何检查这些cookie是否设置在同一个文件中,最好是在它们设置之后。我试过这个

if(!isset($_COOKIE['token']) || !isset($_COOKIE['secret']) || !isset($_COOKIE['key']){

//do something

}

但它不起作用..

2 个答案:

答案 0 :(得分:0)

当用户已经拥有cookie并要求新页面时,设置$ _COOKIE。

你不能setcookie然后在

后立即使用$ _COOKIE

答案 1 :(得分:0)

我们不应该真的打扰你的问题,因为你没有从你之前的问题中得到关于完全相同问题的任何建议,但是这里有:

选项A

// As you do setCookie, also set the value in $_COOKIE
setCookie("foobar", "bat", time() + COOKIE_LIFETIME);
$_COOKIE["foobar"] = "bat";

var_dump($_COOKIE["foobar"]);

选项B

请勿使用$_COOKIE存储您的信息。将变量$token$secret$key分开,并使用$_COOKIE中的值加载它们。如果$_COOKIE为空,请手动初始化它们并致电setCookie

if (isset($_COOKIE["token"]))
    $token = $_COOKIE["token"];
else
{
    $token = "defaultValue";
    setCookie("token", $token, COOKIE_LIFETIME);
}
// Use $token instead of $_COOKIE["token"] from now on.

选项C

如果用户未设置Cookie,请执行setCookie并使用header()将用户重新定位到同一网站。如果用户不允许您设置cookie,请注意无限重定位。

if (!isset($_COOKIE["token"])
{
    setCookie("token", "defaultValue", COOKIE_LIFETIME);
    header("Location: ".$_SERVER["REQUEST_URI"]); // insert reasonable URL here.
    exit;
}

选项B将是首选。希望第三次不要问这个问题。

如果用户在将来的请求中发送您的Cookie,则无法签入相同的请求。 setCookie仅仅是对用户浏览器的吸引力,请将此信息附加到将来的请求中。如果cookie在下一个请求中发送,您将知道它是否有效。如果不遵循以下3种情况:a)用户的浏览器不允许您设置cookie,b)用户之前没有访问过您的网站,c)之前设置的cookie已过期。