我的登出脚本遇到一些严重问题(90%的时间崩溃)
重要
该脚本必须从数据库和cookie中删除令牌(如果存在)(请记住我已设置),然后应取消设置
$_SESSION['user_id']
并同时重新加载页面
问题是有时它会在删除用户会话之前重新加载页面,并一直显示成员页面,直到我再次重新加载(我使用一个包含登录名和成员页面的索引文件,并用if($person->is_logged())
分隔]
例如:当我按下注销按钮时,有时它会从数据库中删除令牌而不会破坏用户会话,或者有时是相反的,但是主要的问题是它崩溃并同时显示成员和登录页面,直到我再次重新加载以仅显示正确的字符页面
这是ajax代码
$("#signout").click(function () {
var post_data = {
'type': 'sign_out'
}
$.post('processing/core/connect.php', post_data, function (data) {
window.location.reload();
});
});
然后是php连接文件:
if ($_POST['type'] == 'sign_out') {
$person->logout();
}
这是我的登出功能:
private $cookie_user_id = "c_user";
private $cookie_session_token = "xs";
public function logout()
{
global $database;
/* delete token from database */
$database->query("DELETE FROM `users_sessions` WHERE `session_token` = '{$_COOKIE[$this->cookie_session_token]}' AND `user_id` = '{$_COOKIE[$this->cookie_user_id]}'");
/* destroy the session */
unset($_SESSION['user_id']);
/* unset the cookies */
setcookie($this->cookie_user_id, null, -1, '/');
setcookie($this->cookie_session_token, null, -1, '/');
}
是否有任何好的做法可以强制100%退出而没有任何问题?