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:
- ¿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)?
- ¿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.