У меня возникли серьезные проблемы с моим сценарием выхода из системы (это происходит sh 90% времени)
Важно
сценарий должен удалить токен из базы данных и куки, если они существуют (помните меня isset), а затем они должны сбросить $_SESSION['user_id']
и одновременно перезагрузить страницу
Проблема в том, что иногда она перезагружает страницу перед удалением пользовательского сеанса и сохраняет показ страницы участника, пока я не перезагружаюсь (я использую один индексный файл, который содержит логин и страницу участника, разделенные if($person->is_logged())
)
например: когда я нажимаю кнопку выхода из системы, иногда он удаляет токен из базы данных, не уничтожая пользователя сеанс или иногда его противоположность, но главная проблема в том, что он обрабатывает sh и показывает как страницу участника, так и страницу входа в систему, пока я не перезагружаюсь, чтобы показать только правильную страницу
это 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, '/');
}
Любая хорошая практика ces заставить 100% выйти из системы без проблем?