Срок действия файлов cookie сеанса истекает при закрытии браузера? - PullRequest
1 голос
/ 06 октября 2010

У меня есть PHP-приложение, в котором я устанавливаю $_SESSION['user']="logged" после аутентификации пользователя.Я называю это loginpage.php.

После аутентификации и установки переменной сеанса пользователь перенаправляется на страницу участника, которая начинается со строк:

<?php
session_set_cookie_params(0,'/');
session_start();
if($_SESSION['user'] != 'logged') {
header ("Location:loginpage.php");
}?>

Когда пользователь вошел в систему, закрывает браузер и затем посещает страницу участников, я ожидаю, что он будет перенаправлен на loginpage.php.

Однако этого не происходит.Сеансовый файл cookie все еще находится в браузере - я проверял его с помощью Firefox.

Может ли кто-нибудь объяснить мне, где я неправильно его понимаю?

Ответы [ 4 ]

3 голосов
/ 29 июня 2015

Приведенные выше ответы, включая принятый, неверны.

Срок действия файлов cookie сеанса не истекает при закрытии браузера из-за некоторых дизайнерских решений , принятых известными разработчиками браузера.

По сути, файлы cookie с истекшим сроком действия мешают текущему поведению браузера, когда браузер загружает обновления и затем запрашивает перезапуск.Пользователь после таких обновлений перезапускает браузеры и хочет испытать как можно меньше сбоев.Однако сохранение исходного поведения файлов cookie сеанса мгновенно удалит ряд файлов cookie во время обновления браузера => перезапустить процесс и нарушит работу пользователя.Поэтому проектные решения были приняты таким образом, чтобы теперь поведение по умолчанию было , а не , чтобы очистить куки сессии.Опытные пользователи, которые хотят вернуться к исходному поведению, обычно должны включить определенные параметры обратной совместимости или явные параметры очистки cookie.

3 голосов
/ 06 октября 2010

Файл cookie должен быть удален, потому что вы установили его время жизни равным 0.

Возможно, процесс firefox все еще запущен, взгляните на менеджер задач.

1 голос
/ 06 октября 2010

Также вы должны прекратить работу скрипта после заголовка ('Location:'), в противном случае он просто продолжит работу и выдаст «защищенную» страницу клиенту (или, если вам повезет, веб-серверу, который, надеюсь, проигнорирует его)) все равно и потребляет ресурсы.

0 голосов
/ 06 октября 2010

Смотрите здесь .

"Метка времени истечения установлена ​​относительно времени сервера, которое не обязательно совпадает со временем в браузере клиента."

Возможно, это ... не знаю.

...