Ответ 1
В интересах закрытия этого вопроса мы пришли к выводу, что это проблема с конфигурацией сервера, не удивительно, учитывая, что хост хорошо известен для такого рода вещей.
У меня есть 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 :'(
Код довольно сложный, поэтому не публикуйте его полностью, просто фрагменты.
В интересах закрытия этого вопроса мы пришли к выводу, что это проблема с конфигурацией сервера, не удивительно, учитывая, что хост хорошо известен для такого рода вещей.
Я никогда не видел проблем, связанных с сеансом, из-за использования заголовков местоположений - вы уверены, что вызываете 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();
просто поместить выход; после заголовка: D я решил этим
После перенаправления заголовка вам нужно выйти из PHP script:
header("Location: /");
exit();
Вам не нужно запускать session_start() на каждой странице. потому что, пока ваш браузер не закрыт, остается тот же сеанс для всего пути, который вы указали в php.ini