Como Fazer Redirecionamento de Página no PHP com header() (Sem Erros!)

<< Aula anterior | Sumário do Curso | Próxima aula >>



Fala, dev! Tudo certo por aí?

Sabe quando você preenche um formulário de login, digita sua senha, clica em "Entrar" e o site magicamente te joga para a tela do seu Painel de Controle? Isso não é mágica, é manipulação de rotas! Em algum momento do seu sistema web, você precisará transferir o usuário de uma página para outra automaticamente.

No PHP, lidar com esse tráfego é uma tarefa muito simples graças à função nativa header(). Hoje, vamos aprender a usar essa função do jeito certo, garantindo a segurança do seu sistema e evitando os erros mais clássicos que travam a vida dos iniciantes.



Como redirecionar uma página em PHP (O Básico)

A função header() serve para enviar cabeçalhos HTTP brutos para o navegador do usuário. Para fazer um redirecionamento, nós enviamos o cabeçalho Location, informando a nova URL.

Veja como é direto ao ponto. No exemplo abaixo, redirecionamos o usuário para a página inicial do nosso portal:

<?php
    // Redireciona o usuário para a URL especificada
    header('Location: https://www.programacaoprogressiva.net/');
    
    // Encerra a execução do script imediatamente
    die();
?>


⚠️ Segurança Sênior: Por que o die() ou exit() é obrigatório?

Muitos tutoriais na internet apenas mostram o comando header() e esquecem do die() (ou exit()). Isso é uma falha de segurança gravíssima.

O header('Location: ...') avisa o navegador: "Ei, vá para a outra página!". Porém, o servidor PHP continua executando todo o código que estiver abaixo dessa linha no seu arquivo. Se um usuário malicioso usar ferramentas (como o Postman ou cURL) para ignorar o redirecionamento, ele poderá acessar áreas restritas do seu código!

Regra de Ouro: Sempre que usar header('Location: ...'), coloque um die(); ou exit; na linha de baixo para "matar" o processamento do servidor naquele exato momento.


SEO para Programadores: Redirecionamento 301 vs 302

Se você está criando um site profissional e quer rankear no Google, precisa entender que existem dois tipos principais de redirecionamento:

  • 302 (Temporário): É o padrão do PHP. Diz ao Google: "A página mudou de lugar só por enquanto, não atualize seus registros". Excelente para redirecionar após um login ou carrinho de compras.
  • 301 (Permanente): Diz ao Google: "Essa página mudou de endereço para sempre. Passe toda a autoridade de SEO da antiga para a nova". Ideal para quando você muda a URL de um artigo ou migra de domínio.

Para forçar um redirecionamento 301 focado em SEO no PHP, adicione os parâmetros extras na função:

<?php
// Redirecionamento 301 (Permanente) - Excelente para SEO
header('Location: https://meusite.com/nova-pagina.php', true, 301);
exit;
?>


Trava em pequenos erros e perde horas procurando no Google?

Entender o ciclo de vida de uma requisição HTTP, cabeçalhos e segurança é o que diferencia o "digitador de código" do Engenheiro de Software. Na nossa Apostila Completa de PHP, você aprende do zero com exercícios práticos focados no mundo real. Estude no seu ritmo, offline e sem anúncios!

Apostila PHP Progressivo
Baixar Apostila de PHP Agora 🚀


A Dor de Cabeça: Erro "Cannot modify header information - headers already sent"

Todo programador PHP já tomou um susto com esse erro na tela! Ele acontece porque você não pode enviar um cabeçalho (header) se já tiver enviado algum conteúdo para a tela (mesmo que seja um simples espaço em branco ou uma tag HTML).

❌ O jeito ERRADO (Vai gerar erro):

<html>
<body>
    <h1>Bem-vindo!</h1>
    <?php
        // ERRO! O HTML acima já foi enviado para a tela. O cabeçalho vai falhar.
        header('Location: painel.php');
        exit;
    ?>
</body>
</html>

✅ O jeito CERTO:

Coloque a lógica de redirecionamento no topo absoluto do seu arquivo, antes de qualquer tag HTML, echo ou espaços fora das tags <?php ?>.

<?php
    session_start();
    if(!isset($_SESSION['logado'])) {
        header('Location: login.php');
        exit;
    }
?>
<html>
<body>
    <h1>Você está logado e pode ver esta página!</h1>
</body>
</html>

Dica Extra: Se o seu sistema for muito complexo e você precisar redirecionar no meio do código, pesquise sobre as funções ob_start() e ob_end_flush() (Output Buffering).




Continue Dominando o Backend

O redirecionamento é apenas o começo da manipulação de rotas. Para aprofundar, veja nossas aulas complementares:



<< Aula anterior | Sumário do Curso PHP | Próxima aula >>

Nenhum comentário: