


ThinkPHP-Methode zur Verhinderung wiederholter Formularübermittlung, Beispielanalyse, PHP-Beispiel
In diesem Artikel wird hauptsächlich die Methode von ThinkPHP zur Verhinderung der wiederholten Übermittlung von Formularen vorgestellt. Er analysiert verschiedene gängige Betriebstechniken und die damit verbundenen Vorsichtsmaßnahmen von thinkPHP, um die wiederholte Übermittlung von Formularen in Form von Beispielen zu verhindern
Dieser Artikel fasst die Methode von ThinkPHP zur Verhinderung wiederholter Formularübermittlungen anhand von Beispielen zusammen und analysiert sie. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Warum gibt es doppelte Formulare?
Während der Entwicklung, wenn ein neues oder Für das geänderte Formular legen wir nach Abschluss des Datenbankvorgangs im Hintergrund fest, ob zu anderen Seiten gesprungen oder zu dieser Seite zurückgekehrt werden soll. Zu diesem Zeitpunkt wird das Formular durch Klicken auf die Zurück-Schaltfläche des Browsers vor dem Absenden oder Aktualisieren der Seite angezeigt wiederholt eingereicht werden, d. h. dieser Datensatz wird zweimal hinzugefügt oder geändert.
Der Grund, warum das Formular wiederholt gesendet wird, besteht darin, dass das zum ersten Mal gesendete Formular im Speicher zwischengespeichert wird und nicht verschwindet, bis die Seite das nächste Mal gesendet oder die Seite geschlossen oder auf eine andere umgeleitet wird Seiten. Wenn der Selbstaufruf zurückkehrt, sind die Daten im Speicher noch vorhanden. Zu diesem Zeitpunkt kann der übermittelte Code auf der Seite den übermittelten Wert noch erkennen, was den Effekt einer wiederholten Übermittlung verursacht.
Wie löst man das Problem?
Um Online-Lösungen und eigene Tests zusammenzufassen, können Sie die folgenden Methoden verwenden:
Methode 1: Die einfachste: nach dem Absenden der Seite Gehen Sie zu einer anderen Seite anstelle dieser Seite. Ihre Seitenadresse lautet beispielsweise
http://yourdomain.com/User/Index/login
Dann das Formular Die Aktionsadresse der Seite kann eine andere Verarbeitungsadresse sein, z. B.
<form action="{:U('User/Index/check_login')}" method="post">
. Auf diese Weise wird ein Fehler zurückgegeben oder der Benutzer klickt auf die Schaltfläche „Zurück“ und fährt fort kehrt zur vorherigen Adresse zurück, aber diese Situation ist nicht sicher. Es ist auch notwendig, Methode 2 abzugleichen, um gemeinsam sicherer zu sein
Methode 2: Nach dem Absenden des Formulars wird die Schaltfläche „Senden“ grau/versteckt die Schaltfläche „Senden“
Diese Methode Wird normalerweise mit Methode 1 kombiniert. Sie verwenden JS, um die Klickaktion des Benutzers dynamisch zu überwachen und das Schaltflächenattribut dynamisch auf „Disabled“ zu setzen, was bedeutet, dass es grau und nicht verfügbar ist. Der Code lautet wie folgt:
HTML:
<form action="{:U('User/Index/check_login')}" method="post">
JS:
$().ready(function(){ $("#login_btn").on('click',function(){ $(this).attr('disabled',true); }); });
Nach der Kombination von Methode 1 + Methode 2 können im Grunde mehr als 90 % der Probleme mit wiederholten Einreichungen gelöst werden, aber Liu möchte immer noch über die dritte Methode sprechen, die darin besteht, dieses Problem ein für alle Mal zu lösen Server
Methode 3: Verwenden Sie die Methode zum Ausblenden zufälliger TOKEN-Werte, um wiederholte Übermittlungen zu ermitteln
Fügen Sie zunächst die folgende Methode hinzu Projektfunktionen.php
//创建TOKEN function createToken() { $code = chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE)) . chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE)) . chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE)); session('TOKEN', authcode($code)); } //判断TOKEN function checkToken($token) { if ($token == session('TOKEN')) { session('TOKEN', NULL); return TRUE; } else { return FALSE; } } /* 加密TOKEN */ function authcode($str) { $key = "YOURKEY"; $str = substr(md5($str), 8, 10); return md5($key . $str); }
Füllen Sie den folgenden HTML-Code in das Formularseitenformular ein
HTML:
<input type="hidden" name="TOKEN" value="{:session('TOKEN')}" />
Rufen Sie die Methode creatToken()
auf, um ein Token zu generieren, bevor die Seite angezeigt wird, und verwenden Sie checkToken()
in der entsprechenden Controller-POST-Anfrage, um zu bestimmen, ob
< erneut übermittelt werden soll 🎜>
if(IS_POST) { $post_token = I('post.TOKEN'); if(!checkToken($post_token)){ $this->error('请不要重复提交页面',U('User/Index/login')); } }
PS:Heute habe ich den Inhalt endlich mit dem Markdown-Editor von Jianshu gepostet. Tatsächlich wurde die Markdown-Syntax nicht abgedeckt und das gesamte Layout war erfrischend, nicht schlecht.
Artikel, die Sie interessieren könnten:Analyse von PHP-Paginierungsanzeigemethoden [mit PHP-allgemeinen Paging-PHP-Tipps
Beispiel einer PHP-Methode zum Komprimieren der Bildgröße und Konvertieren in das JPG-Format_php-Tipps
Beispiel einer PHP-Methode zur Verwendung der PDO-Abstraktionsschicht zum Erhalten von Abfrageergebnissen. PHP-Tipps
Das obige ist der detaillierte Inhalt vonThinkPHP-Methode zur Verhinderung wiederholter Formularübermittlung, Beispielanalyse, PHP-Beispiel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Um das ThinkPHP-Projekt auszuführen, müssen Sie: Composer installieren, das Projektverzeichnis aufrufen und http://localhost:8000 aufrufen.

ThinkPHP verfügt über mehrere Versionen, die für verschiedene PHP-Versionen entwickelt wurden. Zu den Hauptversionen gehören 3.2, 5.0, 5.1 und 6.0, während Nebenversionen dazu dienen, Fehler zu beheben und neue Funktionen bereitzustellen. Die neueste stabile Version ist ThinkPHP 6.0.16. Berücksichtigen Sie bei der Auswahl einer Version die PHP-Version, die Funktionsanforderungen und den Community-Support. Für optimale Leistung und Support wird empfohlen, die neueste stabile Version zu verwenden.

Schritte zum lokalen Ausführen von ThinkPHP Framework: Laden Sie ThinkPHP Framework herunter und entpacken Sie es in ein lokales Verzeichnis. Erstellen Sie einen virtuellen Host (optional), der auf das ThinkPHP-Stammverzeichnis verweist. Konfigurieren Sie Datenbankverbindungsparameter. Starten Sie den Webserver. Initialisieren Sie die ThinkPHP-Anwendung. Greifen Sie auf die URL der ThinkPHP-Anwendung zu und führen Sie sie aus.

ThinkPHP-Installationsschritte: Bereiten Sie PHP-, Composer- und MySQL-Umgebungen vor. Erstellen Sie Projekte mit Composer. Installieren Sie das ThinkPHP-Framework und die Abhängigkeiten. Datenbankverbindung konfigurieren. Anwendungscode generieren. Starten Sie die Anwendung und besuchen Sie http://localhost:8000.

Leistungsvergleich von Laravel- und ThinkPHP-Frameworks: ThinkPHP schneidet im Allgemeinen besser ab als Laravel und konzentriert sich auf Optimierung und Caching. Laravel schneidet gut ab, aber für komplexe Anwendungen ist ThinkPHP möglicherweise besser geeignet.

Wie implementiert man mit JavaScript eine Echtzeitüberprüfung des Eingabefeldinhalts eines Formulars? In vielen Webanwendungen sind Formulare die häufigste Art der Interaktion zwischen Benutzern und dem System. Allerdings müssen die vom Benutzer eingegebenen Inhalte häufig validiert werden, um die Richtigkeit und Vollständigkeit der Daten sicherzustellen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript eine Echtzeitüberprüfung des Inhalts des Eingabefelds des Formulars implementieren und stellen spezifische Codebeispiele bereit. Erstellen des Formulars Zuerst müssen wir eine einfache Tabelle in HTML erstellen

„Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben“ Mit der rasanten Entwicklung der Internettechnologie stellen Webanwendungen immer höhere Anforderungen an die Verarbeitung einer großen Anzahl gleichzeitiger Anforderungen und komplexer Geschäftslogik. Um die Systemleistung und das Benutzererlebnis zu verbessern, erwägen Entwickler häufig die Verwendung asynchroner Aufgaben, um einige zeitaufwändige Vorgänge auszuführen, z. B. das Senden von E-Mails, das Verarbeiten von Datei-Uploads, das Erstellen von Berichten usw. Im Bereich PHP bietet das ThinkPHP-Framework als beliebtes Entwicklungsframework einige praktische Möglichkeiten zur Implementierung asynchroner Aufgaben.

Wie realisiert man mit JavaScript die automatische Eingabeaufforderungsfunktion für den Inhalt des Eingabefelds des Formulars? Einführung: Die automatische Eingabeaufforderungsfunktion für den Inhalt des Formulareingabefelds ist in Webanwendungen weit verbreitet. Sie kann Benutzern dabei helfen, schnell den richtigen Inhalt einzugeben. In diesem Artikel wird erläutert, wie Sie diese Funktion mithilfe von JavaScript erreichen, und es werden spezifische Codebeispiele bereitgestellt. Erstellen Sie die HTML-Struktur. Zuerst müssen wir eine HTML-Struktur erstellen, die das Eingabefeld und die Liste der automatischen Vorschläge enthält. Sie können den folgenden Code verwenden: <!DOCTYP
