Translate-Traducir

28/8/14

header location no redirecciona

header Location no redirecciona

Una de las posibles causas de que el header no redireccione es por haber mostrado algo por pantalla. 
El header lo tendremos  que colocar siempre en la primer linea del archivo, antes que cualquier tipo de salida (ya sea html, texto o espacios en blanco) Ejemplos
MAL
<html>
<head>
</head>
<body>
<?php header("Location: pagina.php") ?>
</body>
</html>
BIEN
<?php header("Location: pagina.php") ?>
<html>
<head>
</head>
<body>
</body>
</html>
Se puede redireccionar según condiciones, lo que no se puede es mostrar algo por pantalla antes del header. 
if(esto)
{
header("Location: index.php");
}else{
header("Location: pagina.php");
}

Otras alternativas

Cuando el codigo  header (‘Location:www.url.com’) no funciona en php ya sea por problemas del hosting u otros problemas  existen otras  formas de redirigir las paginas ahora veremos las siguientes:

1.- Insertando JavaScript y  la etiqueta meta en php

JavaScript en php  con temporizador
echo "<script language=\'JavaScript\'>"

    ."function redireccionar() {      "
    ."window.location.href=\'http://www.davidariel.esy.es/blog'\;"
    ."}"

    ."setTimeout('redireccionar()', 4000);" //son milisegundos

   ."</script>";
En este ejemplo se inserta javascript en el php añadiendole un print con la etiqueta echo y concatenando con los puntos en este caso sera redirigido en 4 segundos
JavaScript en php  sin temporizador
echo"<script language='javascript'>window.location.href="ejem.php"</script>"

En este caso no hay puntos por que todo va sobre una linea 
Insertando meta en php
     echo "<META HTTP-EQUIV='Refresh' CONTENT='2; url=menu.php'>"
<!-- <meta http-equiv="acción" content="segundos"; url="url destino" /> -->

2.- Ahora veremos ejemplos de redireccionamientos dentro de html

Script con temporizador
<html>
<head>
<script type="text/javascript">
function redireccionar(){
window.location.href="http://www.amigos-de-la-informatica.blogspot.com.es";
}
setTimeout ("redireccionar()", 3000); //tiempo expresado en milisegundos
</script>
</head>
<body>
<p> Espere por favor, será redireccionado en 3 segundos.</p>
</body>
</html>

En este caso el script esta dentro del head del html

En este caso el script esta dentro del body del html
<body>
<script type="text/javascript">
window.location.href="http://www.amigos-de-la-informatica.blogspot.com.es";
</script>
</body>
Y por ultimo utilizando la etiqueta meta dentro del html
<html>
<head>
<!-- <meta http-equiv="acción" content="segundos"; url="url destino" /> -->
<meta http-equiv="Refresh" content="3"; url="http://www.amigos-de-la-informatica.blogspot.com.es";>
</head>
 <body> 
<p>Hemos cambiado de pagina! Serás dirigido automáticamente en 3 segundos </p> 
</body> 
</html>

No hay comentarios: