Comment empêcher les soumissions multiples de formulaires avec PHP ?

Barbara Streisand
Libérer: 2024-11-09 14:26:02
original
651 Les gens l'ont consulté

How to Prevent Multiple Form Submissions with PHP?

Prévenir les soumissions multiples de formulaires avec PHP

Dans le développement Web, il est essentiel de se prémunir contre les soumissions multiples de formulaires lorsqu'un utilisateur clique à plusieurs reprises sur le bouton de soumission. bouton. Cela peut conduire à des résultats inattendus, tels que des entrées de données en double ou un comportement inattendu. PHP propose plusieurs techniques pour éviter ce problème.

Une approche efficace consiste à utiliser des jetons de formulaire uniques. Lorsqu'un formulaire est affiché, un jeton unique est généré et stocké dans la session. Lorsque le formulaire est soumis, le jeton est comparé à la version stockée. Si les jetons correspondent, la soumission du formulaire est traitée. Si ce n'est pas le cas, la soumission est rejetée, empêchant ainsi les soumissions multiples.

Voici une implémentation PHP simple :

session_start();

function getToken() {
  $token = sha1(mt_rand());
  if (!isset($_SESSION['tokens'])) {
    $_SESSION['tokens'] = array($token => 1);
  } else {
    $_SESSION['tokens'][$token] = 1;
  }
  return $token;
}

function isTokenValid($token) {
  if (!empty($_SESSION['tokens'][$token])) {
    unset($_SESSION['tokens'][$token]);
    return true;
  }
  return false;
}

$postedToken = filter_input(INPUT_POST, 'token');
if (!empty($postedToken)) {
  if (isTokenValid($postedToken)) {
    // Process form
  } else {
    // Handle error
  }
}

$token = getToken();
Copier après la connexion
<form method="post">
  <fieldset>
    <input type="hidden" name="token" value="<?php echo $token; ?>" />
    <!-- Add form content -->
  </fieldset>
</form>
Copier après la connexion

Pour améliorer la sécurité, combinez cette validation de jeton avec une redirection lors de la soumission du formulaire. Cela garantit que lorsqu'un utilisateur appuie sur le bouton Précédent, un nouveau formulaire s'affiche avec un nouveau jeton. Ce modèle, connu sous le nom de POST / redirect / GET, empêche en outre les soumissions multiples et maintient la compatibilité ascendante et ascendante.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal