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!
)