为什么setcookie不能在服务器上运行?

时间:2015-11-02 07:52:23

标签: php cookies

我正在使用此代码

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,但是当我在localhsot网站上刷新浏览器时,我会The cookie 'cookiesfwefwfwef' is going to be set然后The cookie 'cookiesfwefwfwef' is going to be destroyed然后The cookie 'cookiesfwefwfwef' is going to be set等等。

我做错了吗?

2 个答案:

答案 0 :(得分:1)

服务器向浏览器发送响应后,

setcookie()将在浏览器端设置COOKIE。因此,您无法在同一请求中使用$_COOKIE

在setcookie之后,当浏览器再次发送请求时,您将获得$_COOKIE的值。

如果您想在同一个请求中使用$_COOKIE,请按以下方式为其分配值: $_COOKIE["we"] = 2;

答案 1 :(得分:0)

cookie值将在下一页刷新时打印,您还没有指定cookie路径。

setcookie("we", 2, strtotime("+1 year"), "/");
echo "'".$_COOKIE["we"]."'";