PHP+Session防止表单重复提交的解决方法


Posted in PHP onApril 09, 2018

 index.php

当前表单页面is_submit设为0

SESSION_START(); 
$_SESSION['is_submit'] = 0;
<form id="reg" action="post.php" method="post"> 
  <p>用户名:<input type="text" class="input" name="username" id="user"></p> 
  <p>密   码:<input type="password" class="input" name="password" id="pass"></p> 
  <p>E-mail:<input type="text" class="input" name="email" id="email"></p> 
  <p><input type="submit" name="submit" class="btn" value="提交注册"/></p> 
</form>

 post.php

若是提交表单了,设当前'is_submit为1,若是刷新post.php,那么将执行else代码

SESSION_START(); 
if (isset($_POST['submit'])) { 
  if ($_SESSION['is_submit'] == '0') { 
    $_SESSION['is_submit'] = '1'; 
    echo "代码块,要做的事,代码...<a onclick='history.go(-1);' href='javascript:void(0)'>返回</a>"; 
  } else { 
    echo "请不用重复提交<a href='index.php'>PHP+SESSION防止表单重复提交</a>"; 
  } 
}

 php 解决表单重复提交实现方法介绍

[导读] 重复提交是我们开发中会常碰到的一个问题,除了我们使用js来防止表单的重复提交,同时还可以使用php来防止重复提交哦。

例1 代码如下

重复提交是我们开发中会常碰到的一个问题,除了我们使用js来防止表单的重复提交,同时还可以使用php来防止重复提交哦。

例1

 代码如下

<?php
 /*
 * php中如何防止表单的重复提交
 */
session_start();
 if (empty($_SESSION['ip'])) {//第一次写入操作,判断是否记录了IP地址,以此知道是否要写入数据库
  $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; //第一次写入,为后面刷新或后退的判断做个铺垫
  //...........//写入数据库操作
} else {//已经有第一次写入后的操作,也就不再写入数据库
  echo '请不要再次刷新和后退'; //写一些已经写入的提示或其它东西
}
 ?>

具体原理

session范围变量token来防止。

1. 开启session:

session_start();

2. 如果有表单提交

 代码如下 复制代码

if (isset($token))

token以hidden的形式包含在form当中。

 代码如下 复制代码

<input type="hidden" name="token" value="<?php echo $token; ?>" />

 3. 如果是重复提交表单

 代码如下

if ($_SESSION["token"] != $token) { 
  // 不让重复提交,在此处理 
  // header("location:".$_SERVER['PHP_SELF']); 
 } else { 
  // 正常的表单提交,在此处理 
  // echo "已提交";  
}

4. 设置token值

 代码如下

$token = mt_rand(0,1000000);
$_SESSION['token'] = $token;

总结

以上所述是小编给大家介绍的PHP+Session防止表单重复提交的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
php仿ZOL分页类代码
Oct 02 PHP
Smarty变量调节器失效的解决办法
Aug 20 PHP
php下Memcached入门实例解析
Jan 05 PHP
服务器迁移php版本不同可能诱发的问题
Dec 22 PHP
PHP数组实例详解
Jun 26 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
PHP简单实现防止SQL注入的方法
Mar 13 PHP
PHP解析url并得到url参数方法总结
Oct 11 PHP
PHP验证类的封装与使用方法详解
Jan 10 PHP
PHP常见过waf webshell以及最简单的检测方法
May 21 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 PHP
详解Laravel服务容器的优势
May 29 PHP
PHP创建自己的Composer包方法
Apr 09 #PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 #PHP
PHP实现的获取文件mimes类型工具类示例
Apr 08 #PHP
PHP面向对象之里氏替换原则简单示例
Apr 08 #PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
Apr 08 #PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 #PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 #PHP
You might like
PHP中显示格式化的用户输入
2006/10/09 PHP
php在线生成ico文件的代码
2007/10/09 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
详解PHP PDO简单教程
2019/05/28 PHP
判断脚本加载是否完成的方法
2009/05/26 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
2016/05/26 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
使用TensorFlow实现SVM
2018/09/06 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
python eventlet绿化和patch原理
2020/11/21 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
幼儿园义卖活动方案
2014/01/17 职场文书
观看建国大业观后感
2015/06/01 职场文书
小学思品教学反思
2016/02/20 职场文书
关于JavaScript轮播图的实现
2021/11/20 Javascript
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers