Предисловие: это «развитие» от an earlier question шахты, чьи ответы не решить мою проблему, в конце концов. Но через пробуя все предложения, а также пытаются другие вещи, я обнаружил, что реальная проблема заключается в чем-то еще, так что я перефразирую свой вопрос здесь
У меня Войти страницу/система, которая работала правильно в течение многих лет, в результате чего пользователь вошел в систему до тех пор, пока он не закрывает окно браузера или не выйдет из системы вручную. Но в последнее время после нескольких минут бездействия сеанс 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;
}
Логин работа, и зарегистрированные пользователи могут перейдите на другие страницы в течение некоторого времени, но через некоторое время (сильно отличается) он/она, кажется, вышел из системы (т.е. перенаправляется на страницу входа при попытке открыть другую страницу).
Затем я заметил (в инструментах разработчика), что файл cookie сессии ID сохранял то же значение после того, как сеанс, похоже, истек (о чем я думал, поскольку переменные сеанса исчезли). Но сессия не закончилась, только исчезли переменные сеанса. В моих тестах я попытался повторить некоторые из этих переменных на некоторых страницах, и случайно случайно обнаружил, что после того, как они уже исчезли (нет эхо-выхода), снова появился через несколько минут, когда я перезагрузил страницу или перешел на другую страницу.
Теперь вот где я застрял в данный момент: как это может произойти, и особенно: что я могу сделать, чтобы эти переменные не играли в прятки?
(кстати, у меня нет доступа к настройкам сервера - это на общедоступном вебпространства ...)
Если версии php были изменены, проверьте, были ли изменены и изменены ли параметры жизни cookie сеанса. Это все, что я могу получить от этого. Что показывает 'phpinfo()'? –
Проверьте настройки php.ini, такие как @ Fred-ii-, но также, и я знаю, что это звучит глупо, проверьте свой код на '$ _SESSION [.....] = ....' когда вы действительно имели в виду ' $ _SESSION [.....] == .... 'Очень часто пропущенная опечатка. – Chris
Является ли это единственным сервером или несколькими серверами за балансировщиком нагрузки? ;) –