Heim > Artikel > Backend-Entwicklung > So verhindern Sie die wiederholte Übermittlung von Formularen in PHP
PHP verhindert wiederholte Formularübermittlung
Lösung 1: Einführung eines Cookie-Mechanismus zur Lösung von
Senden Der Seitencode lautet wie folgt: Ein.php-Code lautet wie folgt: (Empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Beherrschung)
<form id="form1" name="form1" method="post" action="t2.php"> <p>说明 <input type="text" name="titile" /> </p> <p> <input type="submit" name="Submit" value="提交" /> </p> </form> <?php setcookie("onlypost", 't'); //设置cookie,可以带上时间值。像有些论坛防止灌水就可以将你的一些基本信息存放到里面。 ?>
PHP-Code
<?php if($_COOKIE['onlypost'] == 't'){ print_r($_COOKIE); //处理提交的内容 如果验证成功则处理 print "ok"; setcookie("onlypost", 'f'); //改变cooike值删除也可以了 } ?>
Nachteile der oben genannten Verarbeitung: Wenn der Kunde Cookies auf dem Client deaktiviert, hat diese Methode keine Auswirkung. Bitte beachten Sie dies.
Lösung 2: Sitzung verwenden (dies entspricht der JSP-Verarbeitungsmethode)
Durch die Verwendung der Sitzungsfunktion von PHP kann auch die wiederholte Übermittlung von Formularen vermieden werden. Die Sitzungsvariable wird auf der Serverseite gespeichert. Wenn Sie das nächste Mal auf diese Variable zugreifen, können Sie den von Ihnen übermittelten Wert mit einer Sitzungsvariablen aufzeichnen Wenn es nicht übereinstimmt, wird davon ausgegangen, dass es sich um den Benutzer handelt, der wiederholt sendet.
Code von Seite A:
<?php session_start(); //根据当前SESSION生成随机数 $code = mt_rand(0,1000000); $_SESSION['code'] = $code; //将此随机数暂存入到session ?> <form id="form1" name="form1" method="post" action="t2.php"> <p>说明 <input type="text" name="titile" /> <input type="hidden" name="originator" value="<?php echo $code;?>"> </p> <p> <input type="submit" name="Submit" value="提交" /> </p> </form> B页面: <?php session_start(); if(isset($_POST['originator'])) { if($_POST['originator'] == $_SESSION['code']){ echo "ok"; unset($_SESSION["code"]); //将其清除掉此时再按F5则无效 }else{ echo "请不要刷新本页面或重复提交表单"; } }?>
Lösung 3: Umleitungsverarbeitung auf der Serverseite durchführen
if (isset($_POST['action']) && $_POST['action'] == 'submitted') { // 处理数据,如插入数据后,立即转向到其他页面 header('location:submits_success.php'); //效果与JSP里面的sendRedirect类似 }
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!