В настоящее время я использую 24-часовой сеанс, чтобы пользователи оставались в системе, если они переходят на другую страницу сайта через 30 минут после начала сеанса, то сеанс будет регенерирован для продления времени окончания сеанса () + 24 часа.
Я использую php.ini, чтобы убедиться, что используются только сеансы cookie, и изменил время сохранения по умолчанию чуть более чем на 24 часа:
session.gc_maxlifetime = 90000
session.cookie_lifetime = 90000
session.use_trans_sid = 0
session.use_only_cookies = 1
Я использую следующее длявремя сеанса:
session_save_path("/home/user/sessions");
session_set_cookie_params("86400", "/");
session_name("auth");
session_start();
но в данный момент мои сеансы, похоже, теряются в течение первого часа.Файл cookie auth
все еще существует, но, похоже, он не ссылается на информацию, которая была сохранена во время сеанса:
$_SESSION['userId'] = $row[0];
$_SESSION['created'] = time();
Это заставляет меня думать, что часть регенерации каким-то образом неверна?
Для регенерации cookie через 30 минут я использую:
if($_SESSION['created'] + 30 * 60 < time())
{
session_regenerate_id();
$_SESSION['created'] = time();
}
Нужен ли в вышеприведенном коде какой-либо способ сохранить идентификатор сеанса после регенерации?
Нравится:
$sid = session_id();
session_regenerate_id();
session_id($sid);
session_start();
или это не обязательно?Существуют ли другие причины, по которым мои сеансы могут быть потеряны / перепутаны?