Задать вопрос
@wideShift

Как работает отправка заголовков в PHP?

Вот есть функция header, она отправляет заголовки браузеру. По документации до нее ничего не может быть.
У меня вопросы:
1) Как в общем работает механизм: сначала при обращении к php сценарию запоминаются все заголовки, потом выполняется php код и в итоге отправляется страница вместе с запомненными заголовками?
2) Если мое суждение (выше) верно, то почему до header ничего нельзя вывести?
  • Вопрос задан
  • 389 просмотров
Подписаться 1 Простой 1 комментарий
Ответ пользователя nokimaro К ответам на вопрос (3)
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Можно добиться того что описали в п.1 если в начале скрипта добавить ob_start();

<?php
ob_start();

echo '123';
header('Content-Type: text/html');
echo '345';


в данном случае ob_start() буфферизирует любой вывод и не посылает его (в обработчик на стороне веб-сервера) до окончания работы скрипта, а все header() отправляются сразу же.

p.s. предупреждаю что приведённый выше пример не рекомендуется к использованию и может привести к появлению трудноуловимых багов. И лучше организовывать свой код так чтобы любой вывод приложения логически шёл в конце, после отправки всех нужных header'ов.
Ответ написан
Комментировать