我正在用以下代码设置cookie:(admin.php)
if ($_POST['stayLoggedIn'] == '1') {
setcookie("id", $row['id'], time() + 60*60*24*365);
}
header("Location: addtip.php");
我不能让cookie取消设置,我已经搜索了网站,下面的代码应该是正确的,但它不工作(管理.php)
if (array_key_exists("logout", $_GET)) {
unset($_SESSION);
setcookie("id", "", time()-60*60);
$_COOKIE["id"] = "";
}
在“loggedinpage”上使用以下代码测试cookie,如果cookie被取消设置,它将返回到管理登录页(addtip.php)
session_start();
if (array_key_exists("id", $_COOKIE)) {
$_SESSION['id'] = $_COOKIE['id'];
}
if (array_key_exists("id", $_SESSION)) {
echo "<a href='admin.php?logout' class='btn btn-danger btn-logout'>Log Out</a>";
} else {
header("Location: admin.php");
}
1条答案
按热度按时间hgqdbh6s1#
问题是你没有清除
$_COOKIE['id']
值正确。您正在将其设置为空字符串。这个想法是正确的,但你必须使用unset()
从$_COOKIE
数组。如果你不这么做if()
条件array_key_exists("id", $_COOKIE)
将导致true
即使它没有任何可用的价值。设置$_SESSION['id']
使用空字符串也会使if()
条件array_key_exists("id", $_SESSION)
导致true
也。因此,您将获得注销链接。不确定是否
unset($_SESSION);
是正确的做法,你可能想用session_destroy();
相反/另外。