¿Es posible redirigir a un usuario a una página diferente mediante el uso de PHP?
Digamos que el usuario va a www.example.com/page.php
y quiero redirigirlo a www.example.com/index.php
, ¿cómo lo haría sin usar un meta refresh? ¿Es posible?
Esto podría incluso proteger mis páginas de usuarios no autorizados.
Utilice la función header()
para enviar una cabecera HTTP Location
:
header('Location: '.$newURL);
Contrariamente a lo que algunos piensan, die()
no tiene nada que ver con la redirección. Utilícelo sólo si quiere redirigir en lugar de la ejecución normal.
Archivo ejemplo.php:
<?php
header('Location: static.html');
$fh = fopen('/tmp/track.txt', 'a');
fwrite($fh, $_SERVER['REMOTE_ADDR'] . ' ' . date('c') . "\n");
fclose($fh);
?>
Resultado de tres ejecuciones:
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
Reanudando — la obligatoriedad de die()
/exit()
es una leyenda urbana que no tiene nada que ver con el PHP real. No tiene nada que ver con que el cliente "respete" la cabecera Location:
. El envío de una cabecera no detiene la ejecución de PHP, independientemente del 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);
¡No te olvides de die()/exit()!