Heim  >  Artikel  >  Backend-Entwicklung  >  Best-Practice-Richtlinien für Anti-Shake- und Anti-Duplicate-Einreichungen in PHP

Best-Practice-Richtlinien für Anti-Shake- und Anti-Duplicate-Einreichungen in PHP

WBOY
WBOYOriginal
2023-10-12 10:46:10999Durchsuche

PHP 中防抖和防重复提交的最佳实践指南

Best-Practice-Leitfaden für Anti-Shaking und Anti-Duplicate-Übermittlung in PHP

Einführung:
Während sich das Internet weiterentwickelt, werden Benutzerinteraktionen immer häufiger. In Webanwendungen können Benutzer beim Senden von Formularen auf zwei häufige Probleme stoßen: Anti-Shaking und die Verhinderung wiederholter Übermittlungen. In diesem Artikel werden Best Practices in PHP zur Lösung dieser beiden Probleme vorgestellt und spezifische Codebeispiele bereitgestellt.

1. Das Konzept und Prinzip von Anti-Shake:
Wenn ein Benutzer innerhalb eines bestimmten Zeitraums häufig eine Aktion auslöst, z. B. das Klicken auf eine Schaltfläche oder das Ändern des Inhalts eines Eingabefelds, um unnötige Anfragen zu reduzieren und den Benutzer zu verbessern Erfahrung, wir können Anti-Shake die Bewegung.
Das Prinzip des Anti-Shake ist: Wenn die Aktion innerhalb einer bestimmten Zeitverzögerung erneut ausgelöst wird, wird die Verzögerungszeit neu eingestellt. Wenn die Aktion nicht erneut ausgelöst wird, wird der entsprechende Vorgang ausgeführt.

2. So implementieren Sie Anti-Shake:
Das Folgende ist eine einfache Funktion zum Implementieren von Anti-Shake:

function debounce(callable $callback, $delay) {
    $timer = null;
    
    return function() use ($callback, $delay, &$timer) {
        if ($timer) {
            clearTimeout($timer);
        }
        
        $timer = setTimeout(function() use ($callback) {
            call_user_func_array($callback, func_get_args());
        }, $delay);
    }
}

Die obige Funktion akzeptiert eine Rückruffunktion und eine Verzögerungszeit als Parameter. Wenn diese Funktion aufgerufen wird, wird eine neue Funktion zurückgegeben. Die neue Funktion führt die Rückruffunktion nicht mehr innerhalb der Verzögerungszeit aus, nachdem der Benutzer die Aktion ausgelöst hat. Erst wenn die Verzögerungszeit erreicht ist, wird die Callback-Funktion ausgeführt.

3. Das Konzept und Prinzip der Verhinderung wiederholter Übermittlungen:
Wenn ein Benutzer bei einem Vorgang mehrmals auf die Schaltfläche „Senden“ klickt, müssen wir sicherstellen, dass nur die erste Übermittlung gültig ist und nachfolgende wiederholte Übermittlungen ignoriert werden sollten. Um diese Anforderung zu erfüllen, können wir den Token-Mechanismus und die Umleitung verwenden.

Das Prinzip des Token-Mechanismus besteht darin, ein eindeutiges Token im Formular zu generieren und das Token in der Sitzung zu speichern. Wenn der Benutzer das Formular absendet, muss der Server die Gültigkeit des Tokens überprüfen. Wenn das Token ungültig ist, bedeutet dies, dass es sich bei der Übermittlung um eine doppelte Übermittlung handelt und diese ignoriert werden sollte.

4. So verhindern Sie wiederholte Übermittlungen:
Das Folgende ist ein Codebeispiel, um wiederholte Übermittlungen basierend auf dem Token-Mechanismus und der Umleitung zu verhindern:

function generateToken() {
    $token = sha1(uniqid(rand(), true)); // 生成一个唯一的Token
    $_SESSION['token'] = $token; // 将Token存储于Session中
    
    return $token;
}

function isValidToken($token) {
    if (empty($_SESSION['token']) || $_SESSION['token'] !== $token) {
        return false; // Token无效
    }
    
    unset($_SESSION['token']);
    return true; // Token有效
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $token = isset($_GET['token']) ? $_GET['token'] : null;
    
    if (!isValidToken($token)) {
        header('Location: /'); // 重定向到首页或其他页面
        exit;
    }
    
    // 处理表单提交的逻辑
    // ...
}

Im Formular müssen wir ein verstecktes Feld hinzufügen, um das generierte Token zu speichern:

<form action="/submit" method="post">
    <input type="hidden" name="token" value="<?php echo generateToken(); ?>">
    <!-- 其他表单字段 -->
    <!-- 提交按钮 -->
</form>

Im obigen Code wird zunächst ein eindeutiges Token über die Funktion „generateToken“ generiert und das Token in der Sitzung gespeichert. Wenn der Benutzer das Formular absendet, überprüft der Server die Gültigkeit des Tokens mithilfe der Funktion isValidToken. Wenn das Token ungültig ist, wird der Benutzer zur Homepage oder anderen Seiten weitergeleitet, um nachfolgende wiederholte Übermittlungen zu ignorieren.

Fazit:
Mit den Best Practices zum Anti-Shaking und zur Verhinderung doppelter Übermittlungen können wir die Leistung und Benutzererfahrung von Webanwendungen effektiv verbessern. In praktischen Anwendungen können geeignete Anti-Shake- und wiederholte Einreichungslösungen entsprechend den spezifischen Anforderungen ausgewählt werden.

Das obige ist der detaillierte Inhalt vonBest-Practice-Richtlinien für Anti-Shake- und Anti-Duplicate-Einreichungen in PHP. 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