headers_sent

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

headers_sent -- Confere se os cabeçalhos foram enviados ou não

Descrição

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

headers_sent() irá retornar FALSE se nenhum cabeçalho HTTP já foi enviado, ou TRUE se já foi. Se os parâmetros opcionais file e line estiverem definidos, headers_sent() irá colocar o nome do arquivo e a linha aonde a saída começou nas variáveis file e line.

Você não pode adicionar nenhuma linha de cabeçalho a mais usando a função header() depois que os cabeçalhos já foram enviados. Usando esta função você pode previnir que aconteçam erros referentes aos cabeçalhos HTTP. Outra opção é usar Output Buffering.

Nota: Os parâmetros opcionais file e line foram adicionados no PHP 4.3.0.

Exemplo 1. Exemplos usando headers_sent()

<?php

// Se não foi enviado nenhum cabeçalho, envia um
if (!headers_sent()) {
    
header('Location: http://www.example.com/');
    exit;
}

// Um exemplo usando os parâmetros line e file, a partir do PHP 4.3.0
// Note que $filename e $linenum são passados para uso posterior.
// Não defina um valor para elas anteriormente.
if (!headers_sent($filename, $linenum)) {
    
header('Location: http://www.example.com/');
    exit;

// Você pode querer avisar do erro aqui.
} else {

    echo
"Os cabeçalhos já foram enviados em $filename na linha $linenum\n" .
          
"Não posso redirecionar, por favor clique neste <a " .
          
"href=\"http://www.example.com\">link</a>\n";
    exit;
}

?>

Veja também ob_start(), trigger_error(), e header() para uma discussão mais detalhada dos assuntos envolvidos.