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模拟SQL Server的两个日期处理函数
Oct 09 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
Jun 30 PHP
php设计模式  Command(命令模式)
Jun 17 PHP
PHP仿盗链代码
Jun 03 PHP
PHP删除数组中特定元素的两种方法
Jul 02 PHP
php实现简易聊天室应用代码
Sep 23 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
Oct 13 PHP
Laravel 实现密码重置功能
Feb 23 PHP
php工具型代码之印章抠图
Jul 18 PHP
关于Yii中模型场景的一些简单介绍
Sep 22 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 PHP
php redis setnx分布式锁简单原理解析
Oct 23 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 IF ELSE简化/三元一次式的使用
2011/08/22 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
PHP的PDO连接讲解
2019/01/24 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
event.srcElement 用法笔记e.target
2009/12/18 Javascript
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
鼠标事件延时切换插件
2011/03/12 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
js绘制圆形和矩形的方法
2015/08/05 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
2020/09/09 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
python爬取NUS-WIDE数据库图片
2016/10/05 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
美国电视购物:QVC
2017/02/06 全球购物
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
超市实习总结自我鉴定
2013/09/19 职场文书
师德模范事迹材料
2014/06/03 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技