0

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

为了进行测试,我在第一页上有链接和一些 cookie 设置,如下所示:

<?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,或者重新获取该页面?

4

2 回答 2

2

这取决于您要执行的操作。如果您依赖于客户端上的 cookie ,那么您可能需要使用客户端 (JavaScript) 取消设置它。如果依赖关系在服务器上,那么很难知道您的问题是什么,因为您可以在“取消设置”它之后编写代码的第二部分以不依赖于 cookie。

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

if (isset($_COOKIE['user_id'])) {
    setcookie(/* your params */);
    header('Refresh: ' . $_SERVER['REQUEST_URI']);
    exit;
}
于 2013-02-24T15:20:47.553 回答
-1

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

setcookie("user_id", "");

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

于 2013-02-24T15:22:04.043 回答