В этой ситуации часто используется решение:
- имеет не слишком большую продолжительность сеанса: он истекает, если пользователь не активен (это просто так, и это лучше для вашего сервера, если у вас много пользователей)
- когда пользователь входит в систему, вы устанавливаете cookie, который содержит то, что необходимо для его распознавания
- если он возвращается на сайт (с файлом cookie и без активного сеанса), вы используете информацию, содержащуюся в этом файле cookie, для автоматического входа в него и одновременного повторного создания сеанса.
Таким образом:
- у вас нет тысяч «активных» сеансов без уважительной причины.
- Вы придерживаетесь стандартного способа работы сессий
И у вас есть преимущество «никогда не выходить из системы», по крайней мере, с точки зрения пользователя.
Также обратите внимание, что в «обычных» сеансах cookie, содержащий идентификатор сеанса, будет удален, когда пользователь закроет свой браузер, поэтому он будет отключен, независимо от того, как долго будет длиться сеанс.
С предложенным мною решением вы сами определяете, как долго куки должны оставаться на компьютере пользователя; -)
Это означает, однако, что когда пользователь выходит из системы вручную, вы, конечно же, должны удалить и его сеанс, и cookie - так что он не сразу повторно войдет в систему.
Конечно, вы должны быть осторожны с тем, что вы установили в куки: куки не совсем безопасны, поэтому, например, не храните в них пароль; -)
На самом деле, этот способ работы - это то, как часто работает функция «помни меня»; за исключением того, что здесь ваши пользователи не должны будут ставить флажок, чтобы активировать "запомнить меня"; -)
Если у вас нет времени на разработку такого рода вещей, довольно быстрый и грязный способ - это использовать какой-либо Ajax-запрос на всех ваших страницах, который просто «пингует» страницу PHP на сервере - это сохранит сеанс активен (но это не совсем хороший способ сделать что-то: у вас по-прежнему будет много сеансов на сервере, у вас будет много бесполезных запросов ... и это будет работать только до тех пор, пока пользователь этого не сделает закройте его браузер).