Heim >Backend-Entwicklung >PHP-Tutorial >Vergleich der Implementierungsmethoden der PHP-Anti-Shake- und Anti-Duplicate-Übermittlung

Vergleich der Implementierungsmethoden der PHP-Anti-Shake- und Anti-Duplicate-Übermittlung

WBOY
WBOYOriginal
2023-10-12 10:36:251269Durchsuche

PHP 防抖和防重复提交的实现方式对比

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.

  1. So implementieren Sie Anti-Shake
    Anti-Shake kann durch Einstellen eines Timers eingerichtet werden, um den entsprechenden Vorgang um einen bestimmten Zeitraum nach dem letzten Auslöseereignis zu verzögern. Das Folgende ist ein Beispielcode, der PHP verwendet, um Anti-Shake zu erreichen:
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();
}
  1. So verhindern Sie wiederholte Übermittlungen
    Das Verhindern wiederholter Übermittlungen von Formularen kann auf folgende Weise erreicht werden:

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;
}

Die

Seite im obigen Code, ohne das Formular erneut abzusenden. success.php 是一个提示用户提交成功的页面,这样即使用户按下刷新按钮,也只会刷新 success.php

Zusammenfassung:

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn