Прерывистые сессии - PullRequest
       4

Прерывистые сессии

0 голосов
/ 03 июня 2010

У меня есть сайт, который я развертываю, и у меня возникла проблема. Я тестировал свой код в подкаталоге пакета хостинга моих клиентов, и все выглядело нормально. Однако я переместил папки / файлы в корень сайта, и теперь я периодически теряю все данные сеанса.

Я посмотрел с LiveHeaders в Firefox, и эти куки установлены:

    Cookie: __utma=196298984.443251570.1275554915.1275554915.1275557276.2;
 __utmz=196298984.1275554915.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none);
 __utmb=196298984.188.10.1275557276; PHPSESSID=3f5a363de3b7ec6084c7fdf90bec78a8; 
__utmc=196298984 

и

    Cookie: __utma=196298984.443251570.1275554915.1275554915.1275557276.2; _utmz=196298984.1275554915.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); 
__utmb=196298984.189.10.1275557276; PHPSESSID=3f5a363de3b7ec6084c7fdf90bec78a8; 
__utmc=196298984

Я ни в коем случае не эксперт по заголовкам, поэтому, если вам нужна другая информация, я смогу ее получить.

Ответы [ 2 ]

0 голосов
/ 03 июня 2010

Несколько вещей, которые приходят мне в голову:

1: Убедитесь, что, если ваша сессия создается на www.abc.com, тогда весь просмотр происходит именно в этом домене, если некоторые страницыотправка на abc.com вместо www.abc.com может вызвать проблемы с сеансом / файлом cookie.

2: также убедитесь, что инструкция session_start доступна поверх ВСЕХ страниц.

0 голосов
/ 03 июня 2010

Чтобы сессия работала, должны работать оба элемента:

Во-первых, браузер должен отправлять один и тот же файл cookie PHPSESSID при каждом запросе. Идентификатор сеанса будет меняться от одного сеанса к другому, поэтому, если вы войдете завтра (или позже сегодня, или в другом браузере и т. Д.), Вы получите другой идентификатор, чем сейчас, но в течение одного сеанса идентификатор должен не меняется.

Во-вторых, сервер должен иметь возможность доступа к тем же файлам, связанным с этим идентификатором, при каждом запросе. По умолчанию PHP хранит эту информацию в каталоге /tmp/. Если у вас есть доступ, вы можете даже ткнуть туда и посмотреть, что там хранится.

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

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

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