Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/11/2006, 20:02
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Creo que la solución no está del lado del "cliente" .. es decir, de hacer que en cierto navegador no fucione el botón "F5" o el menú contextual.

El problema que tienes es más de "base" .. No sé por qué dices que usas sesiones para resolver el problema puntual .. pero en general el problema se resuelve "ordenando" tu código y viendo bien como va el flujo de datos entre cliente-servidor.

Podrías indicar algo del código que usas .. pero en general "imagino" que tienes situaciones tipo:

Formulario HTML -> (metodo POST/GET) envia datos a script PHP (o bien formulario HTML y proceso PHP están en el mismo script), y .. ahí al terminar tu proceso (tal de de ingreso de datos a una BBDD o similar) .. presentas tu mensaje de "error" o de "exito" tras finalizar el proceso en ese mismo script y proceso.

Bien . .este tipo de situaciones se resuelve redireccionado al terminar el proceso de insercción de datos a tus BBDD o similar, aunque sea a si mismo (script) .. lo importante es ver que al redireccionar tu navegador se va a deshacer de toda "variable" que pueda haber almacenado justamente con el fín de que si recargas la página se vuelva a enviar esa información.


Código PHP:
<?
// proceso PHP ...
if (proceso){
   
header ("Location: mensajes.php?msg=ok");
   exit;
} else {
    
header ("Location: mensajes.php?msg=falla");
   exit;
}
?>
El script PHP de proceso o secuencia de proceso dentro de otro script que haga várias taréas ha de ser aislado, sin HTML que se genere en ese punto, nuestro objetivo no es "componer una página HTML" en ese caso sino la de "redireccionar" (con cabeceras HTTP) hacia la página (script PHP) que nos gestione el mostrar el mensaje de error adecuado (para eso me ayudo de una pequeña variable de control "msg" que propago en el URL y así procesaré el valor que llegue en el script que uso para mostrar mensajes).

En este caso o con esta "técnica" si tu recargas la página, recargas la que muestra el "mensaje" no la que hace el proceso. De hecho al redireccionar vía cabeceras HTTP y no haber generado "salida" en tu script o parte del "proceso" nunca llegarás ahí ni con el botón "atras" de tu navegador ni con el historial ni similar.

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