我正在尝试在注销页面上取消设置/删除/过期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.
答案 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
希望它可以帮到你