См. Значение php.ini
session.cookie_lifetime .
Значение по умолчанию 0
означает завершение сеанса при закрытии браузера.
Вы можетепереопределите это значение либо непосредственно в php.ini
, либо установите его в своем приложении перед началом сеанса, используя ini_set .Если для него задано значение, большее 0
, сеанс будет работать в течение этой продолжительности.
Например,
ini_set('session.cookie_lifetime', 60 * 60 * 24 * 7); // 7 day cookie lifetime
session_start();
В приведенном выше примере файл cookie сеанса будет установлен с истечением 7дней с момента начала сеанса.
Примечание: Если вы начнете сеанс для всех своих веб-страниц с одного и того же куска кода, это не будет продолжать продлевать срок действия сеанса каждый разsession_start()
вызывается.Срок действия файла cookie задается с момента первого запуска сеанса, а не для последующих запросов.Если вы хотите продлить срок действия сеанса на 7 дней от текущего времени, см. Также session_regenerate_id () .
Также обратите внимание: Если ваш Параметр session.gc_maxlifetime имеет значение, меньшее длины файла cookie сеанса, может возникнуть ситуация, когда пользователь не посещает сайт в течение 5 дней, а когда он возвращается, файл cookie сеанса больше не действует, так какданные на сервере были удалены.Чтобы исправить это, вы должны также установить время жизни для этих данных сеанса, по крайней мере, столько же, сколько и время жизни ваших файлов cookie.Как указано в руководстве, может потребоваться использовать пользовательский session.save_path
для данных сеанса, которые вы хотите сохранить дольше, чем по умолчанию.Поэтому ваш скрипт может выглядеть так:
ini_set('session.cookie_lifetime', 60 * 60 * 24 * 7);
ini_set('session.gc_maxlifetime', 60 * 60 * 24 * 7);
ini_set('session.save_path', '/home/yoursite/sessions');
session_start();