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 相关文章推荐
DISCUZ 分页代码
Jan 02 PHP
Thinkphp中Create方法深入探究
Jun 16 PHP
CI框架学习笔记(二) -入口文件index.php
Oct 27 PHP
php连接odbc数据源并保存与查询数据的方法
Dec 24 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 PHP
PHP中把数据库查询结果输出为json格式简单实例
Apr 09 PHP
php实现购物车功能(下)
Jan 05 PHP
php实现用户注册密码的crypt加密
Jun 08 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 PHP
实例讲解php实现多线程
Jan 27 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 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 301转向实现代码
2008/09/18 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
javascript 建设银行登陆键盘
2008/06/10 Javascript
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
JS 操作符整理[推荐收藏]
2011/11/15 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
vue.config.js中配置Vue的路径别名的方法
2020/02/11 Javascript
jQuery实现评论模块
2020/08/19 jQuery
python根据京东商品url获取产品价格
2015/08/09 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
python抓取文件夹的所有文件
2018/02/27 Python
Python实现ping指定IP的示例
2018/06/04 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
使用python3批量下载rbsp数据的示例代码
2019/12/20 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
Python使用re模块验证危险字符
2020/05/21 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
ORACLE第二个十问
2013/12/14 面试题
采购部经理岗位职责
2014/02/10 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
五年级学生评语大全
2014/12/26 职场文书
思想政治表现评语
2015/01/04 职场文书
离婚起诉书范本
2015/05/18 职场文书