Funções PHP |
. Glossários Funções PHP - headers_sent ( ) |
(PHP 3>= 3.0.8, PHP 4 , PHP 5)
headers_sent -- Confere se os
cabeçalhos foram enviados ou nã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:
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.