Maison  >  Questions et réponses  >  le corps du texte

python - 如何防止狂点提交表单按钮导致的数据重复?

高洛峰高洛峰2712 Il y a quelques jours1558

répondre à tous(12)je répondrai

  • PHP中文网

    PHP中文网2017-04-18 10:07:45

    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 ?

    répondre
    0
  • 迷茫

    迷茫2017-04-18 10:07:45

    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é)

    répondre
    0
  • 阿神

    阿神2017-04-18 10:07:45

    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

    • .

    répondre
    0
  • 迷茫

    迷茫2017-04-18 10:07:45

    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é.

    répondre
    0
  • PHPz

    PHPz2017-04-18 10:07:45

    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.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 10:07:45

    Ce problème ne peut pas être résolu en s'appuyant uniquement sur le front-end.

    1. Ajoutez la mise en cache, utilisez Map pour une seule machine et utilisez Redis pour la mise en cache distribuée.

    2. Utilisez les procédures stockées Mysql pour transmettre la pression de concurrence à la base de données

    3. Verrouillage, verrouillage optimiste ou verrouillage pessimiste

    4. Clé unique

    répondre
    0
  • 怪我咯

    怪我咯2017-04-18 10:07:45

    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

    .

    répondre
    0
  • 怪我咯

    怪我咯2017-04-18 10:07:45

    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

    répondre
    0
  • 迷茫

    迷茫2017-04-18 10:07:45

    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

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 10:07:45

    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

    .

    répondre
    0
  • Annulerrépondre