Необязательный параметр replace показывает, должен ли заголовок замещать предыдущий сходный заголовок, или добавлять второй заголовок того же типа. По умолчанию происходит замещение, но если в качестве второго параметра передаётся FALSE будет добавляться ещё один заголовок. Например:
Пример кода
<?php
header('WWW-Authenticate: Negotiate');
header('WWW-Authenticate: NTLM', false);
?>Второй необязательный параметр http_response_code передаёт функции код HTTP-отклика.
Существует два способа вызова заголовка. Первый заключается в размещении в начале строки, заголовка строки вида "HTTP/"(регистр не имеет значения). Строка будет использована для вычисления кода статуса HTTP-запроса. Например, если вы настроили Apache игнорировать запросы PHP-скриптов на получение файлов (используя директиву ErrorDocument), вы можете захотеть убедится в том, что скрипт генерирует соответствующий код состояния:
Пример кода
<?php
header("HTTP/1.0 404 Not Found");
?>Второй способ, заключается в передаче в начале запроса строки "Location:". Этот способ позволяет осуществить переход на другой адрес, возвращая соответствующий код состояния.
Пример кода
<?php
header("Location: http://www.example.com/"); /* Редирект браузера */
/* Убедитесь, что код приведённый ниже не исполняется во время нашего перехода */
exit;
?>PHP-скрипты часто генерируют динамический контент, который не должен кешироваться клиентским браузером или любым другим прокси-кешем между сервером и клиентским браузером. Многие клиенты и прокси-сервера можно заставить отключить кеширование при помощи кода: Пример кода
<?php
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// HTTP/1.0
header("Pragma: no-cache");
?>Помните, что функция header() должна быть вызвана до любого вывода из PHP-скрипта, любого тэга HTML, пустой строки в файле и т.д. Наиболее распрастарннённая ошибка использование include(), require(), функций, пробелов и пустых строчек до вызова функции header().
Пример кода
<?php
/* This will give an error. Note the output
* above, which is before the header() call */
header('Location: http://www.example.com/');
?>Если вы хотите, чтобы пользователь получил окно предлагающее сохранить посланные ему данные, такие как сгенерированный PDF-файл, вы можете использовать заголовки типа Content-Disposition предлагая имя файла и заставляя браузер выводить диалог сохранения файла. Пример кода
<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');
// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// The PDF source is in original.pdf
readfile('original.pdf');
?>