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 相关文章推荐
简单示例AJAX结合PHP代码实现登录效果代码
Jul 25 PHP
8个出色的WordPress SEO插件收集
Feb 26 PHP
php 字符串替换的方法
Jan 10 PHP
PHP flush()与ob_flush()的区别详解
Jun 03 PHP
php针对cookie操作的队列操作类实例
Dec 10 PHP
PHP 中提示undefined index如何解决(多种方法)
Mar 16 PHP
PHP判断JSON对象是否存在的方法(推荐)
Jul 06 PHP
PHP 7.1新特性的汇总介绍
Dec 16 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
thinkphp 框架数据库切换实现方法分析
May 18 PHP
详解Laravel服务容器的优势
May 29 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
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
PHP中使用虚代理实现延迟加载技术
2014/11/05 PHP
php实现的xml操作类
2016/01/15 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
ThinkPHP 5.x远程命令执行漏洞复现
2019/09/23 PHP
php面向对象重点知识分享
2019/09/27 PHP
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
2016/09/02 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
2016/11/05 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
python创造虚拟环境方法总结
2019/03/04 Python
pygame实现飞机大战
2020/03/11 Python
python实现代码审查自动回复消息
2021/02/01 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
体育专业个人的求职信范文
2013/09/21 职场文书
高校毕业生自我鉴定
2013/10/27 职场文书
公司投资建议书
2014/05/16 职场文书
单位工作证明格式模板
2014/10/04 职场文书
基石观后感
2015/06/12 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
Oracle使用别名的好处
2022/04/19 Oracle
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers