Как очистить сессионный cookie

0

Я довольно запутался в управлении сеансами. Я использую 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";
}

Я просто не понимаю, как этот процесс работает? Или я делаю что-то неправильно (или и то, и другое!). Спасибо за любые советы или рекомендации.

  • 0
    Вы также должны начать сеанс ( session_start ) на странице выхода из системы .. Вы это сделали?
  • 0
    cookie должен быть уничтожен путем установки cookie в предыдущий раз.
Показать ещё 2 комментария
Теги:
cookies
session

3 ответа

0
Лучший ответ

Вы также должны начать сеанс (session_start) на странице выхода. Вы сделали это?

  • 0
    Это было моей непосредственной проблемой. Спасибо!
  • 0
    Добро пожаловать :) Хорошего дня ...
1

Вам также необходимо отключить переменные сеанса и убить файлы 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']));
}

Этот вопрос был дан ответ подробно здесь.

  • 0
    Это полезный пост. Спасибо!
1

это может помочь вам

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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню