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 相关文章推荐
提问的智慧(2)
Oct 09 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
解析php二分法查找数组是否包含某一元素
May 23 PHP
Thinkphp中的volist标签用法简介
Jun 18 PHP
php实现singleton()单例模式实例
Nov 06 PHP
PHP将字符分解为多个字符串的方法
Nov 22 PHP
ecshop实现smtp发送邮件
Feb 03 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
PHP处理会话函数大总结
Aug 05 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
Apr 20 PHP
Laravel框架实现多数据库连接操作详解
Jul 12 PHP
PHP获取真实IP及IP模拟方法解析
Nov 24 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数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
php实现微信模板消息推送
2018/03/30 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
jquery 元素相对定位代码
2010/10/15 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
2012/12/12 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
2017/09/06 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
python 第三方库的安装及pip的使用详解
2017/05/11 Python
python读取Kafka实例
2019/12/23 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
纯HTML+CSS3制作导航菜单(附源码)
2013/04/24 HTML / CSS
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
大学生毕业自荐信
2013/10/10 职场文书
会计专业自我鉴定范文
2013/12/29 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
生产实习心得体会范文
2016/01/22 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书