在一个文件中,我有这个代码来设置一些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
}
但它不起作用..
答案 0 :(得分:0)
你不能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已过期。