Houston, we have a problem.

Протокол HTTP



Функции для работы с HTTP-заголовками



В ответ на запрос к серверу клиент получает HTTP-документ, который состоит
из HTTP-заголовков и тела документа, содержащего, как правило, HTML­
страницу или изображение.

Функции для управления НТТР-заголовками


header () Отправляет НТТР-заголовок
headers_list () Возвращает список отправленных или готовых к отправке НТТР-заголовков
headers_sent () Проверяет, отправлены ли НТТР-заголовки

Функция header (), позволяющая отправить клиенту произвольный НТТР­
заголовок, имеет следующий синтаксис:
header ( $header [, $replace [, $http_response_code ]])
Данная функция отправляет НТТР-заголовок $header. Второй параметр
$replace определяет поведение интерпретатора РНР, если тот встречает два
одинаковых заголовка: если параметр принимает значение true, отправляет­ся
последний заголовок, в противном случае - отправляется первый заголо­вок.
Третий параметр $http_response_code позволяет задать код возврата НТТР.
Простейшей процедурой, которую можно осуществить при помощи функции
header ( ), является переадресация, осуществляемая при помощи НТТР­
заголовка Location.



Переадресация средствами HTML



Если в качестве второго параметра передать функции header () значе­ние
true, то все предыдущие НТТР-заголовки с таким же именем будут
заменяться последующими.


На каждый запрос клиента сервер может возвращать HTTP-код состояния,
отражающий вид переадресации при окончательном или временном переме­щении
документа. Если документ найден и успешно отправлен клиенту, в
НТТР-заголовки помещается код состояния 200; если документ не найден - 404; в случае переадресации клиенту отправляется код состояния 302 - "ресурс временно перемещен ", иногда бывает
полезно изменить код состояния на 301 - "ресурс перемещен постоянно".



В ряде случаев нельзя быть заранее уверенным, отправлены НТТР-заголовки
или все еще имеется возможность использовать функцию header().
Чтобы выяснить это, можно воспользоваться функцией headers_sent ( ), которая
имеет следующий синтаксис:
bool headers_sent ( &$file [, &$line ] ])
Функция возвращает false, если НТТР-заголовки не были отправлены кли­енту, и true - в противном случае.



Выведет

Hello
Передача HTTP-документа начата в файле C:\Winginx\home\test3\public_html\index-2.php в строке 2. Поэтому перенаправление на другой ресурс невозможно.


Иногда бывает полезно проконтролировать, какие НТТР-заголовки были
от­правлены клиенту . Для этого удобно воспользоваться функцией
headers_list (), которая имеет следующий синтаксис:
array headers_list ()



Выведет

Array
(
[0] => X-Powered-By: PHP/5.3.27
[1] => X-my-header: Hello world!
)


@темы: PHP, Протокол HTTP