Foros del Web » Programando para Internet » PHP »

Cosa curiosa: cookies y headers con PHP en IIS

Estas en el tema de Cosa curiosa: cookies y headers con PHP en IIS en el foro de PHP en Foros del Web. Os voy a comentar una cosa curiosa, si alguien tiene una explicación a este extraño comportamiento pues que lo diga... Trabajo con cookies, y pretendo ...
  #1 (permalink)  
Antiguo 15/12/2003, 16:33
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
Cosa curiosa: cookies y headers con PHP en IIS

Os voy a comentar una cosa curiosa, si alguien tiene una explicación a este extraño comportamiento pues que lo diga...

Trabajo con cookies, y pretendo hacer un logout para los usuarios. Se trata de destruir la cookie y redireccionar a una página. Aquí esta lo curioso. Si pongo:
Código PHP:
setcookie($cook,'',time()-60); //Destruimos cookie
header("Location: pagina.php"); 
No destruye la cookie, pero sí redirecciona a la página. Para hacer lo que yo quiero, debo usar esto:
Código PHP:
setcookie($cook,'',time()-60); //Destruimos cookie
echo "<script>location.href='pagina.php'</script>"
De esta forma sí destruye la cookie y luego redirecciona.

Decir que esto pasa con PHP en IIS, pero no sucede con PHP bajo Apache. Espero que os sirva si alguna vez os encontrais en esta situación.

Chao
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #2 (permalink)  
Antiguo 16/12/2003, 06:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
He escuchado vários Expedientes X sobre IIS y trabajo con cookies/sesiones y en general con cabeceras HTTP .. No conozco ese servidor HTTP .. pero seguro que alguna cabecera "???" está enviando (al navegador) que interfiere con otras que envian dichas funciones.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 16/12/2003, 11:17
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años
Puntos: 68
uffff... Si buscaras en los Foros, encontrarias un post Viejisimo mio con el mismo problema... :D que tiempos aquellos.
Sucede que es un "bug" del IIS. Hay que acordarse, que las cabeceras HTTP se envian en el IIS, en el sentido INVERSO al que se definen en el codigo, por eso, tu cabecera "location" se envia ANTES que la cabecera que destruye la cookie. Es raro, pero es asi.
Por eso, lo que yo tuve que hacer para solucionar eso, fue cambiar "location" por "refresh", asi :

Código PHP:
<?php
setcookie
($cook,'',time()-60); //Destruimos cookie
header("Refresh: o,URL=pagina.php");
?>
Y con eso si vas a poder destruir la cookie y redireccionar.

Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #4 (permalink)  
Antiguo 16/12/2003, 16:27
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
Gracias a los dos

Webstudio, probé eso y el resultado es que se destruye la cookie, pero en vez de redireccionar a la página, el logout.php (la página donde está ese codigo) entra en un bucle infinito de autoactualizarse, es decir, no redirecciona sino que se autoactualiza una y otra vez.

Quizá sea un error en el codigo, si lo puedes revisar... Ah, en el codigo pusiste una o en vez de un cero, o sea lo que yo puse fue esto:
Código PHP:
<?php
setcookie
($cook,'',time()-60); //Destruimos cookie
header("Refresh: 0,URL=pagina.php");
?>
Pero ni cambiando la o por un cero funciona...
Chao

P.D.: p**o Micro$soft :-p
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #5 (permalink)  
Antiguo 16/12/2003, 17:04
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 15 años, 1 mes
Puntos: 4
para revizar problemas ente el envio de cookies y la recepcion del browser, activa la opcion de tu browser para q pregunte por cada cookie recibida.

yo lo hgao en opera (7.23).
__________________
Blog | Tecnosquad
  #6 (permalink)  
Antiguo 17/12/2003, 06:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm Webstudio .. ahora que lo dices si que recuerdo aquél Post ..

Si confirman el tema (Webstudio-Ferny) podrían colocar el comentario en una FAQ .. no les parece?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 17/12/2003 a las 06:54
  #7 (permalink)  
Antiguo 17/12/2003, 10:51
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años
Puntos: 68
Ferny, mis disculpas, siempre pero siempre siempre me pasa lo mismo, olvido que en vez de separar el tiempo y URL= por una coma, se separa por ";" ( punto y coma ).
Alli si hará el redirect correctamente.

Por mi, ningún problema en ponerlo en un FAQ.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #8 (permalink)  
Antiguo 17/12/2003, 14:23
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
Gracias, ahora parece que funciona. El código exacto del logout.php es:
Código PHP:
<?
include 'intercambio/config.php';
setcookie($cook,'',time()-60); //Destruimos cookie
header("Refresh: 0;URL=subir.php");
?>
El archivo incluido solo contiene unas variables, nada interesante...

Por mi lo añadimos a una FAQ, si estais de acuerdo podría titularse como este post: "Cookies y Headers en PHP con IIS" o algo así. Como contenido yo pondría una breve descripcion del problema y un link hacia este tema.
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #9 (permalink)  
Antiguo 17/12/2003, 14:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok, ferny .. adelante con la FAQ.

Ademas .. mm supongo que será valido el redireccionamiento para sessiones? (sobre todo cuando se propaga el SID en cookies).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 05:20.