Como Fazer um Redirecionamento PHP (Com Segurança)
Um Redirecionamentos PHP é uma ferramenta incrivelmente útil, mas que também pode ser perigoso se não for implementado do jeito certo.
Se você já passou pela nossa introdução ao PHP 7.4 e nosso guia de como criar um site, já está ciente que a função header() pode ser usada para redirecionar facilmente um usuário de uma página para outra.
Na verdade, porém, usar essa função não é tão simples quanto parece. Neste guia, vamos mostrar como fazer um redirecionamento PHP que não cause problemas no futuro.
O Método Básico Para Fazer Um Redirecionamento PHP
A maioria dos guias lhe dirá que, para fazer um redirecionamento PHP, você pode simplesmente usar a função header() na parte superior das suas páginas. Para fazer isso, você usa a função para enviar uma nova URL, assim:
header('Location: '.$newURL.php);
Essa função de cabeçalho deve ser colocada antes de você passar qualquer HTML ou texto para os navegadores dos usuários. Por isso, deve estar no topo da página. Isso significa que ele deve vir antes da declaração <!DOCTYPE>, antes de qualquer código Java e PHP. Em seguida, ele envia os usuários para a nova URL.
Embora possa parecer simples, quando se trata da função header(), a simplicidade do código pode causar uma falsa sensação de segurança. Então, vamos ver como você pode usar essa função corretamente.
Die() e Exit ()
Primeiro, você deve usar os modificadores die() ou exit() toda vez que usar um redirecionamento. Em resumo, o problema é que os rastreadores e robôs podem ignorar os cabeçalho e, então, a página que você estava redirecionando é totalmente acessível a eles.
Se, em outras palavras, você está usando um redirecionamento de cabeçalho para proteger uma página em particular, ela não oferece proteção nenhuma.
É por isso que você precisa desligar o redirecionamento se ele for ignorado. A maneira de fazer isso é anexar die() ou exit() após o seu redirecionamento:
header("Location: .$newURL.php");
die();
URLs Relativas e Absolutas
Em seguida, vamos falar sobre URLs relativas e absolutas nos redirecionamentos. O RFC 7231 permite usar os dois, mas você deve ser extremamente cuidadoso ao usar redirecionamentos relativos. Isso acontece porque alguns criadores de sites coletam e renomeiam páginas PHP.
Isso significa que, se você estiver trabalhando no seu PHP por meio de um criador de sites, poderá acabar quebrando todos os seus redirecionamentos
Infelizmente, no momento não há uma maneira real de contornar esse problema, além de ser cuidadoso sobre onde seus redirecionamentos estão apontando.
Códigos de Statis
O terceiro problema com os redirecionamentos padrão do PHP é que o operador “local” do PHP ainda retorna o código HTTP 302 .
Você não deve aceitar isso, porque muitos navegadores da web implementam esse código de maneira totalmente contrária à maneira como ele deve funcionar: eles essencialmente usam o comando GET em vez de executar um redirecionamento “real”.
A melhor prática ao criar redirecionamentos PHP é, portanto, especificar o código que é retornado. Infelizmente, o código correto a ser usado é um ponto de discórdia.
O HTTP 301 indica um redirecionamento permanente, o que pode causar problemas ao restaurar sua página original. Infelizmente, o HTTP 303 é entendido como “outro” por muitos navegadores e pode causar problemas com a indexação da sua página pelos mecanismos de pesquisa.
Na prática, e até que tudo seja resolvido, use HTTP 303.
Verifique a Documentção
Além de tomar as precauções básicas acima, reserve um tempo para ler a documentação sobre o uso de redirecionamentos PHP antes de publicá-los.
Você deve ler o manual do PHP para garantir que entende o que está fazendo, além de verificar a documentação do W3C para garantir que está seguindo as melhores práticas.
E enquanto você está fazendo suas leituras, lembre-se de proteger também o site contra vulnerabilidades comuns: se você já está em fase de ter que usar redirecionamentos PHP, é provável que a segurança do site precise de uma auditoria.
Outros Métodos
Considerando todos esses problemas, você provavelmente está se perguntando por que usaria um redirecionamento PHP.
Embora os redirecionamentos PHP normalmente sejam executados mais rapidamente do que outros tipos de redirecionamento e possam, portanto, ser uma ferramenta importante para melhorar a velocidade do site, existem outras opções disponíveis.
Existem duas abordagens principais para fazer isso. Você pode usar o elemento HTML <meta> para redirecionar de dentro da parte HTML da sua página ou usar JavaScript. A primeira abordagem – usando <meta> ficaria assim:
<meta http-equiv="refresh" content="0;url=newpage.php">
A segunda abordagem – usando JavaScript – é um pouco mais elegante e certamente parece mais profissional:
window.location.replace("http://newpage.php/");
Ambas as abordagens serão executadas um pouco mais lentamente que o redirecionamento imediato do header(), mas são sem dúvida mais flexíveis.
Palavra Final
Embora seguir as etapas acima signifique que os redirecionamentos do PHP sejam executados com segurança, se você estiver na posição de usar vários redirecionamentos do PHP, provavelmente é hora de repensar a estrutura do seu site.
Existem algumas boas razões para fazer isso. A primeira é que nem todos os hosts da web são criados da mesma forma e, se você estiver enviando todos os visitantes em uma rota tortuosa pelo site, isso afetará o desempenho.
Isso pode ser aprimorado até certo ponto, usando um provedor de hospedagem acessível, mas apenas até certo ponto.
O segundo motivo é que a página da qual você está redirecionando pode estar coletando dados sobre seus visitantes sem que você esteja ciente disso, principalmente se você estiver usando um software de análise da web para rastrear o desempenho do seu site. No nosso mundo pós-LGPD, isso pode ter consequências significativas.
Portanto, em resumo: tenha cuidado com os redirecionamentos do PHP, use de forma adequada e use somente onde e quando for absolutamente necessário.
Comentários
May 28 2020
Amei o conteúdo! Parabéns aos criadores!
February 10 2021
Claro e preciso! parabéns
February 12 2021
Obrigado! :D
April 21 2022
você ainda está por aí? Me diga, como é o response.redirect (Do asp) no php. Conheço asp, e o redirecionamento, entre paginas, pode ser feito no meio de um script, por exemplo; após um teste de variável. No php só é possível no inicio do script, pelo cabeçalho? como eu faria isso, por exemplo em PHP? valor_a=4 valor_b=5 If valor_a valor_b then response.redirect "SomaErrada.asp" end if
May 09 2022
Olá, tudo bem? Tive que falar com nossa equipe técnica pra me ajudar com essa resposta. Mas então, primeira coisa que a gente precisa notar que é o nosso artigo não é escrito pensando em ASP, que geralmente é usado com servidores Windows. Ele foi pensado para os servidores Linux que oferecemos em nossos planos de hospedagem. Apesar disso, você pode hospedar o núcleo ASP.NET em nossos servidores VPS< se desejar. Finalmente, você pode seguir as instruções neste tópico aqui para fazer um redirecionamento PHP com o ASP. Os métodos mais fáceis de fazer isso são usando a URL response.redirect ou o mod_rewrite. Espero ter ajudado!?
December 14 2023
Consigo aplicar isso usando Google ADS para redirecionar ?
December 15 2023
Oi, Marco, como seria esse redirecionamento? Explica melhor que tentamos ajudar! :)