Иногда возникает ситуация, когда нужно продлить время жизни сессии на сайте.
При использовании сессий в PHP по умолчанию идентификатор сесии сохраняется в "куках" или "кукисах" - небольших блоков информации, которые хранятся на стороне клиента и имеет заданное время жизни. (в PHP куки доступны при помощи глобального массива $_COOKIES). Название идентификатора сессии - "PHPSESSID", но его можно изменить при помощи параметра session.name в файле php.ini.
Время жизни куки, которая хранит идентификатор сесии по умолчанию составляет 0 сек, т.е. кука храниться до того момента, как браузер будет закрыт. Это можно изменить при помощи параметра session.cookie_lifetime в файле php.ini.
PHP, как правило, хранит данные сессии в файлах. Для того, чтобы не засорять файловую систему периодически осуществляется очистка устаревших данных, garbage collection - уборка мусора. В файле php.ini существует параметр session.gc_maxlifetime который указывает время в секундах, по истечению которого все устаревшие данные будут удалены из файловой системы.
Допустим, мы хотим задать время жизни сесии - 3 часа. Для этого в файле php.ini устанавливаем следующие параметры:
session.gc_maxlifetime = 10800
session.cookie_lifetime = 10800
Если у вас нет возможности внести изменения в файл php.ini, то можно сделать установку этих параметров при помощи файла .htaccess. Для этого вносим в него следующие строки:
php_value session.gc_maxlifetime 10800
php_value session.cookie_lifetime 10800
Если ваш хостер запрещает вам использовать директиву php_value в файле .htacces или использовать .htaccess в целом - то пора менять хостера.
Кроме того, вы можете установить время жизни сессионной куки из PHP при помощи функции session_set_cookie_params. К примеру:
<?php
session_set_cookie_params(10800);
При этом нужно учитывать, что функциция set_cookie_params должна быть вызвана до того, как сессия будет открыта при помощи session_start.Функция set_cookie_params также позволяет установить путь, домен, настройки безопасности для сессионной куки.
Комментарии
Спасибо очень
23.10.2009 в 07:41 — ГостьСпасибо очень интересная статья. Только не на всех хостингах работать будет. [ссылка удалена администратором]
а как удалить
07.02.2010 в 23:24 — Гостьа как удалить PHPSESSID из куков?
Попробуйте войти на сайте [адрес удален администратором] и потом выйти. В куках остается этот PHPSESSID.
а как удалить
08.02.2010 в 13:41 — mityokа как удалить из людей желание на шару расставлять ссылки? тем более не имеющие никакого отношения к тематике статьи?
session_set_cookie_params(108
01.10.2009 в 08:30 — Гостьsession_set_cookie_params(10800);устанавливает только session.cookie_lifetime, тоесть maxlifetime останется дефолтным - 1440.
Ockonal
15.04.2009 в 13:33 — ГостьСпасибо, помогло очень.
Время жизни сесии
17.08.2009 в 18:39 — ГостьСпасибо, искал эту информацию.