Как реализовать post / redirect / get в PHP, если мой обработчик требует данных сеанса? - PullRequest
2 голосов
/ 07 июля 2011

Я пытаюсь понять, как реализовать шаблон post / redirect / get , если моей странице обработчика, где все для $ _POST'd требуется данные сеанса (проверка, вошел ли пользователь в систему,скажем так)

Я не могу позвонить: header("Location /somenewplace", 303);, потому что я получаю ошибку «Не удается изменить заголовки», так как я уже вызвал session_start () для получения данных сеанса.

Может ли кто-нибудь помочь мне лучше понять этот шаблон, если вашему обработчику потребуется взаимодействие с данными сеанса?

Спасибо,

Ответы [ 4 ]

2 голосов
/ 07 июля 2011

Обычно, когда я получаю эту ошибку, потому что что-то уже было выведено пользователю. Вы не можете выводить какие-либо данные перед вызовом header (). Проверьте, печатаете ли вы / выводите что-либо еще до вызова заголовка. Также проверьте закрывающие теги в ваших скриптах, есть ли у вас пробел после закрывающего тега?> Php выведет его пользователю и установит заголовки.

2 голосов
/ 07 июля 2011

Вызов session_start () должен изменять только заголовки.Вы, вероятно, вывели некоторые данные где-то еще в вашем скрипте.Когда PHP выдает сообщение «Невозможно изменить заголовки», он обычно сообщает, с какой строки был запущен вывод.

Поэтому сеансы не должны мешать вам выполнять какие-либо перенаправления или другие действия.

2 голосов
/ 07 июля 2011

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

1 голос
/ 07 июля 2011

Проверьте, используя ob_start () и ob_end_flush () для использования буферизации вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...