利用PHP的Session功能防止表单重复提交

发表于 : 2017-11-09   · CC BY-NC-SA 4.0 ·   1619 人浏览

利用PHP的Session功能,也能避免重复提交表单。Session保存在服务器端,在PHP运行过程中可以改变Session变量,下次访问这个变量时,得到的是新赋的值,所以,可以用一个Session变量记录表单提交的值,如果不匹配,则认为是用户在重复提交。

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 "请不要刷新本页面或重复提交表单";  
    }  
}?>

 

PHP 重复提交 Session