解决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 相关文章推荐
PHP输出控制功能在简繁体转换中的应用
Oct 09 PHP
PHP通用检测函数集合
Nov 25 PHP
PHP 面向对象实现代码
Nov 11 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
Mysql中分页查询的两个解决方法比较
May 02 PHP
8个必备的PHP功能实例代码
Oct 27 PHP
PHP基本语法总结
Sep 06 PHP
Yii2中关联查询简单用法示例
Aug 10 PHP
CodeIgniter框架基本增删改查操作示例
Mar 23 PHP
PHP中phar包的使用教程
Jun 14 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
Jun 13 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 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二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
删除html标签得到纯文本可处理嵌套的标签
2014/04/28 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
关闭浏览器窗口弹出提示框并且可以控制其失效
2014/04/15 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
Python 文件读写操作实例详解
2014/03/12 Python
深入解读Python解析XML的几种方式
2016/02/16 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
什么时候用assert
2015/05/08 面试题
前厅收银主管岗位职责
2014/02/04 职场文书
班长竞选演讲稿
2014/04/24 职场文书
白酒代理协议书范本
2014/10/26 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
pytorch Dropout过拟合的操作
2021/05/27 Python
vue封装数字翻牌器
2022/04/20 Vue.js