Désactivez le bouton immédiatement après avoir cliqué dessus. Si la soumission échoue, restaurez le bouton, sinon il sera redirigé vers la page de réussite.
Ou après avoir cliqué, un masque apparaîtra.
Cependant, les deux solutions ci-dessus nécessitent js. Pourquoi ne veux-tu pas utiliser js ?
Peut être contrôlé depuis le front et le backend :
Ajoutez une logique de contrôle frontal pour désactiver le bouton "Publier" lorsque l'utilisateur clique pour publier
Ajouter une logique de contrôle en arrière-plan. Lorsqu'une demande de publication est envoyée, vérifiez si la personne a envoyé une publication avec le même titre et le même contenu. Si tel est le cas, interdisez la création de cette publication en double
Vous pouvez générer un identifiant lorsque le modèle est rendu, puis soumettre l'identifiant ensemble lors de la soumission, puis le comparer avec le backend, de sorte que si l'identifiant transmis est incorrect, le traitement sera ignoré.
Premièrement, une solution plus simple consiste à utiliser la fonction anti-rebond pour limiter la fréquence des déclencheurs de rappel DOM.
Deuxièmement, si vous devez encore considérer la situation dans laquelle les utilisateurs désactivent js à cette époque, ne le faites pas au niveau du front-end.
La page actuelle génère un identifiant unique. Lors de la soumission, le serveur détermine qu'elle ne sera traitée qu'une seule fois. Par exemple, la page de soumission du formulaire de laravel a un csrf_token
Ensuite, écrivez le vôtre csrf en arrière-plan. Fournissez quelques idées et générez automatiquement une clé. Apportez la clé lors de la soumission du contenu. Si elles sont identiques, réinitialisez-la ou effacez-la. juste une soumission en double
Formulaire postez une chaîne aléatoire de champs cachés et placez-la dans la session Lorsque le programme reçoit cette chaîne aléatoire et la compare avec la chaîne de la session, si elle est la même, il la soumettra et si ce n'est pas pareil, cela provoquera une comparaison d'erreur. Réinitialisez simplement cette session
1. Vérification JS, désactivez le bouton de soumission après la soumission 2. Vérification côté serveur, chaque fois que la page est actualisée, un jeton sera généré dans la page lors de la soumission des données au serveur. jugé si le jeton est valide, puis les données seront traitées et le jeton sera détruit, si le front-end le soumet à plusieurs reprises, il ne sera certainement pas traité car le jeton est détruit
Désactivez le bouton immédiatement après avoir cliqué dessus. Si la soumission échoue, restaurez le bouton, sinon il sera redirigé vers la page de réussite.
Ou après avoir cliqué, un masque apparaîtra.
Cependant, les deux solutions ci-dessus nécessitent js. Pourquoi ne veux-tu pas utiliser js ?
Le bouton 1.JS empêche les clics répétés
2. Contrôle du cache côté serveur, la méthode consiste à écrire à plusieurs reprises la bibliothèque
3. Créez un index unique dans la base de données (par exemple, le titre du message est unique et ne peut pas être répété)
Peut être contrôlé depuis le front et le backend :
Ajoutez une logique de contrôle frontal pour désactiver le bouton "Publier" lorsque l'utilisateur clique pour publier
Ajouter une logique de contrôle en arrière-plan. Lorsqu'une demande de publication est envoyée, vérifiez si la personne a envoyé une publication avec le même titre et le même contenu. Si tel est le cas, interdisez la création de cette publication en double
Vous pouvez générer un identifiant lorsque le modèle est rendu, puis soumettre l'identifiant ensemble lors de la soumission, puis le comparer avec le backend, de sorte que si l'identifiant transmis est incorrect, le traitement sera ignoré.
Premièrement, une solution plus simple consiste à utiliser la fonction anti-rebond pour limiter la fréquence des déclencheurs de rappel DOM.
Deuxièmement, si vous devez encore considérer la situation dans laquelle les utilisateurs désactivent js à cette époque, ne le faites pas au niveau du front-end.
Ce problème ne peut pas être résolu en s'appuyant uniquement sur le front-end.
Ajoutez la mise en cache, utilisez Map pour une seule machine et utilisez Redis pour la mise en cache distribuée.
Utilisez les procédures stockées Mysql pour transmettre la pression de concurrence à la base de données
Verrouillage, verrouillage optimiste ou verrouillage pessimiste
Clé unique
La page actuelle génère un identifiant unique. Lors de la soumission, le serveur détermine qu'elle ne sera traitée qu'une seule fois. Par exemple, la page de soumission du formulaire de
.laravel
a uncsrf_token
Ensuite, écrivez le vôtre
csrf
en arrière-plan. Fournissez quelques idées et générez automatiquement une clé. Apportez la clé lors de la soumission du contenu. Si elles sont identiques, réinitialisez-la ou effacez-la. juste une soumission en doubleFormulaire postez une chaîne aléatoire de champs cachés et placez-la dans la session
Lorsque le programme reçoit cette chaîne aléatoire et la compare avec la chaîne de la session, si elle est la même, il la soumettra et si ce n'est pas pareil, cela provoquera une comparaison d'erreur. Réinitialisez simplement cette session
1. Vérification JS, désactivez le bouton de soumission après la soumission
.2. Vérification côté serveur, chaque fois que la page est actualisée, un jeton sera généré dans la page lors de la soumission des données au serveur. jugé si le jeton est valide, puis les données seront traitées et le jeton sera détruit, si le front-end le soumet à plusieurs reprises, il ne sera certainement pas traité car le jeton est détruit