Maison > développement back-end > tutoriel php > Comment empêcher les insertions multiples lors de la soumission de formulaires en PHP ?

Comment empêcher les insertions multiples lors de la soumission de formulaires en PHP ?

Linda Hamilton
Libérer: 2024-10-21 21:32:02
original
944 Les gens l'ont consulté

How to Prevent Multiple Inserts When Submitting Forms in PHP?

Empêcher les insertions multiples lors de la soumission d'un formulaire en PHP

Plusieurs insertions lors de la soumission d'un formulaire peuvent se produire lorsque l'utilisateur appuie plusieurs fois sur le bouton de soumission. Cela peut conduire à une duplication involontaire des données. Il existe plusieurs approches pour résoudre ce problème :

  1. Désactivation du bouton de soumission JavaScript :

    Cette méthode utilise JavaScript pour désactiver le bouton de soumission une fois qu'il est cliqué. Cependant, elle n'est pas fiable car les formulaires peuvent être soumis sans utiliser le bouton ou avec JavaScript désactivé.

  2. Horodatage de session PHP :

    Cette approche définit une variable de session ($_SESSION['posttimer']) sur l'horodatage actuel lors de la soumission du formulaire. Lors du traitement du formulaire, il vérifie si la variable existe et la compare à l'horodatage actuel. Si le décalage horaire est inférieur à un seuil prédéfini (par exemple 2 secondes), une double soumission est détectée.

  3. Inclusion de jeton unique :

    Cette méthode consiste à inclure un jeton unique dans chaque formulaire. Une variable de session contient le jeton utilisé dans le formulaire. Lors de la soumission du formulaire, un nouveau jeton est généré. Si le jeton soumis ne correspond pas au jeton de session, cela est considéré comme une double soumission. Exemple :

    <code class="php">// form.php
    $_SESSION['token'] = md5(session_id() . time());
    
    echo '<form action="foo.php" method="post">
           <input type="hidden" name="token" value="' . $_SESSION['token'] . '" />
           <input type="text" name="bar" />
           <input type="submit" value="Save" />
        </form>';
    
    // foo.php
    if (isset($_SESSION['token'])) {
        if (isset($_POST['token']) && $_POST['token'] != $_SESSION['token']) {
            // Double submit detected
        }
    }</code>
    Copier après la connexion

En implémentant l'une de ces méthodes, vous pouvez efficacement empêcher les insertions multiples lors de la soumission de formulaires en PHP, garantissant l'intégrité des données et évitant la duplication involontaire.

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
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