А как сделать, что бы при закрытии браузера происходил логаут?
а надо как-то дернуть скрипт который делает логаут. Что-то можно яваскриптом перехватить и аяксом дернуть (честно говоря не пробовал, но думаю, проблем не будет), но вот закрытие процесса-бровзера ОСа не отловишь. Бессмысленная это гонка за ушедшими юзерами и под пхп не реализовать 100%. Пусть юзер сам парится, что надо логаут делать уходя с рабочего места
Ладно, хорош стебаться, пока не посоветовали очистку таблицы сессий по крону.
два пути модуль «Auto logout», либо setting.php line 160 переменная session.cache_expire
где указывается время жизни сессии, если 0, то сессия закрываться по закрытию браузера.
это если мне память не изменяет, а вообще сессия настраивается именно в setting.php там где ini_set()
Не хочется углубляться, информации по теме сесии пхп полно, но если в трех словах - соединение бровзер-сервер не поддерживается постоянно. Первый раз при создании сессии определяется идентификатор сессии, и последующие запросы бровзера к серверу сопровождаются добавлением идентификатора сессии к запросу. Учитывая это и ранее сказанное - нет у сервера возможности определить закрыл ли юзер бровзер, либо он тупо что-то делает на страничке (читает, смотрит и пр). Может быть есть способ заставить бровзер забывать сессию после закрытия, - но это персональное желание каждого пользователя юзать данный бровзер (мне бы такое не понравилось)
в принципе, да. При авторизации писать в куку ключик с временем жизни 0. И проверять есть ли он в куках. Если нет - убивать авторизацию.
Но никаких противоречий с тем, что сервер понятия не имеет о том что бровзер закрылся
почемуто при закрытии не происходит logout
т.е. открываем заново браузер, а сессия уже с авторизованым пользователем.
почему?
надобыло куки почистить
всё работает!
Комментарии
Ищите модуль, типа «Auto logout»
Стэн немного пергнул с модулем
setting.php line 160
переменная session.cache_expire
Спасибо! А как сделать, что бы при закрытии браузера происходил логаут?
Стэн прав:)
а надо как-то дернуть скрипт который делает логаут. Что-то можно яваскриптом перехватить и аяксом дернуть (честно говоря не пробовал, но думаю, проблем не будет), но вот закрытие процесса-бровзера ОСа не отловишь. Бессмысленная это гонка за ушедшими юзерами и под пхп не реализовать 100%. Пусть юзер сам парится, что надо логаут делать уходя с рабочего места
Ладно, хорош стебаться, пока не посоветовали очистку таблицы сессий по крону.
два пути модуль «Auto logout», либо setting.php line 160 переменная session.cache_expire
где указывается время жизни сессии, если 0, то сессия закрываться по закрытию браузера.
это если мне память не изменяет, а вообще сессия настраивается именно в setting.php там где ini_set()
Всем большое спасибо
http://www.php.net/manual/en/session.configuration.php#ini.session.cache...
Не хочется углубляться, информации по теме сесии пхп полно, но если в трех словах - соединение бровзер-сервер не поддерживается постоянно. Первый раз при создании сессии определяется идентификатор сессии, и последующие запросы бровзера к серверу сопровождаются добавлением идентификатора сессии к запросу. Учитывая это и ранее сказанное - нет у сервера возможности определить закрыл ли юзер бровзер, либо он тупо что-то делает на страничке (читает, смотрит и пр). Может быть есть способ заставить бровзер забывать сессию после закрытия, - но это персональное желание каждого пользователя юзать данный бровзер (мне бы такое не понравилось)
а по поводу - http://drupal.org/project/autologout . Ничего общего с убийством сессии при закрытии бровзера.
Повторюсь, только 2 способа для пхп: 0. Дернуть скрипт убивающий сессию; 1. Дождаться окончания времени жизни сессии
С уважением.
Шаман, а ты умный, да
по наличию куки с идентификатором сессии. после закрытия браузера временные куки удаляются
http://ru.php.net/manual/en/function.setcookie.php
параметр expire
в принципе, да. При авторизации писать в куку ключик с временем жизни 0. И проверять есть ли он в куках. Если нет - убивать авторизацию.
Но никаких противоречий с тем, что сервер понятия не имеет о том что бровзер закрылся
авторизация сама умрёт если нет куки, т.к. ниже стоит параметр 1 в переменной session.use_only_cookies
onBeforeUnload модуль?
он реализует обработку нестандартного одноименного javascript события.
тогда надо править
ini_set('session.cookie_lifetime', 200000); на 0
Но как-то стремно когда у сайта время жизни кук пока открыт бравзер
в 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т.е. открываем заново браузер, а сессия уже с авторизованым пользователем.
почему?
надобыло куки почистить
всё работает!