Сессия «исчезает» на некоторых машинах - PullRequest
0 голосов
/ 01 октября 2009

Я не совсем уверен, какой вопрос мне следует задавать. Извините!

Я работаю над переделкой своего веб-сайта, чтобы использовать PHP5. Сервер живет в подвале приятеля, и я просто захожу по ssh, чтобы написать код и просмотреть страницы, как и любую другую страницу.

Я отслеживаю данные для входа в $ _SESSION.

Когда я сижу за домашней машиной, я могу зайти на сайт, и все происходит так, как я ожидаю, с точки зрения СЕССИИ, доступной на всех страницах. Когда я вхожу на свою рабочую машину, я получаю успешный вход и вижу переменные SESSION, но как только я перехожу на другую страницу, SESSION пропадает, о чем свидетельствует session_id ().

Мой предыдущий веб-сайт, построенный на PHP4 (и настроенный так, чтобы PHP5 был доволен), не демонстрирует этого поведения, позволяя мне входить в систему в любом месте до и после перехода на PHP5.

Полагаю, я просто ищу ключ к тому, что исследовать дальше ... Из всех головоломок, с которыми я столкнулся, когда учил себя программировать, эта появляется на лице, просто сумасшедшая.

Ответы [ 5 ]

2 голосов
/ 01 октября 2009

Я думаю, что Джейк что-то думает о печенье. Убедитесь, что ваш браузер на работе настроен на прием файлов cookie с этого домена. Убедитесь, что нет антивируса / антивирусного ПО, которое отключило бы это. Я бы использовал fiddler , чтобы наблюдать за трафиком и заголовками на вашей рабочей машине и вашей домашней машине. Вы должны быть в состоянии быстро заметить разницу, поскольку это звучит как проблема клиента.

0 голосов
/ 01 октября 2009

Настройки в php.ini для session.auto_start одинаковы для обоих ini?

См. http://de3.php.net/manual/en/session.configuration.php#ini.session.auto-start

0 голосов
/ 01 октября 2009

Одним из способов решения этой проблемы может быть сохранение сеансов в базе данных.

Эта статья RichShed от Rich Smith - хорошее место для начала: Хранение сессий PHP в базе данных

Сессия больше не сохраняется в виде файла на сервере, а скорее как запись в БД, и должна решать любые проблемы с файлами cookie.

0 голосов
/ 01 октября 2009

Возможно, компьютер на работе не поддерживает сеансовые куки. Прошло много времени с тех пор, как я последний раз читал о сессиях PHP, но насколько я помню ...

  1. session_start () вызывается.
  2. php проверяет, отправил ли браузер файл cookie на сервер (необходимо указать уникальный идентификатор.
  3. если это так, то он проверяет сервер на наличие файла с именем идентификатора сеанса
  4. в случае успеха он анализирует файл и устанавливает переменные в массив $ _SESSION

Обратите внимание, что первым шагом этого процесса является фактическое начало сеанса с session_start(), который должен быть вызван до любого вывода вообще.

У вас есть session_start() до выхода?

0 голосов
/ 01 октября 2009

Используете ли вы session_start () в своих различных php-файлах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...