Идентификатор Сессии PHP изменяется между страницами

У меня есть проблема, где я проигрываю сессию PHP между 2 страницами.

session_start () включен в файл, названный сессией-inc.php в каждую страницу, требующую, чтобы сессия была установлена. Это работает на все страницы на сайте кроме одной конкретной страницы, участника-profile.php. Когда эту страницу посещают, новая сессия с другим идентификатором (то же имя сессии) устанавливается и используется вместо этого.

Еще несколько деталей:

  • Имя сессии определяется вручную
  • Все страницы находятся на том же сервере под тем же доменным именем
  • Если я поместил дополнительный session_start () выше включать ('сессия-inc.php') в членском-profile.php файле, сессия перенесена правильно
  • Я попытался установить session_cookie_domain и сессию session_name в .htaccess, это работало на этот домен, но это остановило сессию, передаваемую к платежному домену
  • Мы выполняем апачские 2.2.6 с php 5.2.5

Помещение session_start () выше включать ('сессия-inc.php') в членском-profile.php файле является быстрой и грязной фиксацией для этой проблемы, но я задаюсь вопросом, знает ли кто-либо, почему это произошло бы.

Удачи

Будет

11
задан hakre 18 July 2012 в 18:41
поделиться

3 ответа

Согласно документации PHP, SESSIC_START должны быть вызваны до того, как любой вывод отправляется обратно в браузер - может ли эта страница иметь мошеннический CR / LF, Unicode Byte-One Марк или аналогичный, который вызывает вывод перед вами , включают («Session-inc.php») ?

7
ответ дан 3 December 2019 в 09:41
поделиться

Обнаружена проблема

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

0
ответ дан 3 December 2019 в 09:41
поделиться

При переносе устаревшего сайта с PHP4 на PHP5 я заметил Параметр конфигурации php.ini, который заставляет php автоматически запускать сеанс при каждом запросе. Это альтернатива размещению session_start () на каждой странице ...

Есть несколько способов включить этот параметр:

Поместите следующую строку в php.ini:

session.auto_start = on

или поместите это в конфигурацию виртуального сайта apache или в файл .htaccess:

<IfModule mod_php5.c>
  php_flag session.auto_start on
</IfModule>

, и это должно сделать изменения $ _SESSION доступными на всех страницах

3
ответ дан 3 December 2019 в 09:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: