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 相关文章推荐
GBK的页面输出JSON格式的php函数
Feb 16 PHP
关于zend studio 出现乱码问题的总结
Jun 23 PHP
PHP 线程安全与非线程安全版本的区别深入解析
Aug 06 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
php制作动态随机验证码
Feb 12 PHP
php验证邮箱和ip地址最简单方法汇总
Oct 30 PHP
PHP编写的图片验证码类文件分享
Jun 06 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
May 01 PHP
使用PHPWord生成word文档的方法详解
Jun 06 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
Dec 02 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
建立动态的WML站点(一)
2006/10/09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
可实现多表单提交的javascript函数
2007/08/01 Javascript
JS 强制设为首页的代码
2009/01/31 Javascript
javascript 写类方式之六
2009/07/05 Javascript
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
vue cli2.0单页面title修改方法
2018/06/07 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
jQuery实现图片下载代码
2019/07/18 jQuery
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python用threading实现多线程详解
2017/02/03 Python
python+pyqt实现右下角弹出框
2017/10/26 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
基于python 取余问题(%)详解
2020/06/03 Python
python mock测试的示例
2020/10/19 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
毕业自我鉴定范文
2013/11/06 职场文书
大学生军训自我评价分享
2013/11/09 职场文书
交通安全演讲稿
2014/01/07 职场文书
centos8安装MongoDB的详细过程
2021/10/24 MongoDB
Android存储中最基本的文件存储方式
2022/04/30 Java/Android