Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Anti-Shake- und Anti-Duplicate-Übermittlung: Verbessern Sie die Effizienz der Benutzervorgänge

PHP-Anti-Shake- und Anti-Duplicate-Übermittlung: Verbessern Sie die Effizienz der Benutzervorgänge

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

PHP 防抖和防重复提交:提升用户操作的效率

PHP Anti-Shake und Anti-Duplicate Submission: Um die Effizienz von Benutzeroperationen zu verbessern, sind spezifische Codebeispiele erforderlich

Mit der Popularität des Internets und der Entwicklung der Technologie beginnen immer mehr Menschen, verschiedene zu verwenden Websites und Anwendungen für verschiedene Zwecke, wie z. B. das Einreichen von Formularen, das Versenden von Anfragen usw. Allerdings stoßen wir bei diesem Prozess häufig auf einige Probleme, z. B. wenn Benutzer häufig auf Schaltflächen klicken, was zu wiederholten Formularübermittlungen führt, oder wenn während der Front-End-Interaktion häufig Anfragen gesendet werden, was zu einer erhöhten Serverbelastung führt. Um die Effizienz des Benutzerbetriebs zu verbessern, müssen wir einige technische Mittel zur Lösung dieser Probleme einsetzen, darunter Anti-Shake und Anti-Repetition.

1. Anti-Shake

Anti-Shake ist eine Technologie, die die Anzahl der Auslöser reduziert, indem sie die Ausführung verzögert oder aufeinanderfolgende Vorgänge zusammenführt, wenn der Benutzer häufig arbeitet. Wir haben beispielsweise ein Suchfeld auf der Webseite, wenn der Benutzer eine schnelle und kontinuierliche Eingabe durchführt. Wir hoffen, dass wir eine Suche durchführen können, nachdem der Benutzer eine Zeit lang mit der Eingabe aufgehört hat, anstatt bei jeder Eingabe eine Suchanfrage auszulösen. Dadurch kann die Anzahl unnötiger Anfragen reduziert und die Benutzererfahrung verbessert werden.

In PHP können wir durch die Verwendung eines Timers einen Anti-Shake-Effekt erzielen. Hier ist ein Beispielcode:

function debounceSearch($keywords) {
    // 保存上一次触发搜索的定时器 ID
    static $timer = null;

    // 清除上一次的延时操作
    if ($timer) {
        clearTimeout($timer);
    }

    // 创建新的延时操作
    $timer = setTimeout(function() use ($keywords) {
        // 这里是实际的搜索逻辑
        searchKeywords($keywords);
    }, 500); // 延时 500ms
}

// 在表单或输入框的事件监听中调用 debounceSearch 函数即可实现防抖

Im obigen Code verwenden wir eine statische Variable $timer, um die letzte Timer-ID zu speichern, die die Suche ausgelöst hat. Wenn der Benutzer Eingaben macht, stellen Sie zunächst fest, ob es einen vorherigen verzögerten Vorgang gibt. Wenn ja, löschen Sie zuerst den letzten verzögerten Vorgang und erstellen Sie dann einen neuen verzögerten Vorgang. Dadurch wird sichergestellt, dass der Benutzer vor der Suche eine Weile mit der Eingabe aufhört. $timer 来保存上一次触发搜索的定时器 ID。当用户输入时,首先判断是否有上一次的延时操作,如果有,则先清除上一次的延时操作,然后再创建新的延时操作。这样就能保证用户停止输入一段时间后才进行搜索。

二、防重复提交

防重复提交是一种在用户提交表单或发送请求时,通过一些方法来避免重复提交的技术。比如用户在网页上点击提交按钮后,如果网络较慢或者用户不小心多次点击按钮,就可能导致同一个表单被提交多次。为了避免这种情况的发生,我们可以在后台进行一些处理来阻止重复提交。

在 PHP 中,我们可以通过使用 token 来防止重复提交。下面是一个示例代码:

function verifyToken($token) {
    // 检查 token 是否有效,可以从 Session 或者数据库中获取相应的 token 进行比对
    if ($token == $_SESSION['token']) {
        // token 有效
        return true;
    } else {
        // token 无效
        return false;
    }
}

function processForm($data, $token) {
    // 首先检查 token 是否有效
    if (!verifyToken($token)) {
        // token 无效,则认为是重复提交,直接返回
        return;
    }

    // 这里是实际的表单处理逻辑
    doSomething($data);

    // 处理完成后,清除 token,避免同一个表单被重复提交
    unset($_SESSION['token']);
}

// 在表单提交前生成 token,并保存到 Session 或者数据库中
// 将 token 输出到表单中的隐藏字段或者 URL 参数中

上面的代码中,我们首先定义了一个 verifyToken 函数,用来检查给定的 token 是否有效。然后在 processForm 函数中,先调用 verifyToken

2. Anti-Duplikat-Übermittlung

Anti-Duplikat-Übermittlung ist eine Technologie, die einige Methoden verwendet, um wiederholte Übermittlungen zu vermeiden, wenn Benutzer Formulare einreichen oder Anfragen senden. Wenn beispielsweise ein Benutzer auf einer Webseite auf die Schaltfläche „Senden“ klickt, das Netzwerk langsam ist oder der Benutzer versehentlich mehrmals auf die Schaltfläche klickt, kann dasselbe Formular mehrmals gesendet werden. Um dies zu verhindern, können wir einige Verarbeitungen im Hintergrund durchführen, um wiederholte Übermittlungen zu verhindern.

In PHP können wir doppelte Übermittlungen durch die Verwendung von Token verhindern. Das Folgende ist ein Beispielcode:

rrreee

Im obigen Code definieren wir zunächst eine verifyToken-Funktion, um zu überprüfen, ob das angegebene Token gültig ist. Rufen Sie dann in der Funktion processForm zunächst die Funktion verifyToken auf, um zu prüfen, ob das Token gültig ist. Wenn es ungültig ist, wird es als wiederholte Übermittlung betrachtet und direkt zurückgegeben. Wenn es gültig ist, wird die eigentliche Formularverarbeitungslogik ausgeführt und das Token nach Abschluss der Verarbeitung gelöscht, um zu verhindern, dass dasselbe Formular wiederholt gesendet wird. 🎜🎜Auf diese Weise müssen wir beim Absenden des Formulars durch den Benutzer nur die Gültigkeit des Tokens im Hintergrund überprüfen, wodurch wiederholte Übermittlungen wirksam verhindert werden können. 🎜🎜Zusammenfassung🎜🎜Durch technische Mittel gegen Shaking und doppelte Übermittlung können wir die Effizienz des Benutzerbetriebs verbessern, unnötige Anfragen und Serverdruck reduzieren und die Benutzererfahrung verbessern. In PHP können wir Timer verwenden, um Anti-Shaking zu erreichen, und Token, um wiederholte Übermittlungen zu verhindern. Das Obige ist nur eine der beiden Lösungen. Abhängig von den tatsächlichen Bedürfnissen und Umständen können wir eine geeignete Methode zur Lösung des Problems auswählen. 🎜

Das obige ist der detaillierte Inhalt vonPHP-Anti-Shake- und Anti-Duplicate-Übermittlung: Verbessern Sie die Effizienz der Benutzervorgänge. 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