Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die Anti-Shake-Funktion in PHP, um wiederholte Übermittlungen zu vermeiden

So implementieren Sie die Anti-Shake-Funktion in PHP, um wiederholte Übermittlungen zu vermeiden

王林
王林Original
2023-10-12 09:36:24823Durchsuche

如何在 PHP 中实现防抖功能,避免重复提交

So implementieren Sie die Anti-Shake-Funktion in PHP, um wiederholte Übermittlungen zu vermeiden

Die Anti-Shake-Funktion bedeutet, dass die Ereignisverarbeitungsfunktion nur einmal ausgeführt und nicht verarbeitet wird, wenn der Benutzer kontinuierlich ein Ereignis auslöst für einen Zeitraum nach dem letzten Auslöser. Wird erneut ausgeführt. In der tatsächlichen Entwicklung stoßen Benutzer häufig auf Situationen, in denen Benutzer Formulare wiederholt senden. Durch die Verwendung der Anti-Shake-Funktion kann diese Situation effektiv vermieden werden.

Es gibt viele Möglichkeiten, die Anti-Shake-Funktion in PHP zu implementieren. Im Folgenden werde ich eine gängige Implementierungsmethode vorstellen und spezifische Codebeispiele geben.

  1. Verwenden Sie Session, um den Zeitstempel des letzten Commits aufzuzeichnen.
// 开启 Session
session_start();

// 获取当前时间戳
$currentTimestamp = time();

// 获取上一次提交的时间戳
$lastTimestamp = $_SESSION['lastTimestamp'] ?? 0;

// 判断时间间隔是否小于指定的防抖时间(例如5秒)
if ($currentTimestamp - $lastTimestamp < 5) {
    echo '请勿重复提交';
    exit;
}

// 更新上一次提交的时间戳
$_SESSION['lastTimestamp'] = $currentTimestamp;

In diesem Beispiel verwenden wir Session, um den Zeitstempel des letzten Commits aufzuzeichnen. Durch Vergleich des aktuellen Zeitstempels mit dem Zeitstempel der letzten Übermittlung können Sie feststellen, ob das Zeitintervall kürzer als die angegebene Anti-Shake-Zeit ist (z. B. 5 Sekunden). Wenn das Zeitintervall kürzer als die Anti-Shake-Zeit ist, kann dies als wiederholte Übermittlung betrachtet werden. Die Eingabeaufforderungsinformationen werden direkt ausgegeben und die Skriptausführung wird beendet.

Es ist zu beachten, dass wir zur Verwendung von Session die Funktion session_start() am Anfang des Skripts aufrufen müssen, um die Session zu öffnen.

  1. Verwenden Sie Token, um wiederholte Übermittlungen zu verhindern.

Eine weitere häufig verwendete Möglichkeit, doppelte Übermittlungen zu verhindern, ist die Verwendung von Token. Bei jeder Übermittlung des Formulars wird ein eindeutiges Token generiert und im Sitzungs- oder ausgeblendeten Formularfeld gespeichert. Überprüfen Sie bei der Verarbeitung der Formularübermittlung im Hintergrund zunächst, ob das Token gültig ist. Wenn ja, fahren Sie mit der Verarbeitung fort. Andernfalls wird eine Eingabeaufforderung ausgegeben.

Das Folgende ist ein Beispielcode, der Token verwendet, um wiederholte Übermittlungen zu verhindern:

// 开启 Session
session_start();

// 生成一个唯一的 Token
$token = md5(uniqid(rand(), true));

// 将 Token 保存在 Session 中
$_SESSION['token'] = $token;

// 在表单中输出隐藏域,将 Token 传递给后台
echo '<input type="hidden" name="token" value="' . $token . '">';

// 处理表单提交
if ($_POST['token'] !== $_SESSION['token']) {
    echo '请勿重复提交';
    exit;
}

// 继续处理表单数据
// ...

In diesem Beispiel generieren wir bei jeder Übermittlung des Formulars ein eindeutiges Token und speichern das Token in der Sitzung. Übergeben Sie das Token über versteckte Felder im Front-End-Formular an das Backend. Überprüfen Sie bei der Verarbeitung der Formularübermittlung im Hintergrund zunächst, ob das aus dem Formular erhaltene Token mit dem in der Sitzung gespeicherten Token übereinstimmt. Wenn sie nicht gleich sind, wird dies als wiederholte Übermittlung betrachtet und die Eingabeaufforderungsinformationen werden direkt ausgegeben und die Skriptausführung wird beendet.

Zusammenfassend lässt sich sagen, dass wir durch die Verwendung von Session oder Token die Anti-Shake-Funktion in PHP implementieren können, um wiederholte Übermittlungen zu vermeiden. Wählen Sie entsprechend den spezifischen Anforderungen und Szenarien die geeignete Methode zur Implementierung aus. Die oben genannten sind zwei häufig verwendete Implementierungsmethoden, und als Referenz werden spezifische Codebeispiele angegeben. Ich hoffe, es hilft allen.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Anti-Shake-Funktion in PHP, um wiederholte Übermittlungen zu vermeiden. 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