Maison  >  Article  >  développement back-end  >  Technologie PHP anti-shake : empêche efficacement les soumissions répétées

Technologie PHP anti-shake : empêche efficacement les soumissions répétées

王林
王林original
2023-10-12 09:58:55873parcourir

PHP 防抖技术:有效防止重复提交

Technologie PHP anti-shake : pour éviter efficacement les soumissions répétées, des exemples de code spécifiques sont nécessaires

Dans le développement Web, nous rencontrons souvent le problème des soumissions répétées par les utilisateurs, ce qui peut entraîner des opérations répétées, des anomalies de données et d'autres effets indésirables. effets. Afin de résoudre ce problème, nous pouvons utiliser la technologie PHP anti-shake pour empêcher efficacement les soumissions répétées. Cet article présentera les principes de la technologie anti-shake et donnera des exemples de code PHP spécifiques.

1. Principe de la technologie anti-shake

Le principe de la technologie anti-shake est très simple : lorsqu'un événement continue de se déclencher, nous ne pouvons exécuter la fonction de traitement qu'une seule fois dans un certain intervalle de temps pour éviter un traitement répété. Pour la soumission du formulaire, nous pouvons définir un temps d'attente et désactiver le bouton de soumission pendant le temps d'attente pour empêcher les utilisateurs de soumettre à plusieurs reprises.

2. Exemple de code utilisant la technologie anti-shake PHP

Ce qui suit est un exemple de code utilisant la technologie anti-shake PHP :

// 防抖函数
function debounce($fn, $delay) {
    $timer = null;
    return function () use ($fn, $delay, &$timer) {
        if ($timer !== null) {
            clearTimeout($timer);
        }
        $timer = setTimeout($fn, $delay);
    };
}

// 表单提交处理函数
function handleSubmit() {
    // 处理表单提交逻辑
    // ...

    // 完成提交后,重新启用提交按钮
    echo "<script>document.getElementById('submitBtn').removeAttribute('disabled');</script>";
}

// 处理表单提交的函数
$debouncedHandleSubmit = debounce('handleSubmit', 3000);

// 表单的HTML代码
echo '<form action="process.php" method="POST">';
echo '   <input type="text" name="username" placeholder="请输入用户名" required>';
echo '   <input type="password" name="password" placeholder="请输入密码" required>';
echo '   <button id="submitBtn" type="button" onclick="handleDebouncedSubmit()">提交</button>';
echo '</form>';

// 防抖处理函数的JavaScript代码
echo '<script>';
echo '   function handleDebouncedSubmit() {';
echo '       document.getElementById("submitBtn").setAttribute("disabled", "disabled");';
echo '       var form = document.querySelector("form");';
echo '       var formData = new FormData(form);';
echo '       var xhr = new XMLHttpRequest();';
echo '       xhr.open("POST", "process.php");';
echo '       xhr.send(formData);';
echo '   }';
echo '</script>';

Dans le code ci-dessus, nous définissons d'abord un anti-shake debounce function , qui accepte une fonction de traitement $fn et un temps d'attente $delay comme paramètres. Ensuite, nous définissons la fonction de traitement de soumission de formulaire handleSubmit. Ensuite, nous avons utilisé la fonction debounce pour créer une fonction de traitement anti-shake $debouncingHandleSubmit et définir un temps d'attente de 3 secondes (soit 3000 millisecondes). debounce防抖函数,它接受一个处理函数$fn和一个等待时间$delay作为参数。然后,我们定义了表单的提交处理函数handleSubmit。接着,我们使用debounce函数创建了一个防抖处理函数$debouncedHandleSubmit,并设置了一个等待时间为3秒(即3000毫秒)。

在HTML部分,我们创建了一个表单,并在提交按钮的onclick事件中调用了防抖处理函数handleDebouncedSubmit。在该函数中,我们首先禁用了提交按钮,然后使用JavaScript的XMLHttpRequest对象发送了一个POST请求到process.php

Dans la partie HTML, nous avons créé un formulaire et appelé la fonction de traitement anti-shake handleDebouncingSubmit dans l'événement onclick du bouton de soumission. Dans cette fonction, nous désactivons d'abord le bouton de soumission, puis utilisons l'objet XMLHttpRequest de JavaScript pour envoyer une requête POST à ​​la page process.php pour soumettre le formulaire. Enfin, une fois la soumission du formulaire terminée, nous réactivons le bouton de soumission via le code JavaScript.

Grâce à l'exemple de code ci-dessus, une fois que l'utilisateur a cliqué sur le bouton de soumission, nous désactiverons le bouton de soumission dans les 3 secondes pour empêcher l'utilisateur de soumettre à plusieurs reprises. De cette façon, nous pouvons éviter efficacement les problèmes de soumission en double.

Conclusion

La technologie PHP anti-shake peut empêcher efficacement les utilisateurs de soumettre des données à plusieurs reprises, garantissant ainsi l'exactitude et la sécurité des données. En exécutant la fonction de traitement une seule fois dans un certain intervalle de temps, nous pouvons éviter les effets néfastes causés par les opérations répétées de l'utilisateur. Dans le développement Web réel, nous pouvons utiliser de manière flexible la technologie PHP anti-shake en fonction de besoins spécifiques pour obtenir une meilleure expérience utilisateur. 🎜

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