El envío de formularios repetidos es el problema más común en las aplicaciones web de usuarios múltiples y causa muchos problemas. Hay muchos escenarios de solicitud que encuentran problemas de envío duplicados, como:
Haga clic en el botón Enviar dos veces. Haga clic en el botón Actualizar. Repita las acciones anteriores utilizando el botón Atrás del navegador, lo que resulta en el envío repetido del formulario. Repita los formularios de envío utilizando el historial del navegador. Solicitudes HTTP repetidas del navegador.
Varias formas de evitar repetidas presentaciones de formularios
1. Desactive el botón Enviar . Use JavaScript para que el botón Enviar se desactive después de que se envíe el formulario. Este método evita que los usuarios impacientes hagan clic en botones varias veces. Pero hay un problema. Si el cliente prohíbe a JavaScript, este método no será válido.Mi artículo anterior decía que usar algunos complementos jQuery funciona bien.
2.Post/REDIRECT/GET MODE . Realice la redirección de la página después del envío, que se llama modo post-redirect-get (PRG). En resumen, cuando el usuario envía el formulario, realiza una redirección del cliente y vaya a la página de información de éxito de envío.Esto puede evitar presentaciones repetidas causadas por usuarios que presionan F5, y no habrá advertencias de presentaciones repetidas de formularios de navegador, y también puede eliminar los mismos problemas causados por la presión hacia adelante y la contrapresión de los navegadores.
3. Almacene un logotipo especial en la sesión . Cuando se solicita la página del formulario, se genera una cadena de bandera de caracteres especial, que está presente en la sesión y se coloca en el campo oculto del formulario. Al aceptar los datos del formulario de procesamiento, verifique si la cadena de identificación existe y elimínelo de la sesión inmediatamente, y luego procese los datos normalmente.Si encuentra que no hay una cadena de bandera válida en el envío del formulario, significa que el formulario ha sido enviado y esta presentación se ignora.
Esto le da a su aplicación web una protección XSRF más avanzada.
4. Agregue restricciones en la base de datos. Agregue restricciones únicas en la base de datos o cree índices únicos para evitar datos duplicados. Esta es la forma más efectiva de prevenir las presentaciones repetidas de datos.Lo anterior es una introducción a estos 4 métodos. Si tiene una mejor solución, dígame, y este artículo se actualizará continuamente.