Maison >développement back-end >tutoriel php >Comparaison des méthodes d'implémentation de PHP anti-shake et anti-duplicata
Comparaison des méthodes d'implémentation de l'anti-rebond PHP et de la soumission anti-duplicate
Lors du développement d'applications Web, nous rencontrons souvent des situations où l'anti-rebond (Debounce) et la prévention de la soumission de formulaire en double (Empêcher la soumission de formulaire en double) sont nécessaires. Anti-shake signifie que lorsque l'utilisateur déclenche fréquemment un événement, nous souhaitons exécuter uniquement la dernière action déclenchée, tandis que la soumission anti-répétitive signifie que lorsque l'utilisateur soumet le formulaire plusieurs fois dans un court laps de temps, nous devons nous assurer que une seule soumission est traitée. Cet article se concentrera sur la comparaison et l'introduction de plusieurs façons d'obtenir l'anti-secousse et l'anti-resoumission en PHP, et fournira des exemples de code spécifiques.
function debounce($callback, $delay) { $timer = null; return function() use ($callback, $delay, &$timer) { if ($timer !== null) { clearTimeout($timer); } $timer = setTimeout($callback, $delay); }; } // 使用防抖函数处理表单提交事件 $debouncedHandler = debounce(function() { // 处理表单提交逻辑 }, 1000); // 绑定事件处理函数 if ($_SERVER['REQUEST_METHOD'] === 'POST') { $debouncedHandler(); }
2.1. Vérification du jeton
En utilisant le jeton. vérification, nous pouvons générer un identifiant unique pour chaque demande de formulaire et stocker l'identifiant dans la session. Lorsque l'utilisateur soumet le formulaire, nous vérifions d'abord si l'identifiant existe et s'il est cohérent avec l'identifiant présent dans la demande pour déterminer s'il s'agit d'une soumission répétée. Voici un exemple de code qui utilise PHP pour implémenter la vérification du jeton :
session_start(); function generateToken() { return md5(uniqid(rand(), true)); } function validateToken($token) { // 从 session 中获取 token $storedToken = $_SESSION['token']; return $storedToken && $token === $storedToken; } function removeToken() { // 从 session 中移除 token unset($_SESSION['token']); } // 生成 Token 并存储在 session 中 $_SESSION['token'] = generateToken(); // 处理表单提交逻辑 if ($_SERVER['REQUEST_METHOD'] === 'POST') { $token = $_POST['token']; if (validateToken($token)) { // 执行表单提交操作 // ... // 提交完成后移除 Token removeToken(); } else { // Token 验证失败,可能是重复提交 // 提示用户不要重复提交 } }
2.2.2.2. Redirection
L'utilisation de la redirection pour gérer les sauts de page après la soumission du formulaire peut empêcher efficacement les utilisateurs de soumettre le formulaire à plusieurs reprises. Lorsque l'utilisateur soumet le formulaire, nous gérons d'abord la logique de soumission, puis utilisons la fonction d'en-tête pour rediriger l'utilisateur vers une nouvelle page. Voici un exemple de code qui implémente une redirection à l'aide de PHP :
// 处理表单提交逻辑 if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 执行表单提交操作 // ... // 重定向到新页面 header("Location: success.php"); exit; }
La page success.php
是一个提示用户提交成功的页面,这样即使用户按下刷新按钮,也只会刷新 success.php
dans le code ci-dessus sans soumettre à nouveau le formulaire.
Résumé :
En comparant les méthodes d'implémentation de l'anti-shaking et de la soumission anti-duplicata PHP, nous pouvons choisir la manière appropriée de protéger nos applications en fonction de besoins spécifiques. L'anti-shake convient aux situations dans lesquelles les utilisateurs doivent éviter de déclencher des événements fréquemment, tandis qu'empêcher l'envoi répété de formulaires consiste à empêcher les utilisateurs de soumettre des formulaires plusieurs fois. L'utilisation de la vérification et de la redirection des jetons est deux méthodes courantes et réalisables. Les développeurs peuvent choisir la méthode appropriée pour empêcher les soumissions répétées en fonction de la situation réelle.
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!