Codeigniter 3 уничтожить сессию в браузере закрыть - PullRequest
0 голосов
/ 31 августа 2018

Я знаю, что есть много вопросов о "Как уничтожить сеанс codeigniter при закрытии браузера". Но поверьте мне, никакое решение не работает над не совершенным решением, таким как вызов ajax-запроса для типа выгрузки окна.

Кто-то имеет идеальное решение для этого, у меня есть ниже конфигурация для сеанса в файле конфигурации.

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

К сожалению, ответ: Вы не можете сделать это так, как хотели бы.

Это связано с тем, что сервер не знает о внешнем действии закрытия браузера. Единственное место, где можно захватить это событие - это JavaScript, поэтому JS должен быть вашей отправной точкой.

Оттуда у вас может быть несколько вариантов, вы уже обсудили запрос AJAX, который является наиболее разумным. Вы также можете просто сбросить cookie сеанса из JS, однако это означает, что ваш сервер никогда не узнает, что произошло, он просто не увидит больше активности в этом сеансе, пока не истечет срок его действия.

Редактировать: также стоит отметить, что выгрузка происходит во многих ситуациях, закрытие вкладки, нажатие кнопки «Назад» и т. Д. Таким образом, реализация может быть сложной и при этом ненадежной.

Редактировать 2: Вы могли бы быть действительно продуманными и настроить веб-сокеты на каждой странице, чтобы отслеживать общее количество страниц, открытых на пользователя, когда окно выгружено и у вас есть только одно соединение, которое, вероятно, является концом сессия.

0 голосов
/ 05 сентября 2018

Set $ ​​config ['sess_expire_on_close'] = TRUE; Я надеюсь, что это будет работать

0 голосов
/ 31 августа 2018

Попробуйте установить $ config ['sess_expire_on_close'] = TRUE;

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