Продление времени жизни сессии в PHP
Если Вы уже более-менее хорошо ориентируетесь в PHP, то знаете, какая разница между чистыми cookie и сессиями. И Вы должны знать, что время жизни сессии ограничено. Однако, это бывает не всегда удобно. И в этой статье я расскажу о том, как продлить время жизни сессии в PHP.
Для чего требуется продливать время жизни сессии в PHP? Самый частая причина - это продлить время жизни авторизации пользователя, которая построена на сессиях. Как правило, по умолчанию, сессия хранится 15 минут. Соответственно, через 15 минут бездействия пользователя, он автоматически выходит из системы, и ему приходится авторизовываться заново.
Самый простой вариант продлить сессию - это изменить файл php.ini (переменная session.gc_maxlifetime), однако, едва ли у Вас имеется такая возможность (если, конечно, Вы не хозяин сервера). Поэтому самым лучшим вариантом будет добавить в файл .htaccess такую строку:
php_value session.gc_maxlifetime 3600
Здесь мы изменили значение переменной session.gc_maxlifetime на 3600 секунд. Теперь у нас сессия будет храниться ровно 1 час. Если Вы поставите 0, то сессия будет храниться неограниченное время, что я крайне не рекомендую Вам делать, разве что только на локальном сервере. Так как это удобно при создании и отладке сайта.
Но не забывайте, что все файлы сессии хранятся на сервере. В результате, их может накопиться такое количество, что уже просто не хватит места (конечно, при условии большой посещаемости). Вдобавок, не забывайте: чем меньше время жизни сессии - тем выше безопасность.
Ещё один момент. Некоторые хостинг-провайдеры запрещают управлять файлом .htaccess. Если так, то меняйте хостера, потому что любой уважающий себя хостинг-провайдер позволяет изменять .htaccess.
Теперь Вы знаете, как снять ограничение на время жизни сессии в PHP и надеюсь, что Ваш сайт станет таким образом гораздо удобнее и для Вас, и для Ваших пользователей.
-
- Михаил Русаков
Комментарии (3):
Я на одном форуме несколько месяцев не появлялся, но система меня узнала при открытии сайта. Это значит, что у них на сервере значение session.gc_maxlifetime равно 0 ? И, я так понимаю, это связано с определенным риском для форума?
Ответить
И еще вопросик. Михаил, а какое оптимальное время сессии ты бы порекомендовал (скажем, для сайта наподобие твоего)? Заранее спасибо.
Ответить
Всё, я уже нашел ответ в статье о разнице между сессиями и cookie. Раньше ее не заметил. Еще раз спасибо большое!
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.