Maison >développement back-end >tutoriel php >Comment empêcher les soumissions multiples de formulaires en PHP : un guide complet

Comment empêcher les soumissions multiples de formulaires en PHP : un guide complet

Susan Sarandon
Susan Sarandonoriginal
2024-11-15 05:52:02948parcourir

How to Prevent Multiple Form Submissions in PHP: A Comprehensive Guide

Prévenir les soumissions de formulaires multiples en PHP : un guide complet

Les soumissions de formulaires multiples peuvent constituer un problème dans les applications Web, entraînant des conséquences inattendues. Cet article fournira une solution détaillée pour empêcher les soumissions multiples en PHP.

Solution utilisant des jetons

PHP offre une solution robuste utilisant des jetons uniques qui peuvent être générés et stockés dans session. Voici comment l'implémenter :

  1. Générer un jeton : Utilisez la fonction getToken() pour créer un jeton unique qui sera intégré au formulaire.
  2. Valider le jeton : Lorsque le formulaire est soumis, vérifiez la validité du jeton soumis à l'aide de la fonction isTokenValid($token). Si le jeton est valide, supprimez-le de la liste des jetons valides pour empêcher sa réutilisation.
  3. Afficher le formulaire : Obtenez un jeton pour le formulaire actuel à l'aide de getToken() et incluez-le en tant que jeton masqué. saisie dans le formulaire.

Code Exemple :

<?php
session_start();

function getToken(){
  $token = sha1(mt_rand());
  $_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) && isTokenValid($postedToken)){
  // Process Form
}

$token = getToken();
?>
<form method="post">
  <input type="hidden" name="token" value="<?php echo $token; ?>"/>
  <!-- Form Content -->
</form>

Redirections et compatibilité ascendante

Pour maintenir une navigation vers l'avant et l'arrière appropriée, il est recommandé d'implémenter un modèle POST/redirection/GET. Cela implique :

  1. POSTER le formulaire avec le jeton.
  2. Une fois la validation du jeton réussie, effectuer les actions souhaitées et rediriger l'utilisateur vers une nouvelle page.
  3. Utiliser une requête GET pour la page redirigée pour empêcher que le formulaire soit soumis à nouveau lorsque l'utilisateur clique sur le bouton "retour".

En suivant Ces étapes, vous pouvez efficacement empêcher l'envoi de plusieurs formulaires et garantir l'intégrité de votre application Web.

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