Logout при закрытии браузера

Главные вкладки

Комментарии

Аватар пользователя Stan.Ezersky Stan.Ezersky 7 февраля 2011 в 1:42

"<a href="mailto:chilic@drupal.org">chilic@drupal.org</a>" wrote:
Стэн немного пергнул с модулем :)
Лучше дать ссылку на модуль, чем потом тебе будут потрахивать мозг, какие настройки сделать, что написать и т.п.-)

Аватар пользователя shamahn shamahn 7 февраля 2011 в 3:12

"Marvelby" wrote:
А как сделать, что бы при закрытии браузера происходил логаут?

а надо как-то дернуть скрипт который делает логаут. Что-то можно яваскриптом перехватить и аяксом дернуть (честно говоря не пробовал, но думаю, проблем не будет), но вот закрытие процесса-бровзера ОСа не отловишь. Бессмысленная это гонка за ушедшими юзерами и под пхп не реализовать 100%. Пусть юзер сам парится, что надо логаут делать уходя с рабочего места Smile

Аватар пользователя chilic chilic 7 февраля 2011 в 3:23

Ладно, хорош стебаться, пока не посоветовали очистку таблицы сессий по крону.

два пути модуль «Auto logout», либо setting.php line 160 переменная session.cache_expire
где указывается время жизни сессии, если 0, то сессия закрываться по закрытию браузера.

это если мне память не изменяет, а вообще сессия настраивается именно в setting.php там где ini_set()

Аватар пользователя shamahn shamahn 7 февраля 2011 в 13:30

"<a href="mailto:chilic@drupal.org">chilic@drupal.org</a>" wrote:
либо setting.php line 160 переменная session.cache_expire

http://www.php.net/manual/en/session.configuration.php#ini.session.cache...

Не хочется углубляться, информации по теме сесии пхп полно, но если в трех словах - соединение бровзер-сервер не поддерживается постоянно. Первый раз при создании сессии определяется идентификатор сессии, и последующие запросы бровзера к серверу сопровождаются добавлением идентификатора сессии к запросу. Учитывая это и ранее сказанное - нет у сервера возможности определить закрыл ли юзер бровзер, либо он тупо что-то делает на страничке (читает, смотрит и пр). Может быть есть способ заставить бровзер забывать сессию после закрытия, - но это персональное желание каждого пользователя юзать данный бровзер (мне бы такое не понравилось)

а по поводу - http://drupal.org/project/autologout . Ничего общего с убийством сессии при закрытии бровзера.

Повторюсь, только 2 способа для пхп: 0. Дернуть скрипт убивающий сессию; 1. Дождаться окончания времени жизни сессии

С уважением.

Аватар пользователя xxandeadxx xxandeadxx 7 февраля 2011 в 14:10

"shamahn" wrote:
нет у сервера возможности определить закрыл ли юзер бровзер, либо он тупо что-то делает на страничке

по наличию куки с идентификатором сессии. после закрытия браузера временные куки удаляются

Аватар пользователя shamahn shamahn 7 февраля 2011 в 14:52

"xxandeadxx" wrote:
временные куки

http://ru.php.net/manual/en/function.setcookie.php
параметр expire

в принципе, да. При авторизации писать в куку ключик с временем жизни 0. И проверять есть ли он в куках. Если нет - убивать авторизацию.
Но никаких противоречий с тем, что сервер понятия не имеет о том что бровзер закрылся Wink

Аватар пользователя shamahn shamahn 7 февраля 2011 в 15:15

"<a href="mailto:chilic@drupal.org">chilic@drupal.org</a>" wrote:
авторизация сама умрёт

тогда надо править
ini_set('session.cookie_lifetime', 200000); на 0
Но как-то стремно когда у сайта время жизни кук пока открыт бравзер Wink

Аватар пользователя izhhome izhhome 31 марта 2011 в 11:21

в setting.php прописал так:
ini_set('arg_separator.output', '&');
ini_set('magic_quotes_runtime', 0);
ini_set('magic_quotes_sybase', 0);
ini_set('session.cache_expire', 0);
ini_set('session.cache_limiter', 'none');
ini_set('session.cookie_lifetime', 0);
ini_set('session.gc_maxlifetime', 200000);
ini_set('session.save_handler', 'user');
ini_set('session.use_cookies', 1);
ini_set('session.use_only_cookies', 1);
ini_set('session.use_trans_sid', 0);
ini_set('url_rewriter.tags', '');

почемуто при закрытии не происходит logout
т.е. открываем заново браузер, а сессия уже с авторизованым пользователем.
почему?

надобыло куки почистить Smile
всё работает!