Problemas com header() em PHP

Publicado por em 31 dez 15. PHP

Grande parte dos programadores iniciantes em PHP tem problemas na hora de implementar algo utilizando header(). Geralmente se deparam com o aviso: “Warning: Cannot modify header information – headers already sent by…”

Muitos acabam desistindo ou, pelo menos, fugindo do header, mas esse aviso é algo bem simples e sua solução também.

O que acontece?

Como a mensagem diz, o problema é que “headers already sent” (As informações do cabeçalho já foram enviadas).

Funciona assim: Todo arquivo na internet está hospedado em um servidor. Seu navegador pergunta o conteúdo do arquivo X no endereço Y. O servidor faz a mágica dele e responde a requisição feita, começando pelo cabeçalho ou header, com as informações que permitirão ao seu navegador montar o arquivo solicitado.

É aí que está o problema, se houver qualquer saída HTML antes da chamada da função header(), o servidor já terá enviado o cabeçalho da página, pois esta é a primeira informação enviada. Percebe que este conteúdo pode ser uma informação antes do bloco ou uma informação exibida com echo ou print().

OK, mas como resolver o problema?

O segredo para resolver o problema então é bastante simples: basta remover qualquer saída HTML antes do header().

Blocos HTML, saídas com echo e print() devem ser colocadas sempre após o header(). Simples assim.

Mais uma dica: algumas vezes os arquivos php se corrompem (no envio para o servidor, em algum backup, etc) e o arquivo passa a acusar o problema, mesmo não havendo nenhuma irregularidade com o arquivo. Caso isso ocorra, copie os dados para um novo arquivo e salve substituindo o anterior. Já gastei muito tempo tentando resolver problemas de programação, quando o erro era do próprio arquivo.

Comente

*
*