У меня есть сценарий, который устанавливает некоторые значения сеанса перед перенаправлением на /
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