没有取消设置cookie的方法

时间:2015-03-19 13:22:13

标签: php cookies

我正在尝试在注销页面上取消设置/删除/过期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(或所有Cookie),如下所示:

尝试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.

1 个答案:

答案 0 :(得分:1)

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

始终将COOKIES写为关于整个网站域的'/'。当我们设置/取消设置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

希望它可以帮到你