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

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

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

Ответ 1

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

Ответ 2

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


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

Ответ 3

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

session_regenerate_id(true);

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

Ответ 4

просто поместить выход; после заголовка: D я решил этим

Ответ 5

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

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

Ответ 6

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