header

(PHP 4, PHP 5, PHP 7, PHP 8)

header — Надсилає необроблений (сирий) HTTP-заголовок

Опис

header(string $header, bool $replace = true, int $response_code = 0): void

Функциюheader() викликають для надсилання HTTP-заголовка. У » специфікації HTTP/1.1 докладно описані HTTP-заголовки.

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

Loading...

Список параметрів

header

Рядок заголовка.

Існує два виклики заголовка, які відрізняються від інших. Перший - заголовок, який починається з рядкаHTTP/»(Регістр не важливий). Цей заголовок визначає код стану HTTP для відповіді. Наприклад, якщо веб-сервер Apache через директиву ErrorDocument налаштований на обробку запитів до неіснуючих файлів PHP-скриптом, то розробник, ймовірно, захоче переконатися, що скрипт генерує правильний код стану.

Loading...

Інший відмінний вид заголовка - "Location:". Він відправляє заголовок назад у браузер, а також повертає браузеру код стану REDIRECT (302), якщо тільки код стану 201или3xx не було встановлено.

Loading...

replace

Необов'язковий параметр replace визначає, чи повинен заголовок замінити попередній аналогічний заголовок або додати друге заголовок того ж типу. За умовчанням він замінить заголовок, але якщо передати false, Як другий аргумент, можна примусово задати кілька однотипних заголовків. Наприклад:

Loading...

response_code

Примусово вказує код відповіді HTTP. Зверніть увагу, що цей параметр працює тільки тоді, коли рядок headerне пуста.

Значення, що повертаються

Функція не повертає значення після виконання.

Помилки

Якщо не вдалося запланувати надсилання заголовка, функція header() видає помилку рівня E_WARNING

Приклади

Приклад #1 Діалог завантаження

Якщо потрібно запропонувати користувачеві зберегти дані, що пересилаються, наприклад згенерований PDF-файл, вказують заголовок » Content-Disposition, який підставляє ім'я файлу, що рекомендується, і змушує браузер показати діалог збереження.

Loading...

Приклад #2 Директиви для роботи з кешем

PHP-скрипти часто генерують динамічний зміст, який не повинен кешувати браузер клієнта або проміжний кеш між сервером та клієнтським браузером. Проксі-сервери та браузери можуть примусово відключити кешування, передавши заголовки:

Loading...

Зауваження :

Бувають ситуації, в яких браузер не кешуватиме сторінки, навіть якщо наведені заголовки не були передані. Користувачам доступні установки браузера, які змінюють поведінку кешування за замовчуванням. Надсилаючи наведені заголовки, розробник повинен перевизначити будь-які налаштування, які в інших випадках призводять до кешування виведення скрипту.

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

Приклад #3 Налаштування cookie

функцією setcookie() зручно встановлювати cookies. Щоб встановити cookie з атрибутами, які не підтримують функцію setcookie(), викликають функцію header()

Наприклад, наступний код встановлює cookie з атрибутом Partitioned

Loading...

Примітки

Зауваження :

Доступ до заголовків та їх висновок здійснюватиметься лише у випадку, якщо у 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() :

Loading...

Зауваження :

Ідентифікатор сесії не буде передаватися разом із заголовком Location, навіть якщо увімкнено налаштування session.use_trans_sid. Його потрібно передавати вручну, використовуючи константу SID

Дивіться також