Foros del Web » Programando para Internet » PHP »

Forzar recarga de página al presionar botón atrás.

Estas en el tema de Forzar recarga de página al presionar botón atrás. en el foro de PHP en Foros del Web. Hola foristas... Tengo una duda y parece ser que el funcionamiento de este sitio tiene la respuesta que yo busco. Tengo una página "A" que ...
  #1 (permalink)  
Antiguo 02/02/2009, 14:12
 
Fecha de Ingreso: junio-2008
Mensajes: 76
Antigüedad: 15 años, 10 meses
Puntos: 0
Forzar recarga de página al presionar botón atrás.

Hola foristas...

Tengo una duda y parece ser que el funcionamiento de este sitio tiene la respuesta que yo busco.

Tengo una página "A" que por un link me envia a la página "B" y también al revés.
En la página "A" muestro datos de una BD... En la página "B", por funcionalidad, si edito algun valor del usuario guarda el dato editado y se mantiene al usuario en la página "B". Pero al presionar el botón "atrás" del navegador, no puedo ver los datos actualizados en la página "A". Yo quisiera que el usuario solo siguiera links y así no tener problemas, pero ese comportamiento es sólo "ideal".

Entonces deseo modificar datos en la pagina "B", y mostrar los datos actualizaos en la página "A" al presionar atrás. Forzar una recarga completa de la página... al parecer este portal funciona así... y si alguien utiliza "Google Analytics", también puede ver un comportamientos similar.

He probado headers y demás con el típico "no-cache", "expires" y otros... pero no funcionan... y como es lógico quiero hacer que la recarga de la página funcione para IE, FF, Opera... y después poderlo escalar a otros.

Saludos.
  #2 (permalink)  
Antiguo 02/02/2009, 14:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Forzar recarga de página al presionar botón atrás.

Hola ZICCO,

Como comentas tienes que jugar con la cabecera para evitar el "cache" del explorador, ya que "forzar la recarga" esta fuera de lo que es PHP ya que es control en el cliente y PHP no puede detectar si el usuario pulso "atras" o pulso un link.

Esa tarea es del navegador el hacer la petición HTTP correcta, para eso las cabeceras, por eso lo ideal es usar no-cache y con una fecha de modificación en el pasado así forzas al navegador a hacer un request HTTP aunque el usuario haga "atras" en su navegador.

Saludos
  #3 (permalink)  
Antiguo 02/02/2009, 16:13
 
Fecha de Ingreso: junio-2008
Mensajes: 76
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Forzar recarga de página al presionar botón atrás.

Bueno, no crea que sea un caso completamente fuera de PHP, si fuera así no existirían términos como éste para eviar el caché de una página web desde el servidor:

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
...
...

Lo que todo mundo dice en la red, sólo funciona para IE. Pero aún faltan FF, Opera y el nuevo Chrome (que no he probado hasta el momento).
  #4 (permalink)  
Antiguo 02/02/2009, 16:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Forzar recarga de página al presionar botón atrás.

Si lees el Manual de PHP header() envia una cabecera al navegador, si el navegador decide omitirla PHP no puede hacer nada, es simplemente parte del prótocolo HTTP.

Como te comento es algo totalmente independiente a PHP, es solo control del navegador, y ver como se comporta en base a lo que se le indique, tu mismo puedes probarlo si envias un header("Content-type: text/plain"); puedes ver que una pagina HTML se transforma en un documento de texto, esto es del navegador, pero si el navegador decide omitir leer la cabecera Content-type no puedes hacer mucho.

Te recomiendo leer el RFC 2616 donde te indica que cabeceras debes de enviar y como (en teoria) se debe de comportar el navegador.

Saludos
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 20:35.