我正在使用此代码
setcookie("we", 2, time()+3600*24*365);
echo "'".$_COOKIE["we"]."'";
为我的网站设置cookie。
这在localhost上运行得很好,我得到了'2'
,但当我在我的在线网站上运行它时,我得到的是''
。为什么会发生这种情况?
更新我正在尝试这个代码来测试我的cookie问题
$c = "cookiesfwefwfwef";
if(isset($_COOKIE[$c])){
echo "The cookie '".$c."' is going to be destroyed";
setcookie($c, 23, time()-3600*24*365, $site_url);
}else{
echo "The cookie '".$c."' is going to be set";
setcookie($c, 23, time()+3600*24*365, $site_url);
}
问题是,每次我在我的在线网站上刷新浏览器时,我都会得到The cookie 'cookiesfwefwfwef' is going to be set
,但当我在本地网站上刷新我的浏览器时,就会得到The cookie 'cookiesfwefwfwef' is going to be set
、The cookie 'cookiesfwefwfwef' is going to be destroyed
、The cookie 'cookiesfwefwfwef' is going to be set
等等
我做错什么了吗?
setcookie()
将在服务器向浏览器发送响应后在浏览器端设置COOKIE。所以您不能在同一请求中使用$_COOKIE
。
在设置cookie之后,当浏览器再次发送请求时,您将获得$_COOKIE
的值。
如果您想在同一请求中使用$_COOKIE
,请按如下方式为其赋值:$_COOKIE["we"] = 2;
cookie值将在下一次页面刷新时打印,如果您还没有指定cookie路径。
setcookie("we", 2, strtotime("+1 year"), "/");
echo "'".$_COOKIE["we"]."'";