Вопрос

В настоящее время в моем php-скрипте после входа в систему я сохранил session_login = 1. Но у меня проблема. У меня есть привычка использовать Firefox с несколькими вкладками (я полагаю, что большинство людей и все современные веб-браузеры имеют функцию нескольких вкладок). Я закрыл вкладку с сеансом, но не закрыл браузер. Через несколько часов я возвращаюсь на ту же страницу, где мне требуется войти, но это не так. Это не требует от меня повторной регистрации (я думаю, что это называется «Session»). Есть ли способ выйти из системы, если пользователь закроет вкладку, а не закроет браузер?

У меня есть 1 решение прямо сейчас, время простоя. Но у меня очень ограниченные знания о дате / времени в php, так что это будет последний вариант. Я хотел знать, есть ли что-то еще, что я могу сделать, кроме использования времени простоя?

Это было полезно?

Решение

PHP имеет простой способ установить, как долго будет длиться сессия до истечения времени ожидания:

session_set_cookie_params(3600); // make it expire after 1 hour

Просто укажите количество секунд, которое вы хотите, чтобы сеанс длился (в этом примере 1 час = 60 минут = 3600 секунд).

http://us2.php.net /manual/en/function.session-set-cookie-params.php

Другие советы

Файл cookie сеанса удаляется из браузера только тогда, когда сеанс браузера закрыт (т.е. когда браузер закрыт): отсюда и название. Если вы хотите, чтобы сеанс очищался вскоре после закрытия вкладки, вы можете установить очень короткое время истечения для файла cookie (около 5 минут) и сохранить его в базе данных. Затем установите на веб-странице функцию javascript, которая каждую минуту вызывает файл с вашего сервера: этот файл затем «обновляет». запись cookie / базы данных на следующие пять минут. Если они покинут ваш сайт более чем на пять минут, сеанс будет признан недействительным.

Вы также можете добавить Javascript & onot; onunload " функция, которая обнаруживает, закрыли ли они веб-страницу или перешли на другую страницу: вы могли бы добавить ловушку для вызова " destroycookie " функция - однако вам нужно будет убедиться, что они не просто перешли на другую страницу вашего сайта и не открыли две страницы вашего сайта в двух вкладках.

Я полагаю, что параметр, который вы ищете, - это параметр истечения срока действия файла cookie сеанса. Я не помню команду PHP для этого, но вы должны быть в состоянии установить срок действия куки при закрытии окна.

Вот документация по сеансу PHP: http: //us2.php. нетто / ручной / EN / book.session.php

Может быть, вы могли бы использовать session_write_close ()?

Есть комментарий к документации PHP для функции session_destroy, которая может быть вам полезна: http://us2.php.net/manual/en/function.session-destroy.php#71889

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top