Foros del Web » Programando para Internet » PHP »

Header Location en IE

Estas en el tema de Header Location en IE en el foro de PHP en Foros del Web. Hola, foro. Os traigo un poltergeist para ver si me podéis dar alguna idea de por dónde está el fallo. Al hacer una redirección con ...
  #1 (permalink)  
Antiguo 25/09/2008, 09:04
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Exclamación Header Location en IE

Hola, foro. Os traigo un poltergeist para ver si me podéis dar alguna idea de por dónde está el fallo.

Al hacer una redirección con el siguiente código en IE 6 (XP SP1) a veces se queda la página en blanco (no hay código que ver)
Código php:
Ver original
  1. function redirect($url)
  2. {
  3. trigger_error($url, E_USER_WARNING);
  4.  
  5. //header("Cache-Control: no-store, no-cache, must-revalidate");
  6.  
  7. //header("HTTP/1.1 301 Moved Permanently");
  8.  
  9. header('Location: '.$url);
  10.            
  11. }
(Las líneas comentadas son cosas que he probado sin resultado satisfactorio.)

Cosas a resaltar:
· El valor de la variable $url es siempre correcto.
· En local va pero no así en el servidor. La diferencia más destacable es que el servidor funciona con PHP-CGI.
· En Firefox y en Safari funciona bien.

Ejemplo de cuando se queda en blanco.
Le doy a logout desde una pagina x. Se queda la pagina en blanco con la misma url de la pagina x. Sin embargo, en el registro se puede cómo se han hecho las peticiones de redirección.
Código:
[25-09-2008 07:58:03] - User Warning - /***/test/lib/helpers/url.helper.php, line 28 (/test/admin/root/cuenta/logout/)
http://***/test/root/base/

[25-09-2008 07:58:04] - User Warning - /***/test/lib/helpers/url.helper.php, line 28 (/test/root/base/)
http://***/test/root/base/home/
Se agredece cualquier cosa que se os ocurra
  #2 (permalink)  
Antiguo 25/09/2008, 09:19
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Header Location en IE

Y si utilizas meta?...
Código PHP:
function redirect($url){
    
$delay "0.1"
    
$cadena '<meta http-equiv="refresh" content="'.$delay.'; url='.$url.'">';
    print 
$cadena;
    exit;

__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 25/09/2008, 09:43
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Header Location en IE

Funciona! Muchas gracias, Marvin!

Lo 'malo' de este método es que se realiza una pequeña pausa en cada script por el que pasa. Lo que haré será mirar el navegador. Si es IE, lo haré con meta. Si no, con header.

Una pregunta Marvin. ¿Por qué pones un delay de 0.1 y no 0 directamente?
  #4 (permalink)  
Antiguo 25/09/2008, 09:54
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Header Location en IE

Por nada en especial... como son milisegundos puse el minimo no mas pero no acostumbro a poner los limites (0)

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 25/09/2008, 10:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Header Location en IE

Creo el problema es por el trigger_warning, ya que eso te envia contenido al cliente, por lo que en teoria no deberia de funcionar ni si quiera con Firefox u Opera.

Saludos.
  #6 (permalink)  
Antiguo 25/09/2008, 12:41
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Header Location en IE

El trigger lo puse para ver el contenido de $url, pero eso fue al debugar. Antes ya pasaba.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:05.