La soumission de formulaires en double 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 de candidature qui rencontreront des problèmes de soumission répétés, tels que :
Cliquez deux fois sur le bouton Soumettre. Cliquez sur le bouton Actualiser. Utilisez le bouton Précédent du navigateur pour répéter l'action précédente, ce qui entraîne des soumissions répétées du formulaire. Soumettez le formulaire à plusieurs reprises en utilisant l'historique du navigateur. Requêtes HTTP en double du navigateur.
Plusieurs façons d'éviter les soumissions répétées de formulaires
1 Désactivez le bouton d'envoi . Utilisez Javascript pour désactiver le bouton d'envoi une fois le formulaire soumis. Cette approche empêche les utilisateurs impatients de cliquer plusieurs fois sur le bouton. Mais il y a un problème. Si le client désactive Javascript, cette méthode ne sera pas valide.
Dans mon article précédent, je disais que l'utilisation de certains plug-ins Jquery fonctionnait bien.
2. Mode Post/Redirection/Obtenir. La redirection de page après la soumission est ce que l'on appelle le modèle Post-Redirect-Get (PRG). En bref, lorsque l'utilisateur soumet le formulaire, vous effectuez une redirection côté client et accédez à la page d'informations sur la réussite de la soumission.
Cela peut éviter les soumissions répétées provoquées par l'utilisateur appuyant sur F5, et il n'y aura aucun avertissement concernant les soumissions répétées du formulaire du navigateur. Cela peut également éliminer les mêmes problèmes causés par l'appui sur les boutons avant et arrière du navigateur. .
3. Stockez un drapeau spécial dans la session. Lorsque la page de formulaire est demandée, une chaîne de caractères spéciale est générée, stockée dans la session et placée dans le champ masqué du formulaire. Lors de l'acceptation et du traitement des données du formulaire, vérifiez si la chaîne d'identification existe, supprimez-la immédiatement de la session, puis traitez les données normalement.
S'il s'avère qu'il n'y a pas de chaîne d'indicateur valide dans la soumission du formulaire, cela signifie que le formulaire a déjà été soumis et que cette soumission est ignorée.
Cela donne à votre application Web une protection XSRF plus avancée.
4. Ajouter des contraintes dans la base de données. Ajoutez des contraintes uniques ou créez des index uniques dans la base de données pour éviter les données en double. Il s’agit du moyen le plus efficace d’éviter la soumission de données en double.
Ce qui précède est une introduction à ces quatre méthodes. Si vous avez de meilleures solutions, veuillez nous le faire savoir. Cet article continuera à être mis à jour.
Pour plus d'articles sur la façon d'empêcher les utilisateurs de soumettre des formulaires à plusieurs reprises, veuillez prêter attention au site Web PHP chinois !