首先
,您错误地实现了注销功能。如果您想删除所有 cookie(假设您的系统并不复杂,比如您不需要保留用户偏好,如主题、语言、UI 参数)
那么logout.php
应该类似于
<?php
//Will remove all cookies
if ( !empty($_COOKIE) ){
foreach($_COOKIE as $key){
//Set each key in past
setcookie($key, null, time() - 84600);
}
}
//Would destroy the session if it does exists
if ( !empty($_SESSION) ){
session_destroy();
}
//Don't forget to redirect back to home page
header('Location: /');
exit();
如果您 100% 确定 cookie 已设置,但setcookie()
没有删除它们,那么可能 99% 它们位于不同的路径上。
确保在设置/删除它们时,它们位于同一路径上。
setcookie()
接受第 4 个可选参数,称为path
.
<?php
//So when you set a cookie
setcookie('cookie_key', 'cookie_value', time() + some_lifetime_in_seconds, '/');
//And when you remove a cookie:
setcookie('cookie_key', '', time() - 86400, '/');
其次
,您不应该使用类似 AJAX 的注销功能。这是不明智的,有点浪费内存。
编码:
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
function logOut() {
$.get("logout.php");
location.Reload();
return false;
}
</script>
<a href="#" onclick="logOut();">Log Out</a>
应该改写为
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<a href="/logout.php">Log Out</a>