Как выйти из системы в php? - PullRequest
       47

Как выйти из системы в php?

2 голосов
/ 03 августа 2009

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

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

Ответы [ 5 ]

2 голосов
/ 03 августа 2009

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

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

2 голосов
/ 03 августа 2009

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

0 голосов
/ 03 августа 2009

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

0 голосов
/ 03 августа 2009

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

0 голосов
/ 03 августа 2009

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

Вот документация сессии PHP: http://us2.php.net/manual/en/book.session.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...