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
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']
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.
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!