解决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和js交互一例-PHP教程,PHP应用
Jan 03 PHP
php 8小时时间差的解决方法小结
Dec 22 PHP
用PHP读取超大文件的实例代码
Apr 01 PHP
浅谈php和.net的区别
Sep 28 PHP
PHP实现阳历到农历转换的类实例
Mar 07 PHP
CI(Codeigniter)的Setting增强配置类实例
Jan 06 PHP
PHP封装的数据库保存session功能类
Jul 11 PHP
php readfile下载大文件失败的解决方法
May 22 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
laravel框架中间件 except 和 only 的用法示例
Jul 12 PHP
PHP defined()函数的使用图文详解
Jul 20 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通过COM使用ADODB的简单例子
2006/12/31 PHP
php全角字符转换为半角函数
2014/02/07 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
2017/04/20 PHP
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
javaScript Array(数组)相关方法简述
2009/07/25 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
jQuery实现单行文字间歇向上滚动源代码
2013/06/02 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
vantUI 获得piker选中值的自定义ID操作
2020/11/04 Javascript
python计算一个序列的平均值的方法
2015/07/11 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
tensorflow 模型权重导出实例
2020/01/24 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
毕业实习评语
2014/02/10 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
市级文明单位申报材料
2014/05/07 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
自我检讨书范文
2015/01/28 职场文书
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers
Python sklearn分类决策树方法详解
2022/09/23 Python