У меня проблема, когда я теряю сессию PHP между 2 страницами.
Session_start () включен в файл с именем session-inc.php на каждую страницу, требующую установки сеанса. Это работает для всех страниц сайта, кроме одной конкретной страницы, member-profile.php. Когда эта страница посещается, вместо нее устанавливается и используется новый сеанс с другим идентификатором (то же имя сеанса).
Еще несколько деталей:
Включение session_start () над include ('session-inc.php') в файле member-profile.php – это быстрое и грязное исправление для этой проблемы, но мне интересно, знаете ли кто-нибудь, почему это происходит.
ура
Будет
Согласно документации PHP, session_start
должен быть вызван до того, как какой-либо вывод будет отправлен обратно в браузер. Может ли эта страница иметь маркировку байтов CR / LF, Unicode или аналогичную, которая вызывает вывод перед include('session-inc.php')
?
При переносе устаревшего сайта с 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 доступными на всех страницах
Я только что столкнулся с этой проблемой. Интересно, что просмотр через http://127.0.0.1
вместо http://localhost
помог мне.
Нашел вопрос
В начале основного файла отмечен знак байтового заказа, включающий файл второго домена. как указано ken, can not имеют какой-либо вывод перед началом сеанса, он не устанавливает сеанс правильно.
Найденная проблема заключалась в том, что в начале файла вышла отметка о байтовом порядке (BOM). Из него избавился, и он разобрал проблему с сеансом.
SOLUTION: session.auto_start = on в файле: php.ini
Он решил проблему повторного генерации идентификатора сеанса на странице reload (страницы обновления / изменения страницы).
Проблема появилась после обновления CPanel (и включила Multi PHP), даже версия php осталась прежней.
Файл PHP.ini вообще не имел этой переменной. Пошел в Cpanel -> Редактор INI MultiPHP -> Режим редактора (не Basic, в основном у вас нет этой настройки) и добавил строку. Нажмите Сохранить.
СОВЕТЫ / ПРИ ИСПОЛЬЗОВАНИИ ЭТОГО РЕШЕНИЯ: Чтобы определить, является ли это проблемой, поместите строку в самом начале и в самом конце вашего файла index.php, чтобы проверить идентификатор сеанса. Использовать функцию: session_id (); Навигация по страницам / перезагрузка страницы. Если значение session_id изменяется, проблема не в вашем коде, и это решение должно решить вашу проблему (сеанс потерян за пределами вашего кода).
Я также попытался проверить доступность сеанса сохранения на веб-сервере (session.save_path), но, даже если это был лидер, это было не так. Я предполагаю, что это «функция» Cpanel с MULTIPHP UPDATE, которая будет происходить довольно часто.