La soumission répétée du formulaire est le problème le plus courant dans les applications Web multi-utilisateurs et cause beaucoup de problèmes. Il existe de nombreux scénarios d'application qui rencontrent des problèmes de soumission en double, tels que:
Cliquez deux fois sur le bouton Soumettre. Cliquez sur le bouton Actualiser. Répétez les actions précédentes à l'aide du bouton de retour du navigateur, ce qui entraîne une soumission répétée du formulaire. Répétez les formulaires de soumission à l'aide de l'historique du navigateur. Demandes HTTP répétées du navigateur.
Plusieurs façons de prévenir les soumissions répétées de formes
1. Désactivez le bouton Soumettre . Utilisez JavaScript pour faire en sorte que le bouton Soumettre désactiver une fois le formulaire soumis. Cette méthode empêche les utilisateurs impatients de cliquer plusieurs fois sur les boutons. Mais il y a un problème. Si le client interdit JavaScript, cette méthode sera invalide.Mon article précédent a indiqué que l'utilisation de certains plugins jQuery fonctionne bien.
2.Post/redirect/get . Effectuez la redirection de la page après la soumission, qui est appelée mode post-redirect-get (PRG). En bref, lorsque l'utilisateur soumet le formulaire, vous effectuez une redirection du client et accédez à la page d'informations sur la réussite de la soumission.Cela peut éviter les soumissions répétées causées par les utilisateurs appuyant sur F5, et il n'y aura aucun avertissement de soumissions répétées des formulaires de navigateur, et peut également éliminer les mêmes problèmes causés par l'avant et la rétrogradation des navigateurs.
3. Stockez un logo spécial dans la session . Lorsque la page de formulaire est demandée, une chaîne de drapeau de caractère spécial est générée, qui est présente dans la session et placée dans le champ caché du formulaire. Lorsque vous acceptez les données du formulaire de traitement, vérifiez si la chaîne d'identification existe et supprimez-la immédiatement de la session, puis traitez les données normalement.Si vous constatez qu'il n'y a pas de chaîne de drapeau valide dans la soumission du formulaire, cela signifie que le formulaire a été soumis et que cette soumission est ignorée.
Cela offre à votre application Web une protection XSRF plus avancée.
4. Ajoutez des contraintes dans la base de données. Ajoutez des contraintes uniques dans la base de données ou créez des index uniques pour empêcher les données en double. C'est le moyen le plus efficace de prévenir les soumissions répétées de données.Ce qui précède est une introduction à ces 4 méthodes. Si vous avez une meilleure solution, dites-moi, et cet article sera mis à jour en continu.