функция 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 или выше решает эту проблему.