Position actuelle: Accueil> Derniers articles> Comment prévenir les soumissions répétées des formes PHP: solutions pratiques

Comment prévenir les soumissions répétées des formes PHP: solutions pratiques

gitbox 2025-06-18

1. Problème Contexte

Dans le développement d'applications Web, les formulaires sont un moyen important pour les utilisateurs d'interagir avec le système. Cependant, les utilisateurs soumettent parfois des formulaires plusieurs fois, ce qui entraîne non seulement une duplication de données, mais peut également affecter les performances du système et la cohérence des données.

2. Solution

Pour éviter la soumission répétée des formulaires par les utilisateurs, nous pouvons adopter les solutions efficaces suivantes:

2.1 Désactiver le bouton Soumettre

Désactivez le bouton Soumettre via le code JavaScript pour empêcher les utilisateurs de cliquer plusieurs fois sur le bouton Soumettre. Voici l'exemple de code pertinent:

 
document.getElementById("submitBtn").disabled = true;
        

2.2 Générer des identifiants uniques

Lorsque le formulaire est chargé, un identifiant unique est généré et stocké dans une session ou un cookie. Lors de la soumission du formulaire, soumettez l'identifiant ensemble et vérifiez si l'identifiant existe du côté serveur. S'il existe, cela signifie qu'il s'agit d'une soumission répétée. Voici l'exemple de code:

 
// Générer des identifiants uniques
$token = md5(uniqid(rand(), true));
// Stocker l'identifiant àsessionoucookiemilieu
$_SESSION['form_token'] = $token;
// 在表单milieu添加隐藏字段来存储标识符
echo "<input type='hidden' name='form_token' value='{$token}'>";
        

Lors de la vérification de la soumission du côté serveur, comparez si l'identifiant soumis est conforme à l'identifiant stocké:

 
// Obtenez l&#39;identifiant soumis
$submittedToken = $_POST['form_token'];
// Obtenez l&#39;identifiant stocké
$storedToken = $_SESSION['form_token'];
// Comparez si les deux identifiants sont cohérents
if ($submittedToken === $storedToken) {
    // Exécuter le traitement de soumission de formulaire
    unset($_SESSION['form_token']);
} else {
    echo "Veuillez ne pas soumettre le formulaire à plusieurs reprises";
}
        

2.3 Redirection de la page

Après avoir soumis le formulaire, le serveur peut rediriger l'utilisateur vers une autre page (comme la page Soumettre réussie). De cette façon, même si l'utilisateur rafraîchit la page ou revient à la page de validation, le serveur sera traité comme un nouveau commit, empêchant ainsi les validations en double. L'exemple de code est le suivant:

 
// Traitement de la logique de soumission du formulaire
header("Location: success.php");
exit;
        

Il convient de noter que lors de la redirection de la page, des informations rapides appropriées doivent être fournies pour informer l'utilisateur que le formulaire a été soumis avec succès.

2.4 Utilisation de la technologie côté serveur

En plus de la solution frontale, nous pouvons également utiliser la technologie côté serveur pour empêcher les soumissions répétées de formulaires. Par exemple, une base de données peut être utilisée pour stocker des enregistrements pour chaque commit et vérifier le caractère unique de l'engagement.

3. Résumé

Empêcher les utilisateurs de soumettre des formulaires à plusieurs reprises est un problème important dans le développement Web. Ce problème peut être résolu efficacement en désactivant le bouton Soumettre, en générant des identifiants uniques, une redirection de page et une vérification côté serveur. Choisissez la solution appropriée en fonction des besoins spécifiques et optimisez l'expérience utilisateur.