So verhindern Sie die wiederholte Übermittlung von Formularen in PHP

王林
Freigeben: 2023-02-28 17:08:01
Original
2935 Leute haben es durchsucht

So verhindern Sie die wiederholte Übermittlung von Formularen in PHP

Token ist ein Token. Sein größtes Merkmal ist Zufälligkeit und Unvorhersehbarkeit.

Token wird im Allgemeinen an zwei Stellen verwendet – um wiederholte Formularübermittlungen und Anti-CSRF-Angriffe (Cross-Site Request Forgery) zu verhindern.

Beides wird grundsätzlich durch session token umgesetzt. Wenn der Client eine Seite anfordert, generiert der Server ein Zufallszahlen-Token, platziert das Token in der Sitzung und sendet es dann an den Client (normalerweise durch Erstellen eines versteckten Formulars). Wenn der Client das nächste Mal eine Anfrage sendet, wird das Token zusammen mit dem Formular an den Server übermittelt.

Bei Anwendung zur „Verhinderung wiederholter Formularübermittlung“ wird der Token-Wert in der Sitzung aktualisiert, nachdem die erste Überprüfung auf der Serverseite gleich ist. Wenn der Benutzer wiederholt übermittelt, schlägt die zweite Überprüfung fehl weil Das Token im vom Benutzer übermittelten Formular hat sich nicht geändert, aber das Token in der serverseitigen Sitzung hat sich geändert.

Online-Video-Tutorials teilen: PHP-Video-Tutorial

Token zum PHP-Formular hinzufügen, um wiederholte Übermittlungen zu verhindern

Das Prinzip besteht darin, eine zufällige Zeichenfolge zu generieren, die nach dem Absenden des Formulars überprüft wird. Dies kann verhindern, dass andere das Formular selbst schreiben, die Übermittlung wiederholen oder auf die Übermittlung klicken.

Einfache Implementierung (nur als Referenz):

<?php
/*
* PHP简单利用token防止表单重复提交

* 此处理方法纯粹是为了给初学者参考
*/

session_start();

function set_token() {

  $_SESSION[&#39;token&#39;] = md5(microtime(true));

}

function valid_token() {

  $return = $_REQUEST[&#39;token&#39;] === $_SESSION[&#39;token&#39;] ? true : false;

  set_token();

  return $return;

}

//如果token为空则生成一个token

if(!isset($_SESSION[&#39;token&#39;]) || $_SESSION[&#39;token&#39;]==&#39;&#39;) {

  set_token();

}

if(isset($_POST[&#39;test&#39;])){

  if(!valid_token()){

    echo "token error";

  }else{

    echo &#39;成功提交,Value:&#39;.$_POST[&#39;test&#39;];

  }

}

?>

<form method="post" action="">

  <input type="hidden" name="token" value="<?php echo $_SESSION[&#39;token&#39;]?>">

  <input type="text" name="test" value="Default">

  <input type="submit" value="提交" />

</form>
Nach dem Login kopieren

Empfohlene Tutorials zu verwandten Artikeln: PHP-Tutorial

Das obige ist der detaillierte Inhalt vonSo verhindern Sie die wiederholte Übermittlung von Formularen 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!