É possível redirecionar um usuário para uma página diferente através do uso do PHP?
Digamos que o usuário vai para www.example.com/index.php e eu quero redirecioná-los para www.example.com/index.php, como eu faria isso sem o uso de uma meta-reflexão? Será possível?
Isto pode até proteger as minhas páginas de utilizadores não autorizados.
Utilize a função header()` function para enviar um cabeçalho HTTP `Location':
header('Location: '.$newURL);
Ao contrário do que alguns pensam, die()
não tem nada a ver com redirecionamento. Use-o **apenas* se você quiser redirecionar em vez** da execução normal.
Arquivo example.php:
<?php
header('Location: static.html');
$fh = fopen('/tmp/track.txt', 'a');
fwrite($fh, $_SERVER['REMOTE_ADDR'] . ' ' . date('c') . "\n");
fclose($fh);
?>
Resultado de três execuções:
bart@hal9k:~> cat /tmp/track.txt
127.0.0.1 2009-04-21T09:50:02+02:00
127.0.0.1 2009-04-21T09:50:05+02:00
127.0.0.1 2009-04-21T09:50:08+02:00
Resumindo — obrigatório die()
/exit()
é alguma lenda urbana que não tem nada a ver com o PHP real. Não tem nada a ver com client "respecting" o cabeçalho Location:
. Enviar um cabeçalho não impede a execução do PHP, independentemente do cliente utilizado.
function Redirect($url, $permanent = false)
{
if (headers_sent() === false)
{
header('Location: ' . $url, true, ($permanent === true) ? 301 : 302);
}
exit();
}
Redirect('http://www.google.com/', false);
Don'não se esqueça de morrer()/sair()!