Я довольно запутался в управлении сеансами. Я использую PHP, и когда пользователь нажимает кнопку входа в систему, я вызываю session_start()
как первую строку в моем скрипте. Результатом этого является файл cookie на клиенте PHPSESSID с уникальным значением. Кажется, это работает так, как я ожидал.
Там, где я запутался, это процесс выхода из системы. Когда пользователь нажимает "выйти из системы", я call session_unset();
а затем session_destroy();
, Мое предположение заключается в том, что это должно очистить cookie, но это не так. Даже когда я закрываю вкладку в браузере, когда я возвращаюсь на сайт с помощью новой вкладки, этот старый файл cookie все еще присутствует вместе со значением старого идентификатора сеанса. Это означает, что идентификатор сеанса повторно используется от одного сеанса к следующему (и за его пределами). Даже когда я снова запускаю процесс регистрации, идентификатор сеанса остается неизменным. Это не может быть правильно, не так ли?
В отчаянной попытке я попытался использовать эту функцию, чтобы очистить файл cookie, но, похоже, ничего не выполняет:
// destroy the cookies
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
Я просто не понимаю, как этот процесс работает? Или я делаю что-то неправильно (или и то, и другое!). Спасибо за любые советы или рекомендации.
Вы также должны начать сеанс (session_start
) на странице выхода. Вы сделали это?
Вам также необходимо отключить переменные сеанса и убить файлы cookie:
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
$params = session_get_cookie_params();
setcookie(session_name(), '', 1, $params['path'], $params['domain'],
$params['secure'], isset($params['httponly']));
}
Этот вопрос был дан ответ подробно здесь.
это может помочь вам
session_start();
if (isset($_COOKIE['remember_user'])) {
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
return true;
} else {
return false;
}
session_destroy();
header('Location:');
exit;
session_start
) на странице выхода из системы .. Вы это сделали?