Heim  >  Artikel  >  Backend-Entwicklung  >  So verhindern Sie die wiederholte Übermittlung von Formularen in PHP

So verhindern Sie die wiederholte Übermittlung von Formularen in PHP

(*-*)浩
(*-*)浩Original
2019-09-20 13:40:302529Durchsuche

PHP verhindert wiederholte Formularübermittlung

So verhindern Sie die wiederholte Übermittlung von Formularen in PHP

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", &#39;t&#39;);         //设置cookie,可以带上时间值。像有些论坛防止灌水就可以将你的一些基本信息存放到里面。
?>

PHP-Code

<?php  
if($_COOKIE[&#39;onlypost&#39;] == &#39;t&#39;){  
    print_r($_COOKIE);  
    //处理提交的内容           如果验证成功则处理  
    print "ok";  
    setcookie("onlypost", &#39;f&#39;); //改变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[&#39;code&#39;] = $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[&#39;originator&#39;])) {
    if($_POST[&#39;originator&#39;] == $_SESSION[&#39;code&#39;]){
        echo "ok";
        unset($_SESSION["code"]);               //将其清除掉此时再按F5则无效
    }else{
    echo "请不要刷新本页面或重复提交表单";
    }
}?>

Lösung 3: Umleitungsverarbeitung auf der Serverseite durchführen

if (isset($_POST[&#39;action&#39;]) && $_POST[&#39;action&#39;] == &#39;submitted&#39;) {
// 处理数据,如插入数据后,立即转向到其他页面
header(&#39;location:submits_success.php&#39;);     //效果与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!

Stellungnahme:
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