php防止表单重复提交实例讲解


Posted in PHP onFebruary 11, 2019

说来惭愧,前几天做项目的时候,出现个低级错误。在公司后台做表单提交,一是自己员工用,二是 html 自己来写的,没有验证表单重复提交,结果出错了。写出来记录下以便提醒自己,时刻不能疏忽。

解决方法

其实方法有很多种,只举例几个简单的来说说。

框架

很多框架都有防止重复提交的功能,大家应该都有了解,这里不再赘述。

前端

原理很简单,用户点击提交之后,使用 JS 将提交按钮置灰即可。

后端

也就是使用 PHP 进行验证,当然不局限以下几种

Cookie

用户提交表单到后端,在 Cookie 中做标记,指定时间内重复提交无效。但是用户禁用 Cookie 这个方法就失效了。

<?php
 
if (isset($_COOKIE['formFlag'])) {
  exit('error');
}
 
// 处理数据
 
// 30秒内重复提交无效
setcookie('formFlag', time(), time() + 30);

Session

展示表单页面的时候,生成随机数,同时存储在 Session 中以及表单隐藏域中。第一次提交的时候,对比成功删除 Session 中的值。

<?php
 
if (!isset($_SESSION['formFlag']) || $_POST['formFlag'] != $_SESSION['formFlag']) {
  exit('error');
}
 
// 处理数据
 
unset($_SESSION['formFlag']);

上面就是本次介绍PHP防止重复提交表单的全部内容,感谢大家对三水点靠木的支持。

PHP 相关文章推荐
用PHP实现递归循环每一个目录
Aug 08 PHP
PHP动态分页函数,PHP开发分页必备啦
Nov 07 PHP
Window下PHP三种运行方式图文详解
Jun 11 PHP
与文件上传有关的php配置参数总结
Jun 14 PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 PHP
php数组键值用法实例分析
Feb 27 PHP
为你总结一些php信息函数
Oct 21 PHP
全面解读PHP的Yii框架中的日志功能
Mar 17 PHP
浅谈PHP eval()函数定义和用法
Jun 21 PHP
PHP双向链表定义与用法示例
Jan 31 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 PHP
stripos函数知识点实例分享
Feb 11 #PHP
PHP检查URL包含特定字符串实例方法
Feb 11 #PHP
PHP strripos函数用法总结
Feb 11 #PHP
PHP xpath()函数讲解
Feb 11 #PHP
Laravel框架实现超简单的分页效果示例
Feb 08 #PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
Feb 08 #PHP
Yii框架引入coreseek分页功能示例
Feb 08 #PHP
You might like
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
React Native 图片查看组件的方法
2018/03/01 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
Python如何获取文件路径/目录
2020/09/22 Python
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
建筑毕业生自我鉴定
2013/10/18 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
小学教师自我评价
2015/03/04 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
2016幼儿教师自荐信范文
2016/01/28 职场文书
人民币使用说明书
2019/04/17 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书
在Django中使用MQTT的方法
2021/05/10 Python