Função header() do PHP

Definição e uso

A função header() envia cabeçalhos HTTP originais para o cliente.

É importante reconhecer que a função header() deve ser chamada antes de qualquer saída real ser enviada (no PHP 4 e versões superiores, você pode usar cache de saída para resolver esse problema):

<html>
<?php
// Resultado de erro
// Saída existente antes da chamada header()
header('Location: http://www.example.com/');
?>

Sintaxe

header(string,replace,http_response_code)
Parâmetros Descrição
string Obrigatório. Especifica a string do cabeçalho a ser enviada.
replace

Opcional. Indica se o cabeçalho deve substituir o cabeçalho anterior ou adicionar um segundo cabeçalho.

Padrão é true (substituição). false (permite múltiplos cabeçalhos do mesmo tipo).

http_response_code Opcional. Força o código de resposta HTTP para o valor especificado. (Disponível em PHP 4 e versões superiores)

Dicas e Comentários

Comentário:A partir do PHP 4.4, essa função impede o envio de múltiplos cabeçalhos em uma vez. Isso é uma medida de proteção contra ataques de injecção de cabeçalhos.

Exemplo

Exemplo 1

<?php
// Data no passado
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");

?>
<html>
<body>
...
...

Comentário:O usuário pode configurar algumas opções para alterar as configurações de cache padrão do navegador. Ao enviar os cabeçalhos acima, você pode sobrescrever qualquer uma dessas configurações, forçando o navegador a não fazer cache!

Exemplo 2

Avisar o usuário para salvar um arquivo PDF gerado (o cabeçalho Content-Disposition é usado para fornecer um nome de arquivo recomendado e forçar o navegador a exibir uma caixa de diálogo de salvar):

<?php
header("Content-type:application/pdf");
// O arquivo será chamado downloaded.pdf
header("Content-Disposition:attachment;filename='downloaded.pdf'");
// Fonte PDF no original.pdf
readfile("original.pdf");
?>
<html>
<body>
...
...

Comentário:O Internet Explorer 5.5 tem um bug que impede o mecanismo acima. Atualizando para o Service Pack 2 ou versão superior resolve esse bug.