Как заголовки работают с буферизацией вывода в PHP? - PullRequest
11 голосов
/ 24 июня 2010

Название не требует пояснений.

У меня большой опыт работы с PHP, но я не уверен, как функция header работает между ob_start() и ob_end_clean().

Учтите это:

ob_start();

echo "Some content";
header('X-Example-Header: foo');
echo "Some more content";

$output = ob_get_contents();
ob_end_clean();

echo $output;

Функция header игнорирует выходную буферизацию, и, таким образом, все заголовки отправляются до содержимого, потому что оно echo редактируется после вызова header?

Или это работает как-то иначе?

1 Ответ

16 голосов
/ 24 июня 2010

header() действительно игнорирует выходную буферизацию. Одна из причин использования буферизации вывода заключается в том, что вы можете отправлять заголовки HTTP «не в порядке», поскольку ответ буферизуется. Вы не можете отправлять HTTP-заголовки после отправки какого-либо вывода (если только этот вывод не буферизован).

...