PHP est un langage de programmation largement utilisé pour le développement côté serveur avec des fonctionnalités puissantes et une flexibilité. Dans le développement réel, nous rencontrons souvent des scénarios dans lesquels nous devons empêcher des soumissions répétées ou un anti-shake. Cet article explorera les principes de l'anti-shake et de l'anti-resoumission en PHP et fournira des exemples de code spécifiques.
1. Le principe de l'anti-shake
L'anti-shake fait référence à la technologie qui empêche le déclenchement continu. Il est souvent utilisé pour optimiser l'expérience utilisateur et réduire les demandes ou opérations inutiles. En PHP, nous pouvons implémenter un anti-shake via des appels JavaScript ou Ajax.
Le principe de l'anti-shake est très simple, c'est-à-dire que dans un certain laps de temps, plusieurs événements déclencheurs ne seront exécutés que la dernière fois. Par exemple, la fonction de recherche en temps réel d'un champ de recherche déclenchera une demande de recherche à chaque fois que l'utilisateur saisit une lettre. Des requêtes aussi fréquentes mettront beaucoup de pression sur le serveur et l'expérience utilisateur ne sera pas bonne. Grâce à la technologie anti-tremblement, nous pouvons définir un seuil de temps et envoyer des demandes uniquement après que l'utilisateur a arrêté de saisir pendant un certain temps afin d'éviter des demandes fréquentes.
Voici un exemple de code PHP simple qui montre comment utiliser la technologie anti-rebond :
<?php function debounce($callback, $delay) { static $lastCallTime = 0; if (time() - $lastCallTime < $delay) { return; } $lastCallTime = time(); call_user_func($callback); } function search() { // 假设这里是搜索功能的代码 // ... echo "搜索结果"; } // 假设这里是输入框的事件处理代码 input.addEventListener('input', function() { debounce(search, 500); }); ?>
Dans le code ci-dessus, la fonction debounce
accepte une fonction de rappel et un temps de retard, le La fonction anti-tremblement est mise en œuvre en comparant la différence entre l'heure actuelle et la dernière heure de déclenchement. Chaque fois qu'un événement est déclenché, déterminez d'abord si la différence de temps entre les deux déclencheurs est supérieure au temps de retard défini. Si tel est le cas, exécutez la fonction de rappel. debounce
函数接受一个回调函数和延迟时间,通过比较当前时间和上次触发时间的差值来实现防抖功能。每次触发事件时,首先判断两次触发的时间差是否大于设定的延迟时间,如果是,则执行回调函数。
二、防重复提交的原理
防重复提交是指在提交表单或者请求时,阻止用户多次提交相同的数据,保证数据的唯一性和正确性。在 PHP 中,我们可以使用一些技术手段来防止用户的重复提交。
防止重复提交的常见原理是使用 Token 或者 Session 进行验证。当用户提交表单时,服务器会生成一个唯一的 Token,并将其存储到 Session 中或者作为表单隐藏字段返回给客户端。服务器在接收到用户提交的请求时,首先验证 Token 的有效性,如果该 Token 已经使用过或者不符合规则,就拒绝处理。通过这种方式,我们可以防止用户重复提交相同的请求。
下面是一个简单的 PHP 代码示例,演示如何使用 Token 技术防止重复提交:
<?php session_start(); // 开启 Session function generateToken() { $token = md5(uniqid(rand(), true)); $_SESSION['token'] = $token; return $token; } function checkToken($token) { if (!isset($_SESSION['token']) || $_SESSION['token'] !== $token) { return false; } $_SESSION['token'] = null; // 使用过的 Token 置空,避免重复使用 return true; } function submitForm() { if ($_SERVER['REQUEST_METHOD'] !== 'POST') { return; } $token = isset($_POST['token']) ? $_POST['token'] : ''; if (checkToken($token)) { // 处理表单提交的逻辑 // ... echo "表单提交成功"; } else { echo "表单重复提交"; } } // 生成 Token 并放入隐藏字段 $token = generateToken(); echo "<form method='post' action=''>"; echo "<input type='hidden' name='token' value='$token'>"; echo "<input type='submit' value='提交'>"; echo "</form>"; submitForm(); ?>
在上面的代码中,generateToken
函数用于生成一个唯一的 Token,并将其存储到 Session 中。checkToken
generateToken
est utilisée pour générer un jeton unique et stockez-le en session. La fonction checkToken
est utilisée pour vérifier si le jeton soumis est valide. Lorsque le formulaire est soumis, un Token est d'abord généré et placé dans le champ caché, puis la validité du Token est vérifiée côté serveur. 🎜🎜Résumé : 🎜🎜Grâce aux exemples de code ci-dessus, nous pouvons clairement comprendre les principes et les méthodes de mise en œuvre de la soumission anti-shake et anti-duplicata en PHP. La soumission anti-tremblement et anti-duplication est une exigence courante dans le développement réel. Des moyens techniques raisonnables peuvent améliorer l'expérience utilisateur et protéger le caractère unique et l'exactitude des données. Dans les applications pratiques, nous pouvons choisir des moyens techniques anti-tremblement et anti-resoumission appropriés en fonction de scénarios spécifiques. 🎜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!