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 相关文章推荐
WINDOWS服务器安装多套PHP的另类解决方案
Oct 09 PHP
如何对PHP程序中的常见漏洞进行攻击(上)
Oct 09 PHP
基于Zend的Captcha机制的应用
May 02 PHP
排序算法之PHP版快速排序、冒泡排序
Apr 09 PHP
php中json_encode UTF-8中文乱码的更好解决方法
Sep 28 PHP
php文件压缩之PHPZip类用法实例
Jun 18 PHP
PHP数据库连接mysql与mysqli对比分析
Jan 04 PHP
php中namespace use用法实例分析
Jan 22 PHP
PHP实现留言板功能的详细代码
Mar 25 PHP
PHP基于ORM方式操作MySQL数据库实例
Jun 21 PHP
实例讲解PHP验证邮箱是否合格
Jan 28 PHP
php和nginx交互实例讲解
Sep 24 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
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
js下用层来实现select的title提示属性
2010/02/23 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
2016/05/21 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
js 图片转base64的方式(两种)
2018/04/24 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
2018/06/05 Javascript
nodejs的路径问题的解决
2018/06/30 NodeJs
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
小程序实现留言板
2018/11/02 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
跟老齐学Python之类的细节
2014/10/13 Python
Python中使用partial改变方法默认参数实例
2015/04/28 Python
使用python加密自己的密码
2015/08/04 Python
python适合人工智能的理由和优势
2019/06/28 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
Python中bisect的使用方法
2019/12/31 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
关于Python解包知识点总结
2020/05/05 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
精选干货:Java精选笔试题附答案
2014/01/18 面试题
物流仓管员岗位职责
2013/12/04 职场文书
网页美工求职信范文
2014/04/17 职场文书
公司承诺书怎么写
2014/05/24 职场文书
护理专业求职信
2014/06/15 职场文书
新郎接新娘保证书
2015/05/08 职场文书
会计岗位工作总结
2015/08/12 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书