Чтобы сессия работала, должны работать оба элемента:
Во-первых, браузер должен отправлять один и тот же файл cookie PHPSESSID
при каждом запросе. Идентификатор сеанса будет меняться от одного сеанса к другому, поэтому, если вы войдете завтра (или позже сегодня, или в другом браузере и т. Д.), Вы получите другой идентификатор, чем сейчас, но в течение одного сеанса идентификатор должен не меняется.
Во-вторых, сервер должен иметь возможность доступа к тем же файлам, связанным с этим идентификатором, при каждом запросе. По умолчанию PHP хранит эту информацию в каталоге /tmp/
. Если у вас есть доступ, вы можете даже ткнуть туда и посмотреть, что там хранится.
Первый вопрос проще всего проверить. Посмотрите, какие куки отправляются во время работы сеанса, а затем проверьте еще раз, когда сеанс перестал работать, и посмотрите, изменился ли PHPSESSID
. Наиболее вероятной причиной такого поведения могут быть плохо настроенные часы локального компьютера, неправильные настройки времени ожидания в сеансе и т. Д.
Второй вопрос немного сложнее. Если ваш браузер отправляет правильный файл cookie при каждом запросе, но PHP не может получить доступ к файлу с информацией об этом сеансе, проблема в сервере. Возможно, вы захотите сохранить свои сессии в базе данных (если вы все равно их используете), что легко сделать с помощью кода в руководстве по PHP .