2015-11-02 102 views
2

我使用此代码为什么不工作在服务器上的setcookie?[更新]

setcookie("we", 2, time()+3600*24*365); 
echo "'".$_COOKIE["we"]."'"; 

设置为我的网站的cookie。

这在本地主机上正常工作,我得到'2'然而,当我在我的在线网站上运行这个时,我得到''。这是为什么发生?

UPDATE 我想这个代码来测试我的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等等。

我做错了什么?

+0

我发现了一个与此类似,看看是否有帮助:http://stackoverflow.com/questions/4427743/php-cookies-works-well-on-localhost-but-its-not-working- on-live-server – Thamilan

+0

如果您发现答案有帮助,请标记出来。 – Parixit

+0

@Parixit,\t我已更新我的问题。请看一下。 –

回答

1

setcookie()将在服务器向浏览器发送响应后,在浏览器端设置COOKIE。所以你不能在相同的请求中使用$_COOKIE

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

如果你想同一个请求中使用$_COOKIE,然后好心值分配给它这样的: $_COOKIE["we"] = 2;

+0

我已更新我的问题。请看一下。 –

0

cookie值将在下一次刷新页面,你也没有指定的Cookie路径进行打印。

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

我已更新我的问题。请看一下。 –

相关问题