headers_sent

(PHP 3 >= 3.0.8, PHP 4, PHP 5)

headers_sent -- Проверяет отправлены ли HTTP-заголовки клиенту и, если отправлены, то где

Описание

bool headers_sent ( [string &file [, int &line]] )

headers_sent() возвращает FALSE, если HTTP заголовки еще не были отправлены клиенту, и TRUE в противоположном случае. Если были указаны необязательные параметры file и line, headers_sent() вернет имя файла и номер строки, где был начат вывод данных в переменные file и line соответственно.

Вы не можете добавить новые заголовки при помощи функции header(), если заголовки уже были отправлены клиенту. Использование данной функции позволит вам лишь избежать сообщений об ошибках, связанных повторной отправкой HTTP-заголовков. Другой выход - использовать буферизацию вывода.

Замечание: Необязательные параметры file и line были добавлены в PHP 4.3.0.

Пример 1. Пример использования headers_sent()

<?php

// Если заголовки еще не отправлены, добавить
if (!headers_sent()) {
    
header('Location: http://www.example.com/');
    exit;
}
  
// Пример использования опциональных параметров, добавленных в PHP 4.3.0
// Обратите внимание, что $filename и $linenum передаются для последующего
// использования. Не устанавливайте их предварительно!
if (!headers_sent($filename, $linenum)) {
    
header('Location: http://www.example.com/');
    exit;

// Обычно здесь идет обработка ошибок.
} else {

    echo
"Заголовки уже отправлены в $filename на строке $linenum\n" .
          
"Редирект невозможен, пожалуйста нажмите <a " .
          
"href=\"http://www.example.com\">Здесь</a> самостоятельно\n";
    exit;
}

?>

Смотрите также функции ob_start(), trigger_error(), и header() для более подробного обсуждения затронутых вопросов.