Heim > Backend-Entwicklung > PHP-Problem > So vermeiden Sie Mehrfacheinreichungen in PHP

So vermeiden Sie Mehrfacheinreichungen in PHP

爱喝马黛茶的安东尼
Freigeben: 2023-02-25 08:58:01
Original
2705 Leute haben es durchsucht

So vermeiden Sie Mehrfacheinreichungen in PHP

Die folgenden Situationen führen dazu, dass das Formular wiederholt gesendet wird:

·Klicken Sie zweimal auf die Schaltfläche „Senden“.

·Klicken Sie auf die Schaltfläche „Aktualisieren“.

·Verwenden Sie die Zurück-Schaltfläche des Browsers, um den vorherigen Vorgang zu wiederholen, was zu einer erneuten Formularübermittlung führt.

·Verwenden Sie den Browserverlauf, um Formulare wiederholt einzureichen.

·Doppelte HTTP-Anfragen vom Browser.

·Die Webseite wurde böswillig aktualisiert.

Es gibt mehrere Lösungen:

1. Verwenden Sie js, um die Schaltfläche nach dem Klicken auf

<form name=form1 method=”POST” action=”/” target=_blank>
<p>
<input type=”text” name=”T1″ size=”20″>
<input type=”button” value=”提交” οnclick=”javascript:{this.disabled=true;document.form1.submit();}”>
</p>
</form>
Nach dem Login kopieren

Klicken auf grau zu setzen Nachdem die Schaltfläche ausgefüllt ist, wird sie grau und kann nicht angeklickt werden. Wenn der Benutzer das Formular erneut senden muss, muss er die Seite aktualisieren, die Daten erneut eingeben und dann absenden.

Verwandte Empfehlungen: „php-Tutorial

2. Verwenden Sie die Sitzung

, um der Sitzung eine besondere Note zu verleihen. Wenn die Formularseite angefordert wird, wird eine spezielle Zeichenfolge generiert, in der Sitzung gespeichert und im ausgeblendeten Feld des Formulars platziert. Überprüfen Sie beim Akzeptieren und Verarbeiten von Formulardaten, ob die Identifikationszeichenfolge vorhanden ist, löschen Sie sie sofort aus der Sitzung und verarbeiten Sie die Daten dann normal.

Wenn festgestellt wird, dass in der Formularübermittlung keine gültige Flag-Zeichenfolge vorhanden ist, bedeutet dies, dass das Formular bereits übermittelt wurde und diese Übermittlung ignoriert wird.

Dies verleiht Ihrer Webanwendung einen erweiterten XSRF-Schutz.

Beim Laden der übermittelten Seite wird eine Zufallszahl generiert:

$code = mt_rand(0,1000000);
Nach dem Login kopieren

und im versteckten Eingabefeld des Formulars gespeichert:

< input type=”hidden” name=”code” value=””>
Nach dem Login kopieren

Der PHP-Code auf der Empfangsseite lautet wie folgt:

<?php 
session_start(); 
if(isset($_POST[‘code&#39;])) {
if($_POST[‘code&#39;] == $_SESSION[‘code&#39;]){
// 重复提交表单了
}else{
$_SESSION[‘code&#39;] =$_POST[‘code&#39;]; //存储code
}
}?>
Nach dem Login kopieren

3. Verwendung von Cookies

Das Prinzip ähnelt der Sitzung, aber sobald der Browser des Benutzers Cookies deaktiviert, ist diese Funktion ungültig.

if(isset($_POST[‘submit&#39;])){ 
setcookie(“tempcookie”,””,time()+30); 
header(“Location:”.$_SERVER[PHP_SELF]);exit(); 
} 
if(isset($_COOKIE[“tempcookie”])){ 
setcookie(“tempcookie”,””,0);echo “您已经提交过表单”; 
}
Nach dem Login kopieren

4. Verwenden Sie die Header-Funktion, um zu springen

Sobald der Benutzer auf die Schaltfläche „Senden“ klickt, springen Sie nach der Verarbeitung der Daten zu anderen Seiten.

if (isset($_POST[‘submit&#39;])) {
header(‘location:success.php&#39;);//处理数据后,转向到其他页面
 
}
Nach dem Login kopieren

5. Verwenden Sie die Datenbank, um Einschränkungen hinzuzufügen.

Fügen Sie eindeutige Einschränkungen hinzu oder erstellen Sie eindeutige Indizes direkt in der Datenbank Warnung wird direkt ausgegeben oder Tipp, oder verarbeiten Sie nur die zum ersten Mal übermittelten Daten. Dies ist die direkteste und effektivste Methode und erfordert eine sorgfältige Prüfung des frühen Datenbankdesigns und der Datenbankarchitektur.

6. Post-/Redirect-/Get-Modus

Seitenumleitung nach der Übermittlung durchführen Dies ist der sogenannte Post-Redirect-Get-Modus (PRG). Kurz gesagt: Wenn der Benutzer das Formular absendet, führen Sie eine clientseitige Umleitung zur Seite mit den Informationen zum Übermittlungserfolg durch.

if (isset($_POST[‘action&#39;]) && $_POST[‘action&#39;] == ‘submitted&#39;) {
//处理数据,如插入数据后,立即转向到其他页面
header(&#39;location:submits_success.php&#39;);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo vermeiden Sie Mehrfacheinreichungen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage