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 相关文章推荐
一个ubbcode的函数,速度很快.
Oct 09 PHP
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
PHP 文章中的远程图片采集到本地的代码
Jul 30 PHP
PHP 日志缩略名的创建函数代码
May 26 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
PHP mysql与mysqli事务使用说明 分享
Aug 17 PHP
一个好用的PHP验证码类实例分享
Dec 27 PHP
php读取excel文件示例分享(更新修改excel)
Feb 27 PHP
php代码审计比较有意思的例子
May 07 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
PHP处理bmp格式图片的方法分析
Jul 04 PHP
Laravel 实现密码重置功能
Feb 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
简体中文转换为繁体中文的PHP函数
2006/10/09 PHP
php zend解密软件绿色版测试可用
2008/04/14 PHP
PHP中shuffle数组值随便排序函数用法
2014/11/21 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
JavaScript 动态将数字金额转化为中文大写金额
2009/05/14 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
jquery 取子节点及当前节点属性值
2014/07/25 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
Javascript实现颜色rgb与16进制转换的方法
2015/04/18 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
jquery实现上传文件进度条
2020/03/26 jQuery
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
python版简单工厂模式
2017/10/16 Python
django项目搭建与Session使用详解
2018/10/10 Python
pygame实现打字游戏
2021/02/19 Python
使用Python函数进行模块化的实现
2019/11/15 Python
Python的形参和实参使用方式
2019/12/24 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
会计系毕业个人自荐信格式
2013/09/23 职场文书
记账会计岗位职责
2014/06/16 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
物流业务员岗位职责
2015/04/03 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
如何利用pygame实现打飞机小游戏
2021/05/30 Python
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫