Maison  >  Article  >  développement back-end  >  PHP anti-shake : dites adieu aux problèmes liés aux soumissions répétées

PHP anti-shake : dites adieu aux problèmes liés aux soumissions répétées

WBOY
WBOYoriginal
2023-10-12 09:48:251243parcourir

PHP 防抖:告别重复提交的烦恼

PHP Anti-Shake : Dites adieu aux problèmes liés aux soumissions répétées

Dans le développement d'applications Web, les soumissions de formulaires sont souvent rencontrées. Cependant, en raison de l'instabilité du réseau ou d'un fonctionnement inapproprié des utilisateurs, les utilisateurs peuvent soumettre des formulaires à plusieurs reprises, ce qui entraîne des problèmes dans le traitement des données. Afin de résoudre ce problème, nous pouvons utiliser la technologie PHP anti-shake pour éviter efficacement les soumissions répétées et améliorer l'expérience utilisateur.

Qu'est-ce que l'anti-secousse ?
Anti-shake est une technologie frontale couramment utilisée pour résoudre le problème des opérations répétées causées par des événements fréquemment déclenchés. Dans le développement PHP, nous pouvons définir un délai approprié pour désactiver le bouton de soumission du formulaire dans le délai spécifié après que l'utilisateur a soumis le formulaire afin d'empêcher l'utilisateur de cliquer à plusieurs reprises sur le bouton de soumission.

Implémentation détaillée
Nous allons maintenant montrer comment utiliser PHP pour implémenter la fonction anti-shake de formulaire. Tout d’abord, nous devons ajouter un morceau de code JavaScript à la page du formulaire pour désactiver le bouton de soumission. Le code est le suivant :

<script>
    function debounce(callback, delay) {
        let timer;
        return function() {
            clearTimeout(timer);
            timer = setTimeout(callback, delay);
        }
    }
  
    document.querySelector('form').addEventListener('submit', function(event) {
        event.preventDefault(); // 阻止表单默认提交
        let form = this;
        let submitButton = form.querySelector('button[type="submit"]');
      
        // 禁用提交按钮
        submitButton.disabled = true;
      
        // 1秒后重新启用提交按钮
        let enableSubmitButton = debounce(function() {
            submitButton.disabled = false;
        }, 1000);
      
        enableSubmitButton();
    });
</script>

Dans le code ci-dessus, nous définissons une fonction nommée debounce pour implémenter la fonction anti-shake. Cette fonction accepte deux paramètres : callback est la fonction de rappel à exécuter, et delay est le temps de retard. Dans l'événement de soumission du formulaire, nous créons une fonction anti-rebond enableSubmitButton et la lions à l'événement click du bouton de soumission. Lorsque vous cliquez sur le bouton de soumission, cette fonction est déclenchée, désactive le bouton de soumission et réactive le bouton après 1 seconde. debounce的函数,用于实现防抖功能。该函数接受两个参数:callback为要执行的回调函数,delay为延迟时间。在表单提交事件中,我们创建了一个防抖函数enableSubmitButton,并将其绑定到提交按钮的点击事件上。在点击提交按钮时,该函数会被触发,禁用提交按钮,并在1秒后重新启用按钮。

接下来,我们在PHP后端代码中进行处理。首先,我们需要判断表单是否已经提交过一次。为了实现这个功能,我们可以通过在表单页面中添加一个隐藏字段来记录提交次数。代码如下:

<form method="POST" action="submit.php">
    <!-- 其他表单字段 -->
    <input type="hidden" name="submitCount" value="0">
    <button type="submit">提交</button>
</form>

在后端PHP代码中,我们需要对提交次数进行判断,并进行相应的处理。代码如下:

<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $submitCount = isset($_POST['submitCount']) ? (int)$_POST['submitCount'] : 0;
  
    if ($submitCount === 0) {
        // 首次提交,进行数据处理
        // ...
      
        // 修改提交次数为1
        $_POST['submitCount'] = 1;
    } else {
        // 重复提交,直接返回响应
        echo '请勿重复提交!';
        exit;
    }
}

在上述代码中,我们使用$_POST['submitCount']

Ensuite, nous le traitons dans le code backend PHP. Tout d’abord, nous devons déterminer si le formulaire a été soumis une seule fois. Afin de réaliser cette fonction, nous pouvons enregistrer le nombre de soumissions en ajoutant un champ masqué à la page du formulaire. Le code est le suivant :

rrreee

Dans le code PHP back-end, nous devons juger du nombre de soumissions et les traiter en conséquence. Le code est le suivant :

rrreee
Dans le code ci-dessus, nous utilisons la variable $_POST['submitCount'] pour obtenir le nombre de soumissions. Si le nombre de soumissions est 0, effectuez le traitement des données. et modifiez le nombre de soumissions à 1. Si le nombre de soumissions n'est pas 0, cela signifie que l'utilisateur a soumis à plusieurs reprises, et nous renvoyons directement un message d'invite pour empêcher le traitement des données.

🎜En utilisant le code ci-dessus, nous pouvons implémenter la fonction PHP anti-shake, qui améliore l'expérience utilisateur tout en évitant les soumissions répétées. Il convient de noter qu'en raison des différentes vitesses de fonctionnement des utilisateurs, plusieurs soumissions peuvent survenir dans un laps de temps très court. Par conséquent, nous pouvons ajuster le temps de retard dans le code en fonction de la situation réelle pour obtenir de meilleurs résultats. 🎜🎜Résumé🎜En utilisant la technologie PHP anti-shake, nous pouvons efficacement empêcher les utilisateurs de soumettre des formulaires à plusieurs reprises, réduire le traitement des données en double et améliorer l'expérience utilisateur. Dans le développement réel d'un projet, une utilisation appropriée de la technologie anti-tremblement peut améliorer considérablement les performances et l'expérience utilisateur des applications de sites Web. En utilisant l'exemple de code ci-dessus, vous pouvez facilement implémenter la fonction anti-shake PHP et dire adieu aux problèmes des soumissions répétées. 🎜

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