为什么setcookie在服务器上不起作用


Why is setcookie not working on server?

我正在使用此代码

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 setThe cookie 'cookiesfwefwfwef' is going to be destroyedThe 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"]."'";