没有取消设置 cookie 的方法有效

No method of un-setting cookies is working

我正在尝试 unset/delete/expire 注销页面上的 cookie。但是,它似乎没有用。我的注销脚本如下:

require_once("database.php"); // contains session_start()
$_SESSION = array();
session_destroy();

// attempts to unset cookies go here (see below)

var_dump($_SERVER['HTTP_COOKIE']);
header("Location: ./login.php");
exit();

我删除特定 cookie login(或全部)的三次尝试如下:

尝试 1:

setcookie("login", "", time() -3600, "/");

尝试 2:

$cookies = explode(";", $_SERVER['HTTP_COOKIE']);
foreach ($cookies as $cookie) {
    $parts = explode("=", $cookie);
    $name = trim($parts[0]);
    setcookie($name, "", time() -3600);
    setcookie($name, "", time() -3600, "/");
}

尝试 3:

unset($_COOKIE);

但是我的 var_dump() 仍然包含 cookie!

此外,您随后重定向到的页面 login.php 包含以下代码:

if (isset($_COOKIE['login'])) {
    echo "Still set."
}

低看,页面显示Still set.

首先从任何可用的 Cookie 工具或浏览器的开发者工具中删除所有 cookie。

对于整个网站域,始终将 COOKIES 写为“/”。当我们 set/unset cookie 时,路径起着重要作用。采用 setcookie($cookie_name, "$cookie_value", time() +3600, "/") 设置和 setcookie($cookie_name, "$cookie_value", time() -360000, "/") 取消设置 COOKIES。

在此处进一步阅读有关 COOKIES 路径的信息:http://www.w3schools.com/php/func_http_setcookie.asp

希望对你有帮助