Maison >développement back-end >tutoriel php >Comment empêcher la soumission de formulaires à clics multiples en PHP à l'aide de jetons uniques ?

Comment empêcher la soumission de formulaires à clics multiples en PHP à l'aide de jetons uniques ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-12 06:23:02516parcourir

How to Prevent Multiple Click Form Submission in PHP Using Unique Tokens?

Prévention de l'envoi de formulaires en plusieurs clics en PHP

Dans les applications Web, empêcher l'envoi de plusieurs formulaires peut améliorer l'expérience utilisateur et l'intégrité des données. PHP propose une solution pour résoudre ce problème.

Solution : jeton unique

PHP utilise des jetons uniques, générés à chaque fois qu'un formulaire est affiché. Ce jeton ne peut être utilisé qu'une seule fois. La mise en œuvre d'un système de jetons empêche non seulement l'envoi de plusieurs formulaires, mais protège également contre la falsification de requêtes intersites (CSRF) et les attaques par relecture.

Exemple de mise en œuvre :

<?php
session_start();

// Function to create a unique token
function getToken() {
  $token = sha1(mt_rand());
  $_SESSION['tokens'][$token] = 1;
  return $token;
}

// Function to validate a token
function isTokenValid($token) {
  if (isset($_SESSION['tokens'][$token])) {
    unset($_SESSION['tokens'][$token]);
    return true;
  }
  return false;
}

// Check if a form has been submitted
$postedToken = filter_input(INPUT_POST, 'token');
if ($postedToken) {
  if (isTokenValid($postedToken)) {
    // Process form
  } else {
    // Handling for invalid token
  }
}

// Generate a token for the displayed form
$token = getToken();
?>

<form method="post">
  <fieldset>
    <input type="hidden" name="token" value="<?php echo $token; ?>">
    <!-- Add form content -->
  </fieldset>
</form>

Considérations supplémentaires :

  • Combinez le système de jetons avec une redirection après la soumission du formulaire pour maintenir le comportement attendu du navigateur.
  • Référez-vous au modèle POST/redirection/GET pour plus d'informations sur la gestion appropriée des formulaires.

En implémentant cette solution basée sur des jetons, les développeurs PHP peuvent empêcher efficacement l'envoi de plusieurs formulaires, garantissant l'intégrité des données et améliorant l'expérience utilisateur.

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!

Déclaration:
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