介绍
这篇文章将为大家详细讲解有关如何在PHP中利用会话防止表单重复提交,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
<>强,指数。php 强>
当前表单页面is_submit设为0
SESSION_START (); $ _SESSION [& # 39; is_submit& # 39;]=0; & lt;形式id=皉eg"action=皃ost.php"方法=皃ost"比; & lt; p>用户名:& lt;输入类型=皌ext"类=癷nput"name=皍sername"id=皍ser"祝辞& lt;/p> & lt; p>密和,码:& lt;输入类型=皃assword"类=癷nput"name=皃assword"id=皃ass"祝辞& lt;/p> & lt; p>电子邮件:& lt;输入类型=皌ext"类=癷nput"name=癳mail"id=癳mail"祝辞& lt;/p> & lt; p> & lt;输入类型=皊ubmit"name=皊ubmit"类=癰tn"值=https://www.yisu.com/zixun/碧峤蛔⒉?/> 形式>
, post.php
若是提交表单了,设当前& # 39;is_submit为1,若是刷新职位。其他php,那么将执行代码
SESSION_START (); 如果(收取($ _POST[& # 39;提交# 39;])){ if ($ _SESSION [& # 39; is_submit& # 39;]==& # 39; 0 & # 39;) { $ _SESSION [& # 39; is_submit& # 39;]=& # 39; 1 & # 39;; 回声“代码块,要做的事,代码……& lt;> & lt;及# 63;php/* * php中如何防止表单的重复提交 */session_start (); 如果(空($ _SESSION [& # 39; IP # 39;])){//第一次写入操作,判断是否记录了IP地址,以此知道是否要写入数据库 $ _SESSION [& # 39; ip # 39;]=$ _SERVER [& # 39; REMOTE_ADDR& # 39;];//第一次写入,为后面刷新或后退的判断做个铺垫//...........//写入数据库操作 其他}{//已经有第一次写入后的操作,也就不再写入数据库 回声& # 39;请不要再次刷新和后退& # 39;;//写一些已经写入的提示或其它东西 } ,# 63;在
具体原理
会话范围变量令牌来防止。
1。开启会话:
<代码> session_start(); 代码>
2。如果有表单提交
,代码如下复制代码
<代码>如果(收取(令牌)美元)代码>
标记以隐藏的形式包含在形式当中。
,代码如下复制代码
& lt;输入类型=癶idden"name=皌oken"值=https://www.yisu.com/zixun/?& # 63; php echo $令牌;& # 63;> "/>
, 3。如果是重复提交表单
,代码如下
if ($ _SESSION [“token"] !=$令牌){//不让重复提交,在此处理//标题(“位置:“。$ _SERVER [& # 39; PHP_SELF& # 39;]); 其他}{//正常的表单提交,在此处理//回声“已提交“; }
4。设置的令牌值
,代码如下
$牌=mt_rand (0, 1000000); $ _SESSION[& # 39;标记# 39;]=美元令牌;
关于如何在PHP中利用会话防止表单重复提交就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。