Ответ 1
Смотрите значение 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
для данных сеанса, которые вы хотите сохранить дольше, чем значение по умолчанию. Поэтому ваш script может выглядеть так:
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();