Foros del Web » Programando para Internet » PHP »

Solicitud de consejo: Evitar recargar información

Estas en el tema de Solicitud de consejo: Evitar recargar información en el foro de PHP en Foros del Web. Estoy desarrollando un sistema utilizando PHP/MySQL y tengo el inconveniente que el usuario puede "actualizar" el explorador, con lo que el proceso realiza la misma ...
  #1 (permalink)  
Antiguo 30/05/2010, 08:04
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 2 meses
Puntos: 21
Solicitud de consejo: Evitar recargar información

Estoy desarrollando un sistema utilizando PHP/MySQL y tengo el inconveniente que el usuario puede "actualizar" el explorador, con lo que el proceso realiza la misma operación en forma duplicada, triplicada, etc.

Por ejemplo, si un cliente tiene un adeudo de $100, y se realiza un abono de $5, el saldo final debe ser $95. El problema es que si el usuario actualiza o recarga la página que almacenó el abono, se registra nuevamente el mismo abono de $5, con lo cual el saldo final será $90, así sucesivamente. Este mismo problema lo tengo en descargar existencias, etc.

Considerando que en este foro existen muchos desarrolladores de software, deseo puedan compartir el como resuelven este tipo de situaciones.

He visto en algunos sitios el uso de Frames, lo cual resuelve parcialmente el problema ya que al recargar se muestra la página de inicio, pero usuarios con mayor conocimiento pueden visualizar el código fuente y procesar la página que realiza la afectación, lo cual burlaría este tipo de seguridad.

He visto algunos sitios donde al intentar regresar el explorador se muestra el mensaje: "Esta página ha expirado", lo que me ayudaría mucho poder realizar.

PREGUNTAS:
  1. ¿Cuales son las opciones que se utilizan para evitar que el usuario almacene una misma información en más de una ocasión (evitar recarga)?
  2. ¿Como puedo evitar que regresen el explorador y en su caso mostrar "La página ha expirado?

Lo que he pensado es generar a cada proceso de afectación un número de operación, el cual verificaré antes de almacenar la información que no haya sido procesado.

Agradeceré sugerencias.

Saludos.
  #2 (permalink)  
Antiguo 30/05/2010, 10:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Solicitud de consejo: Evitar recargar información

Lo más fácil es redirigir después de terminar de hacer el proceso usando header(), eso evita que al presionar F5 se vuelva a ejecutar el proceso y se duplique/triplique la información.

Saludos.
  #3 (permalink)  
Antiguo 30/05/2010, 10:50
Avatar de jamesjara  
Fecha de Ingreso: mayo-2008
Ubicación: san jose
Mensajes: 449
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: Solicitud de consejo: Evitar recargar información

Cita:
Lo que he pensado es generar a cada proceso de afectación un número de operación, el cual verificaré antes de almacenar la información que no haya sido procesado.
Mm con un llave unica podria ser.

Aunque lo que dice GatorV es mil veces mas facil.
__________________
X7CLOUD El webservice latino!
Compatible
con mysql,sql,sqlitte.
Compatible con extjs , sencha , smargwt, Gwt , Jquery , Charts, Streaming.
  #4 (permalink)  
Antiguo 30/05/2010, 15:01
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 2 meses
Puntos: 21
Respuesta: Solicitud de consejo: Evitar recargar información

Cita:
Iniciado por jamesjara Ver Mensaje
Mm con un llave unica podria ser.

Aunque lo que dice GatorV es mil veces mas facil.
Gracias a GatorV y jamesjara.

Ya tengo como no actualizar el explorador, en una parte de la solución.

Ahora se requiere no permitir regresar el explorador, ya que al poder regresar el explorador el problema a evitar sigue existiendo.

Gracias

Etiquetas: consejo, recargar, solicitud
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 08:36.