2013-02-24 68 views
0

我在一页上设置了一个cookie,并试图在下一页上取消设置,我通过链接到达该页面。但是,当我刷新第二页F5时,cookie只会被取消设置。html总是从链接获取新页面

为了测试,我有这样的第一页上的链接和一些饼干设置:

<?php 
include("connect-db.php"); 
$id = "newuser"; 
setcookie("user_id", $id, time() + 31536000); 

if (isset($_COOKIE["user_id"])) 
    echo "Welcome " . $_COOKIE["user_id"] . "!<br>"; 
else 
    echo "Welcome guest!<br>"; 
?> 
<br> 
<a href='next.php'>Next</a> 

在接下来的页面我有这样的PHP代码:

<?php 
header("Cache-Control: no-cache, must-revalidate, max-age=0"); // HTTP/1.1 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
header('Pragma: no-cache'); 

setcookie("user_id", "", time()-(60*60*24), "/"); 
echo "<br /> Welcome " . $_COOKIE["user_id"] . "!<br>"; 
?> 

我怎样才能让确定cookie在第二页上未被设置,或者页面被重新获取?

+0

Cookie与其余的php头一起发送,所以客户端在请求完成之前不会得到它们。 'setcookie'只是设置标题;它不会将它发送给客户端。 – 2013-02-24 15:15:44

+0

创建另一个页面,只显示饼干,并加载每一页后尝试检查与该页面的cookie。你的代码似乎没问题。 – Boynux 2013-02-24 15:19:56

回答

2

这取决于你正在尝试做什么。如果您对客户端上的cookie有依赖性,那么您可能需要使用客户端(JavaScript)取消设置。如果依赖关系位于服务器上,那么很难知道你的问题是什么,因为你可以在代码的第二部分写出第二部分,以便在“取消”之后不依赖于cookie。

我不完全推荐这个,因为它是一个额外的页面加载可能不是必要的,但你也可以强制发送标题。

if (isset($_COOKIE['user_id'])) { 
    setcookie(/* your params */); 
    header('Refresh: ' . $_SERVER['REQUEST_URI']); 
    exit; 
} 
+0

缺少a)。但无论如何,它不工作!我想我会尝试客户端然后! – user961627 2013-02-24 18:41:48

-1

您可以尝试使用下面的代码在第二页

的setcookie( “USER_ID”, “”);

我希望你能解决你的问题。