J'ai passé des semaines à travailler sur la double protection de soumission sur mes formulaires. Straightup, la méthode de session de stockage des jetons ne fonctionne pas. Les sessions fonctionnent bien pour un rafraîchissement de la page ou pour quelqu'un qui remonte son histoire ... mais le double classique en cliquant sur le bouton à plusieurs reprises ne peut pas être évité en utilisant des sessions.Méthode de jeton sur les formulaires, double Envoyer
Je pense que le script ne peut pas vérifier/écrire/supprimer des sessions assez rapidement pour intercepter l'erreur lorsque plusieurs clics sont traités en millisecondes les uns des autres.
Existe-t-il une autre méthode côté serveur pour éviter ce problème?
Monsieur, vous êtes bon. Cela semble fonctionner. J'ai rétabli la vérification des jetons dans ma classe de formulaires, mais j'ai utilisé la base de données au lieu des sessions. Je fais une légère variante de ce que vous avez suggéré - table avec id/token/used, insérer une ligne avec un token unique et used = false au début du formulaire, vérifier si la ligne est utilisée pour soumettre, et mettre à jour la ligne avec used = true . – swt83
Votre altération supprime beaucoup d'effort de l'atomicité: n'attendez pas de mettre l'habitude à vrai, et revendiquez-le avec un identifiant unique. Dans les 5ms entre votre vérification et la mise à vrai dire environ 10 autres processus ont peut-être venir. Certes, moins de chance alors toute une session écrire/charger, mais quand même. – Wrikken
J'apprécie cette différence et ai fait le changement. Merci beaucoup pour votre aide. – swt83