У меня есть страница / система входа в систему, которая работала корректно в течение многих лет, в результате чего пользователь вошел в систему, пока он или она не закрывает окно браузера или не выходит из системы вручную. Но в последнее время (начиная с вчера) после нескольких минут бездействия сеанс cookie / s, похоже, истекает, в результате чего пользователь автоматически выходит из системы.
Это происходит в разных браузерах и разных операционных системах, версия PHP – 5.6.29, которая недавно была изменена (до того, как она была 5.5 и даже 5.3).
Я создаю и обновляю сеанс на каждой странице с помощью session_start()
. Сначала скрипт входа в систему проверяет имя пользователя и PW, а также получает некоторые другие пользовательские данные из базы данных. Эти другие данные сначала сохраняются в переменных, а затем записываются в переменные сеанса, такие как
$_SESSION['username'] = $name; $_SESSION['usertype'] = $type;
Успешное состояние входа сохраняется следующим образом:
$_SESSION['login'] = "ok";
На других страницах я проверяю состояние входа следующим образом:
session_start(); if(($_SESSION['login'] != "ok") OR ($_SESSION['usertype'] != "xxx")) { header("Location: ../login.php"); /* redirects to login page if conditions are not true */ exit; }
Вход в систему работает, и зарегистрированные пользователи могут перейти на другие страницы, если это происходит более или менее постоянным образом, но если кто-то ждет несколько минут до процедуры (т.е. без какой-либо активности), он / она выйдет из системы ( т.е. перенаправляется на страницу входа при попытке открыть другую страницу).
Чтобы сделать его экстра-противным, в половину времени он работает так, как ожидалось, также через полчаса …
Любая помощь будет очень высоко ценится.
ОБНОВИТЬ:
Добавление ini_set('session.gc_maxlifetime', 3600');
и `ini_set ('session.cookie_lifetime', 3600); не помогло. Я снова удалил его.
После этого я просмотрел журналы ошибок и нашел это:
Ошибка ap_pass_brigade с ошибкой 103: программное обеспечение вызвало прерывание соединения
(проблема в том, что у меня нет доступа к настройкам сервера – это на общем веб-пространстве …)