функция header() PHP

определение и использование

функция header() отправляет клиенту исходные HTTP заголовки.

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

<html>
<?php
// ошибка результата
// перед вызовом header() уже существует вывод
header('Location: http://www.example.com/');
?>

грамматика

header(string,replace,http_response_code)
параметр описание
string обязателен. определяет строку заголовка, которую нужно отправить.
replace

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

по умолчанию это true (замена). false (разрешено несколько заголовков одного типа).

http_response_code Доступно. принудительно установить HTTP код ответа в указанное значение. (Доступно в PHP 4 и выше)

Подсказки и комментарии

Комментарий:С PHP 4.4 функция предотвращает отправку нескольких заголовков за один раз. Это мера защиты от атак на инъекцию заголовков.

Пример

Пример 1

<?php
// Дата в прошлом
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");

?>
<html>
<body>
...
...

Комментарий:Пользователь может установить некоторые параметры для изменения стандартных настроек кэширования браузера. Отправка указанных заголовков позволяет перезаписать любые из этих настроек и принудить браузер не кэшировать!

Пример 2

Подсказка пользователю сохранить созданный PDF файл (заголовок Content-Disposition предоставляет рекомендованное имя файла и принуждает браузер показывать диалог сохранения):

<?php
header("Content-type:application/pdf");
// Файл будет называться downloaded.pdf
header("Content-Disposition:attachment;filename='downloaded.pdf'");
// Исходный PDF в original.pdf
readfile("original.pdf");
?>
<html>
<body>
...
...

Комментарий:В Microsoft IE 5.5 существует баг, который блокирует вышеуказанный механизм. Улучшение до версии Service Pack 2 или выше решает эту проблему.