Alternativa a la función header en PHP

En PHP cuando terminamos la ejecución de un script, solemos redirigir la página de procesamiento hacia otra. Para realizar dicha re-dirección solemos utilizar la función Header, la cual nos permite enviar un encabezado sin formato HTTP para dirigir al usuario hacia otra página de forma sencilla.

Header, no permite que antes de su llamada exista código HTML, por lo que un error muy común es mostrar información en pantalla (con un echo por ejemplo) y que la dirección no se realice debido a que el servidor entiende que ya hay un header enviado.

Si queremos evitar este problema pues necesitamos obligatoriamente mostrar información en la pantalla, lo mejor es incluir la siguiente función en nuestro archivo functions.php:

function redirect($url)
{
    if (!headers_sent())
    {    
        header('Location: '.$url);
        exit;
        }
    else
        {  
        echo '<script type="text/javascript">';
        echo 'window.location.href="'.$url.'";';
        echo '</script>';
        echo '<noscript>';
        echo '<meta http-equiv="refresh" content="0;url='.$url.'" />';
        echo '</noscript>'; exit;
    }
}

Y llamarla cuando queramos pasándole como parámetro la URL a la que queramos redirigir.

La función escrita arriba es sencilla, primero se comprueba si ya hay un encabezado mandado headers_sent(), si no lo hay entonces se cambiará de página con header. En caso que ya haya un encabezado enviado lo hará mediante JavaScript y con HTML  para asegurarnos de que funcione en cualquier caso.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *