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获取网页内容方法总结
Dec 04 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
Apr 13 PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
Jun 06 PHP
php数组删除元素示例
Mar 21 PHP
PHP自动生成表单代码分享
Jun 19 PHP
PHP开发Apache服务器配置
Jul 15 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
yii2实现 &quot;上一篇,下一篇&quot; 功能的代码实例
Feb 04 PHP
删除PHP数组中的重复元素的实现代码
Apr 10 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
针对PHP开发安全问题的相关总结
Mar 22 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
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
PHP访问Google Search API的方法
2015/03/05 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
有趣的javascript数组定义方法
2010/09/10 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
Webpack实战加载SVG的方法
2017/12/26 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python操作MySQL数据库9个实用实例
2015/12/11 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
2018/05/11 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
Python 串口通信的实现
2020/09/29 Python
用python发送微信消息
2020/12/21 Python
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
英国航空官网:British Airways
2016/09/11 全球购物
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
如何高效率的查找一个月以内的数据
2012/04/15 面试题
测绘工程专业个人自我评价
2013/12/01 职场文书
给交警的表扬信
2014/01/12 职场文书
写求职信有什么意义
2014/02/17 职场文书
《学会待客》教学反思
2014/02/22 职场文书
幼儿园教师教育感言
2014/02/28 职场文书
绿色出行口号
2014/06/18 职场文书
学校2014年度工作总结
2014/12/06 职场文书
中学生学习保证书
2015/02/26 职场文书