Я использую функцию входа на моем сайте с сеансом. Этот сеанс моей работы истек через несколько минут, независимо от того, что пользователь вышел из системы или нет. Теперь то, что я хочу, – это то, что сеанс должен истекать только тогда, когда пользователь выходит из системы. Если пользователь не выйдет из своей учетной записи, а затем возвращается через 2-3 дня, тогда он должен появиться вошедшим в систему.
Я нашел несколько примеров, в которых они сократили время окончания сеанса, но я хочу, чтобы он истекал только на событие выхода из системы пользователем, независимо от времени, которое он взял, чтобы выйти из системы.
Как мне это сделать??
Редактировать:
session_cache_expire(0); session_start();
это способ записи?
В этой ситуации часто используется решение:
Сюда :
И у вас есть преимущество «никогда не быть отлученным», по крайней мере, с точки зрения пользователя.
Также обратите внимание, что при «обычных» сеансах куки-файлы, содержащие идентификатор сеанса, будут удалены, когда пользователь закроет свой браузер, – поэтому он будет отключен, независимо от того, как долго будет длиться сеанс.
С предлагаемым мной решением вы сами определяете, как долго cookie должен оставаться на компьютере пользователя 😉
Это означает, однако, что когда пользователь вручную выйдет из системы, вы должны, конечно же, удалить его сессию и файл cookie, чтобы он не был автоматически перезагружен автоматически.
Конечно, вы должны быть осторожны с тем, что вы установили в cookie: cookie не совсем безопасен, поэтому не храните в нем пароль, например 😉
На самом деле, этот способ делать вещи – это то, как часто работает функция «запомнить меня»; кроме, здесь, вашим пользователям не нужно будет устанавливать флажок, чтобы активировать «запомнить меня» 😉
Если у вас нет времени на разработку такого рода материалов, довольно быстрый и грязный способ заключается в использовании какого-либо запроса Ajax на всех ваших страницах, который будет просто «пинговать» страницу PHP на сервере – это будет поддерживать сеанс активен (но это не совсем хороший способ сделать вещи: у вас все еще будет много сеансов на сервере, у вас будет много бесполезного запроса … и он будет работать только до тех пор, пока пользователь не будет закрыть его браузер).
Вы не можете сделать это только с помощью внутренней обработки PHP. PHP всегда будет отправлять идентификатор сеанса в сеансовом cookie, который истекает, когда пользователь закрывает свой браузер. Чтобы получить какой-то автозапуск, вам понадобится сопроводительный код, который устанавливает более длительный файл cookie в браузере пользователя и обрабатывает распознавание этих файлов cookie и сопоставление между значением cookie и соответствующей учетной записью пользователя.
Обратите внимание, что это сильно влияет на проблемы безопасности, поэтому вам придется позаботиться о многом. Прочитайте следующее о том, как может работать функция автоматического входа:
Вы удаляете свои файлы cookie во время тестирования? Включены ли файлы cookie? Вы чем-то скучаете по сессии в своем коде?
Также см. Мой ответ на другой пост: Быстрый вопрос о сеансах в PHP, в котором объясняется, как оставаться в системе. Просто не делайте задачу cronjob / sheduled, если вы хотите, чтобы пользователь оставался навсегда.