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 相关文章推荐
PHP5.0对象模型探索之抽象方法和抽象类
Sep 05 PHP
php 全局变量范围分析
Aug 07 PHP
深入php-fpm的两种进程管理模式详解
Jun 03 PHP
基于flush()不能按顺序输出时的解决办法
Jun 29 PHP
ci检测是ajax还是页面post提交数据的方法
Nov 10 PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 PHP
PHP实现163邮箱自动发送邮件
Mar 29 PHP
PHP请求远程地址设置超时时间的解决方法
Oct 29 PHP
php中文语义分析实现方法示例
Sep 28 PHP
laravel withCount 统计关联数量的方法
Oct 10 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
Jun 06 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 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面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
php常用正则函数实例小结
2016/12/29 PHP
php生成微信红包数组的方法
2019/09/05 PHP
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
python定时执行指定函数的方法
2015/05/27 Python
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
python腾讯语音合成实现过程解析
2019/08/01 Python
python3实现弹弹球小游戏
2019/11/25 Python
Django REST framwork的权限验证实例
2020/04/02 Python
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
linux面试题参考答案(2)
2015/12/06 面试题
设置器与访问器的定义以及各自特点
2016/01/08 面试题
J2EE相关知识面试题
2013/08/26 面试题
GMP办公室主任岗位职责
2014/03/14 职场文书
毕业晚会主持词
2014/03/24 职场文书
竞赛口号大全
2014/06/16 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
2015年外联部工作总结
2015/04/03 职场文书
python 提取html文本的方法
2021/05/20 Python
Python道路车道线检测的实现
2021/06/27 Python