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


Posted in PHP onSeptember 29, 2015

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

<?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);
2$_SESSION['token'] = $token;

以上就是关于如何解决php表单重复提交实现方法,希望对大家的学习有所帮助。

PHP 相关文章推荐
使用VisualStudio开发php的图文设置方法
Aug 21 PHP
php 文件上传实例代码
Apr 19 PHP
php导出word文档与excel电子表格的简单示例代码
Mar 08 PHP
PHP中Fatal error session_start()错误解决步骤
Aug 05 PHP
解读PHP中的垃圾回收机制
Aug 10 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
May 13 PHP
thinkPHP5.0框架环境变量配置方法
Mar 17 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
PHP实现合并两个排序链表的方法
Jan 19 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 PHP
laravel 解决crontab不执行的问题
Oct 22 PHP
PHP多进程简单实例小结
Nov 09 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
Sep 29 #PHP
php猜单词游戏
Sep 29 #PHP
PHP代码优化技巧小结
Sep 29 #PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 #PHP
PHP类的封装与继承详解
Sep 29 #PHP
PHP比较运算符的详细介绍
Sep 29 #PHP
php提高网站效率的技巧
Sep 29 #PHP
You might like
php面向对象的方法重载两种版本比较
2008/09/08 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
2011/10/03 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
微信支付开发维权通知实例
2016/07/12 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
js 奇葩技巧之隐藏代码
2017/08/11 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
python使用pil生成缩略图的方法
2015/03/26 Python
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
基于Python的接口测试框架实例
2016/11/04 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
Python图像读写方法对比
2020/11/16 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
html5启动原生APP总结
2020/07/03 HTML / CSS
应届毕业生求职信范文
2014/05/08 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
应届大专生自荐书
2014/06/16 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书