Vergleich der Implementierungsmethoden von PHP-Debounce und Anti-Duplicate-Übermittlung
Bei der Entwicklung von Webanwendungen stoßen wir häufig auf Situationen, in denen Debounce (Debounce) und das Verhindern der Übermittlung doppelter Formulare (Verhindern der Übermittlung doppelter Formulare) erforderlich sind. Anti-Shake bedeutet, dass wir, wenn der Benutzer häufig ein Ereignis auslöst, nur die zuletzt ausgelöste Aktion ausführen möchten, während Anti-Repetitive Submission bedeutet, dass wir dies sicherstellen müssen, wenn der Benutzer das Formular mehrmals in einem kurzen Zeitraum sendet Es wird nur eine Einreichung bearbeitet. Dieser Artikel konzentriert sich auf den Vergleich und die Einführung verschiedener Möglichkeiten zum Erreichen von Anti-Shaking und Anti-Resubmission in PHP und stellt spezifische Codebeispiele bereit.
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 Token-Überprüfung
Durch die Verwendung von Token Überprüfung. Wir können für jede Formularanforderung eine eindeutige Kennung generieren und die Kennung in der Sitzung speichern. Wenn der Benutzer das Formular abschickt, prüfen wir zunächst, ob die Kennung vorhanden ist und ob sie mit der Kennung in der Anfrage übereinstimmt, um festzustellen, ob es sich um eine wiederholte Übermittlung handelt. Das Folgende ist ein Beispielcode, der PHP zur Implementierung der Token-Überprüfung verwendet:
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. Durch die Verwendung der Umleitung zur Verarbeitung von Seitensprüngen nach der Formularübermittlung kann effektiv verhindert werden, dass Benutzer das Formular wiederholt senden. Wenn der Benutzer das Formular absendet, kümmern wir uns zunächst um die Übermittlungslogik und verwenden dann die Header-Funktion, um den Benutzer auf eine neue Seite umzuleiten. Hier ist ein Beispielcode, der eine Weiterleitung mit PHP implementiert:
// 处理表单提交逻辑 if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 执行表单提交操作 // ... // 重定向到新页面 header("Location: success.php"); exit; }
Seite im obigen Code, ohne das Formular erneut abzusenden. success.php
是一个提示用户提交成功的页面,这样即使用户按下刷新按钮,也只会刷新 success.php
Durch den Vergleich der Implementierungsmethoden von PHP Anti-Shaking und Anti-Duplicate Submission können wir die geeignete Methode zum Schutz unserer Anwendungen basierend auf spezifischen Anforderungen auswählen. Anti-Shake eignet sich für Situationen, in denen Benutzer das häufige Auslösen von Ereignissen vermeiden müssen, während die wiederholte Übermittlung von Formularen verhindern soll, dass Benutzer Formulare mehrmals übermitteln. Die Verwendung von Token-Überprüfung und -Umleitung sind zwei gängige und praktikable Methoden. Entwickler können je nach tatsächlicher Situation die geeignete Methode auswählen, um wiederholte Übermittlungen zu verhindern.
Das obige ist der detaillierte Inhalt vonVergleich der Implementierungsmethoden der PHP-Anti-Shake- und Anti-Duplicate-Übermittlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!