ГлавнаяОтзывы и пожеланияСтатьи
Функции по алфавиту:    a     b     c     d     e     f     g     h     i     j     k     l     m     n     o     p     q     r     s     t     u     v     w     x     y     z  

header


(PHP 3, PHP 4)

header - отправляет "сырую" HTTP-шапку/header.

Описание

int header (string string [, bool replace])

header() используется для отправки необработанных HTTP-шапок. См. в спецификации HTTP/1.1 информацию о HTTP headers.

Необязательный параметр replace указывает, должна ли шапка замещать предыдущую аналогичную шапку, или нужно добавить вторую header того же самого типа. По умолчанию выполняется замещение, но, если вы передаёте FALSE в качестве второго аргумента, вы можете форсировать создание нескольких headers одного типа. Например:

header(`WWW-Authenticate: Negotiate`);
header(`WWW-Authenticate: NTLM`,false);

Здесь два особых вызова шапок. В первом это header, начинающийся строкой "HTTP/" (регистр не имеет значения), используемый для создания HTTP статус-кода для отправки. Например, если вы сконфигурировали Apache для использования PHP-скрипта для обработки запросов отсутствующих файлов (используя директиву ErrorDocument), вам потребуется удостовериться, что ваш скрипт генерирует соответствующий статус-код.

<?php
header("HTTP/1.0 404 Not Found");
?>

Примечание: строка шапки HTTP-статуса всегда будет отправляться первой клиенту, независимо от того, идёт вызов header() первым или нет. Этот статус может быть переопределён вызовом header() с новой строкой статуса в любое время, если только HTTP headers уже не отправлены.

Примечание: в PHP 3 это работает только в том случае, если PHP скомпилирован как Apache-модуль. Вы может добиться того же эффекта, используя шапку Status.

header("Status: 404 Not Found");

Второй особый случай это "Location:" header. Здесь header не только отсылается обратно браузеру, но также возвращается статус-код REDIRECT (302), если только какой-нибудь 3xx статус-код не был уже установлен.

header("Location: http://www.example.com/"); /* Redirect browser */
exit;                 /* Убедитесь, что последующий код не
                         выполняется, когда мы перенаправляем. */

Примечание: HTTP/1.1 требует абсолютного URI в качестве аргумента для Location: включая схему, имя хоста и абсолютный путь, но некоторые клиенты принимают относительные URI. Как правило вы можете сами использовать $_SERVER[`HTTP_HOST`], $_SERVER[`PHP_SELF`] и dirname() для создания абсолютного URI из относительного:

header("Location: http://".$_SERVER[`HTTP_HOST`]
                      .dirname($_SERVER[`PHP_SELF`])
                      ."/".$relative_url);

PHP-скрипты часто генерируют динамическое содержимое, которое обязано не кэшироваться клиентским браузером или proxy-кэшами между клиентским браузером и сервером. Во многих прокси и клиентах можно отключать кэширование.

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // дата в прошлом
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
                                                     // всегда модифицируется
header("Cache-Control: no-store, no-cache, must-revalidate");  // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");                          // HTTP/1.0

Примечание: вы можете обнаружить, что ваши страницы не кэшируются, даже если вы не выводите все выше указанные шапки. Есть опции, которые могут быть установлены пользователями в своих браузерах, изменяющие поведение по умолчанию кэширования. Отправляя вышеуказанные шапки, вы должны переопределить любые установки, которые иначе могут кэшировать ваши скрипты.

Кроме того, session_cache_limiter() и установка конфигурации session.cache_limiter могут использоваться для автоматической генерации корректны шапок кэширования, когда используются сессии.

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

<?php header ("Content-type: audio/x-pn-realaudio"); ?>
// нарушение: обратите внимание на пустую строчку вверху

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

Если вы хотите, чтобы пользователю задавался вопрос о сохранении данных, высылаемых вами, таких как сгенерированный PDF-файл, вы можете использовать шапку Content-Disposition для предоставления рекомендуемого файла и форсировать отображение браузером диалога save.

<?php
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=downloaded.pdf");

/* ... вывод pdf-файла ... */

Примечание: в Microsoft Internet Explorer 4.01 имеется баг, не дающий реализовать это. Средства от этого нет. Также имеется баг в Microsoft Internet Explorer 5.5, но его можно исправить, обновив до Service Pack 2 или новее.

Примечание: если safe mode включён, uid скрипта добавляется к части realm шапки WWW-Authenticate, если вы устанавливаете эту шапку (используется для HTTP Authentication).

См. также headers_sent(), setcookie() и раздел HTTP-аутентификация.




Другие функции на h:

hexdec
highlight_file
highlight_string
htmlspecialchars
hw_api->checkin
hw_api->checkout
hw_api->children
hw_api->content
hw_api->copy
hw_api->dstanchors
hw_api->find
hw_api->ftstat
hw_api->hwstat
hw_api->insertanchor
hw_api->insertcollection
hw_api->insertdocument
hw_api->link
hw_api->lock
hw_api->move
hw_api->object
hw_api->objectbyanchor
hw_api->remove
hw_api->replace
hw_api->srcsofdst
hw_api->unlock
hw_api_attribute
hw_api_attribute->key
hw_api_content->mimetype
hw_api_content->read
hw_api_error->count
hw_api_object->count
hw_api_object->value
hw_Array2Objrec
hw_changeobject
hw_Children
hw_Close
hw_connection_info
hw_Deleteobject
hw_DocByAnchorObj
hw_Document_Attributes
hw_Document_BodyTag
hw_dummy
hw_Error
hw_ErrorMsg
hw_GetAnchors
hw_GetAndLock
hw_GetChildCollObj
hw_GetChildDocColl
hw_GetChildDocCollObj
hw_GetObjectByQueryCollObj
hw_GetParentsObj
hw_GetRemoteChildren
hw_GetSrcByDestObj
hw_getusername
hw_InCollections
hw_Info
hw_insertanchors
hw_InsertDocument
hw_InsertObject
hw_Modifyobject
hw_Mv
hw_New_Document
hw_Objrec2Array
hw_Output_Document
hw_pConnect
hw_setlinkroot
hw_stat
hypot


EXPERTGS.ru описание функций php.