Maison  >  Article  >  développement back-end  >  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
Linda Hamiltonoriginal
2024-10-21 21:32:02857parcourir

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>

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!

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