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
Libérer: 2024-11-15 05:52:02
original
946 Les gens l'ont consulté

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>
Copier après la connexion

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!

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