header Отправляет необработанный HTTP-заголовок &reftitle.description; voidheader stringheader boolreplace&true; intresponse_code0 Функцию header вызывают для отправки HTTP-заголовка. Спецификация HTTP/1.1 подробно описывает HTTP-заголовки. Помните, функцию header разрешено вызывать, только если клиенту ещё не передали данные. То есть функция должна идти первой в выводе, перед её вызовом не должно быть HTML-тегов, пустых строк и т. п. Иногда возникает ошибка, когда при чтении кода файловыми функциями наподобие include или require в коде попадаются пробелы или пустые строки, которые выводятся до вызова функции header. Те же проблемы могут возникать, когда в одном файле записали PHP-код и HTML-разметку. ]]> &reftitle.parameters; header Строка заголовка. Существует два вызова заголовка, которые отличаются от других. Первый — заголовок, который начинается со строки «HTTP/» (регистр не важен). Этот заголовок определит код состояния HTTP для ответа. Например, если веб-сервер Apache через директиву ErrorDocument сконфигурирован на обработку запросов к несуществующим файлам PHP-скриптом, то разработчик, вероятно, захочет убедиться, что скрипт генерирует правильный код состояния. ]]> Другой отличающийся вид заголовка — «Location:». Он отправляет заголовок обратно в браузер, а также возвращает браузеру код состояния REDIRECT (302), если только код состояния 201 или 3xx не был установлен. ]]> replace Необязательный параметр replace определяет, должен ли заголовок заменить предыдущий аналогичный заголовок или добавить второй заголовок того же типа. По умолчанию он заменит заголовок, но если передать &false;, в качестве второго аргумента, можно принудительно задать несколько однотипных заголовков. Например: ]]> response_code Принудительно задаёт код ответа HTTP. Обратите внимание, что этот параметр работает только тогда, когда строка header не пуста. &reftitle.returnvalues; &return.void; &reftitle.errors; Если не получилось запланировать отправку заголовка, функция header выдаёт ошибку уровня E_WARNING. &reftitle.examples; Диалог загрузки Если нужно предложить пользователю сохранить пересылаемые данные, например сгенерированный PDF-файл, указывают заголовок Content-Disposition, который подставляет рекомендуемое имя файла и заставляет браузер показать диалог сохранения. ]]> Директивы для работы с кешем PHP-скрипты часто генерируют динамическое содержание, которое не должен кешировать браузер клиента или промежуточный кеш между сервером и клиентским браузером. Прокси-серверы и браузеры могут принудительно отключить кеширование, передав заголовки: ]]> Бывают ситуации, в которых браузер не будет кешировать страницы, даже если приведённые заголовки не были переданы. Пользователям доступны настройки браузера, которые изменяют поведение кеширования по умолчанию. Отправляя приведённые заголовки, разработчик должен переопределить любые настройки, которые в других случаях приводят к кешированию вывода скрипта. Кроме того, через функцию session_cache_limiter и директиву session.cache_limiter можно автоматически создавать правильные заголовки, которые связаны с кешированием при работе с сессиями. Настройка cookie Функцией setcookie удобно устанавливать cookies. Чтобы установить cookie с атрибутами, которые не поддерживает функция setcookie, вызывают функцию header. Например, следующий код устанавливает cookie с атрибутом Partitioned. ]]> &reftitle.notes; ¬e.network.header.sapi; Чтобы обойти эту проблему, можно буферизовать вывод скрипта. Тогда все выводимые данные будут буферизоваться на сервере, пока не будет дана явная команда на пересылку данных. Управлять буферизацией можно вручную — функциями ob_start и ob_end_flush, либо задав директиву output_buffering в конфигурационном файле &php.ini;, или настроив конфигурацию сервера нужным образом. Строка заголовка HTTP-состояния будет отправлена клиенту первой, независимо от того, вызвана ли функция header первой или нет. Статус можно переопределить в любое время вызовом функции header с новой строкой состояния, если HTTP-заголовки ещё не были отправлены. Спецификация HTTP/1.1 требует, чтобы в качестве аргумента заголовка Location: был указан абсолютный URI, который бы включал схему, имя хоста и абсолютный путь, хотя иногда клиенты в состоянии принимать и относительные URI. Абсолютный URI можно построить самому через элементы $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] или функцией dirname: ]]> Идентификатор сессии не будет передаваться вместе с заголовком Location, даже если включена настройка session.use_trans_sid. Его нужно передавать вручную, используя константу SID. &reftitle.seealso; headers_sent setcookie http_response_code header_remove headers_list Раздел документации HTTP-аутентификации