Heim > Artikel > Backend-Entwicklung > Verstehen Sie die Prinzipien von Anti-Shaking und Anti-Resubmission in PHP
PHP ist eine weit verbreitete Programmiersprache für die serverseitige Entwicklung mit leistungsstarken Funktionen und Flexibilität. In der tatsächlichen Entwicklung stoßen wir häufig auf Szenarien, in denen wir wiederholte Übermittlungen oder Anti-Shake verhindern müssen. In diesem Artikel werden die Prinzipien von Anti-Shaking und Anti-Resubmission in PHP untersucht und spezifische Codebeispiele bereitgestellt.
1. Das Prinzip des Anti-Shake
Anti-Shake bezieht sich auf die Technologie, die ein kontinuierliches Auslösen verhindert. Es wird häufig verwendet, um das Benutzererlebnis zu optimieren und unnötige Anfragen oder Vorgänge zu reduzieren. In PHP können wir Anti-Shake durch JavaScript- oder Ajax-Aufrufe implementieren.
Das Prinzip des Anti-Shake ist sehr einfach: Innerhalb eines bestimmten Zeitraums werden mehrere Triggerereignisse nur beim letzten Mal ausgeführt. Beispielsweise löst die Echtzeit-Suchfunktion eines Suchfelds jedes Mal eine Suchanfrage aus, wenn der Benutzer einen Buchstaben eingibt. Solche häufigen Anfragen setzen den Server stark unter Druck und die Benutzererfahrung ist nicht gut. Durch die Anti-Shake-Technologie können wir einen Zeitschwellenwert festlegen und Anfragen erst senden, nachdem der Benutzer eine Zeit lang mit der Eingabe aufgehört hat, um häufige Anfragen zu vermeiden.
Hier ist ein einfaches PHP-Codebeispiel, das die Verwendung der Debounce-Technologie demonstriert:
<?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); }); ?>
Im obigen Code akzeptiert die Funktion debounce
eine Rückruffunktion und eine Verzögerungszeit Die Anti-Shake-Funktion wird durch den Vergleich der Differenz zwischen der aktuellen Zeit und der letzten Auslösezeit implementiert. Stellen Sie bei jedem Auslösen eines Ereignisses zunächst fest, ob die Zeitdifferenz zwischen den beiden Auslösern größer als die eingestellte Verzögerungszeit ist. Wenn ja, führen Sie die Rückruffunktion aus. 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
zum Generieren verwendet Erstellen Sie ein eindeutiges Token und speichern Sie es in der Sitzung. Mit der Funktion checkToken
wird überprüft, ob das übermittelte Token gültig ist. Beim Absenden des Formulars wird zunächst ein Token generiert und im ausgeblendeten Feld platziert. Anschließend wird die Gültigkeit des Tokens auf der Serverseite überprüft. 🎜🎜Zusammenfassung: 🎜🎜Anhand der obigen Codebeispiele können wir die Prinzipien und Implementierungsmethoden der Anti-Shaking- und Anti-Duplicate-Übermittlung in PHP klar verstehen. Anti-Shake und Anti-Duplikate-Übermittlung sind gängige Anforderungen in der tatsächlichen Entwicklung. Angemessene technische Mittel können die Benutzererfahrung verbessern und die Einzigartigkeit und Richtigkeit von Daten schützen. In praktischen Anwendungen können wir je nach Szenario geeignete technische Mittel zur Verhinderung von Verwacklungen und zur Wiedervorlage auswählen. 🎜Das obige ist der detaillierte Inhalt vonVerstehen Sie die Prinzipien von Anti-Shaking und Anti-Resubmission in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!