PHP header()Функции


PHP HTTP 参考手册Полное справочное руководство по PHP HTTP

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

Функция header() отправляет необработанный HTTP-заголовок клиенту.

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

<html>
<?php
// Это приводит к ошибке.
// Вывод выше находится перед вызовом header()
header('Location: http://www.example.com/');
?>

Синтаксис

header(string,replace,http_response_code)

Parameters Описание
string Обязательный. Указывает строку заголовка для отправки.
замена Необязательный. Указывает, должен ли заголовок заменить предыдущий заголовок или добавить второй заголовок. По умолчанию TRUE (заменить). FALSE (разрешает несколько заголовков одного типа).
http_response_code Необязательный. Принудительно устанавливает код ответа HTTP в указанное значение. (Доступно в PHP 4.3 и выше)


Советы и примечания

Примечание:Начиная с 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 или более поздней версии может исправить эту ошибку.


PHP HTTP 参考手册Полное справочное руководство по PHP HTTP Другие расширения