Сессия PHP потеряна / потеряна после заголовка

У меня есть сценарий, который устанавливает некоторые значения сеанса перед перенаправлением на / using header() .

Я прочитал много сообщений о переменной $_SESSION которая была уничтожена / потеряна после header() , даже после того, как я это сделал:

 // set session here session_regenerate_id(true); session_write_close(); header("Location: /"); 

session_start() установлен в правильных местах, знает ли кто-нибудь о чем-то, что я могу пропустить?

На странице index.php у меня есть следующее:

 session_start(); print_r($_SESSION); // outputs nothing :'( 

Код довольно сложный, поэтому не публикуйте его полностью, просто фрагменты.

Я никогда не видел связанных с сеансом проблем из-за использования заголовков местоположений – вы уверены, что вы вызываете session_start на обеих страницах?


Хм … этот ответ дал больше смысла, прежде чем добавить бит session_start выше, и упомянул о том, что вы были уверены, что используете session_start. 🙂

заголовок должен быть отправлен до закрытия сеанса

 session_regenerate_id(true); header("Location: /"); // the header must be sent before session close session_write_close(); // here you could also use exit(); 

просто положить выход; после заголовка: DI, разрешенный этим

После перенаправления заголовка вам нужно выйти из скрипта PHP:

 header("Location: /"); exit(); 

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

Вам не нужно запускать session_start () на каждой странице. потому что, пока ваш браузер не закрыт, остается тот же сеанс для всего пути, который вы указали в php.ini