Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelles sont les méthodes pour éviter la double publication dans un formulaire ? (PHP)

Si vous souhaitez éviter les doubles soumissions, vous devez stocker l'état "est soumis" par opposition à "n'est pas soumis". Vous avez plusieurs options pour savoir où conserver ces informations.

  • Base de données - Ajoutez un champ masqué avec une valeur générée automatiquement qui est unique (vous pouvez générer une courte chaîne aléatoire et y ajouter l'heure actuelle). Cette valeur peut également être utilisée pour identifier la conversation, si vous avez besoin d'une conversation Web avec état. Ajoutez cette valeur à la base de données et rendez-la unique. Inconvénients :stockage redondant dans la base de données, performances réduites lors de l'insertion de commentaires, nécessité de générer une chaîne unique.
  • Session - Ajouter le même champ caché avec une valeur générée dans une affaire similaire. Lorsque l'utilisateur soumet le formulaire, enregistrez la valeur dans la session si elle n'y est pas déjà. Si c'est le cas, c'est une double soumission. Inconvénients :vous devez toujours générer le jeton unique.
  • Navigateur - (1) Ajoutez du javascript pour désactiver le bouton d'envoi une fois qu'il est cliqué. (2) ont un champ caché qui commence par la valeur 0 et est remplacé par 1 lorsque l'utilisateur clique sur le bouton Soumettre. Si l'utilisateur clique à nouveau sur le bouton, vous vérifiez si la valeur est 1 et abandonnez si c'est le cas. Avantages :pas de chaîne unique. Inconvénients :nécessite l'activation de javascript; vous pourriez de toute façon avoir besoin de la chaîne pour implémenter des conversations Web avec état.