Heim Backend-Entwicklung PHP-Tutorial ThinkPHP-Methode zur Verhinderung wiederholter Formularübermittlung, Beispielanalyse, PHP-Beispiel

ThinkPHP-Methode zur Verhinderung wiederholter Formularübermittlung, Beispielanalyse, PHP-Beispiel

Jun 25, 2018 pm 05:54 PM
thinkphp 表单 重复提交

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(&#39;User/Index/check_login&#39;)}" method="post">
Nach dem Login kopieren

. 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(&#39;User/Index/check_login&#39;)}" method="post">
  
  
  
Nach dem Login kopieren

JS:

$().ready(function(){
   $("#login_btn").on(&#39;click&#39;,function(){
      $(this).attr(&#39;disabled&#39;,true);
   });
});
Nach dem Login kopieren

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(&#39;TOKEN&#39;, authcode($code));
}
//判断TOKEN
function checkToken($token) {
  if ($token == session(&#39;TOKEN&#39;)) {
    session(&#39;TOKEN&#39;, NULL);
    return TRUE;
  } else {
   return FALSE;
  }
}
/* 加密TOKEN */
function authcode($str) {
  $key = "YOURKEY";
  $str = substr(md5($str), 8, 10);
  return md5($key . $str);
}
Nach dem Login kopieren

Füllen Sie den folgenden HTML-Code in das Formularseitenformular ein

HTML:

<input type="hidden" name="TOKEN" value="{:session(&#39;TOKEN&#39;)}" />
Nach dem Login kopieren

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(&#39;post.TOKEN&#39;);
 if(!checkToken($post_token)){
   $this->error(&#39;请不要重复提交页面&#39;,U(&#39;User/Index/login&#39;));
 }
}
Nach dem Login kopieren

Grundsätzlich können Sie diese drei Methoden zusammen verwenden, um das Problem der wiederholten Formularübermittlung in der ThinkPHP-Entwicklung zu lösen. Natürlich sagten einige Studenten, dass Sie den Token-Ring-Mechanismus von ThinkPHP verwenden können, der tatsächlich einfacher ist TP generiert standardmäßig ein verstecktes Feld im Formular. Anschließend kann beurteilt werden, ob dieses versteckte Feld vorhanden ist und ob es mit dem Wert in der Sitzung übereinstimmt.

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!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So führen Sie das Thinkphp-Projekt aus So führen Sie das Thinkphp-Projekt aus Apr 09, 2024 pm 05:33 PM

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

Es gibt mehrere Versionen von thinkphp Es gibt mehrere Versionen von thinkphp Apr 09, 2024 pm 06:09 PM

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.

So führen Sie thinkphp aus So führen Sie thinkphp aus Apr 09, 2024 pm 05:39 PM

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.

So installieren Sie thinkphp So installieren Sie thinkphp Apr 09, 2024 pm 05:42 PM

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.

Was ist besser, Laravel oder Thinkphp? Was ist besser, Laravel oder Thinkphp? Apr 09, 2024 pm 03:18 PM

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? Wie implementiert man mit JavaScript eine Echtzeitüberprüfung des Eingabefeldinhalts eines Formulars? Oct 18, 2023 am 08:47 AM

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 Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben Nov 22, 2023 pm 12:01 PM

„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? Wie realisiert man mit JavaScript die automatische Eingabeaufforderungsfunktion für den Inhalt des Eingabefelds des Formulars? Oct 20, 2023 pm 04:01 PM

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: &lt;!DOCTYP

See all articles