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下读取文本文件的代码
Jul 02 PHP
利用PHP实现智能文件类型检测的实现代码
Aug 02 PHP
PHP缓存技术的多种方法小结
Aug 14 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
Jun 03 PHP
php绘图中显示不出图片的原因及解决
Mar 05 PHP
PHP中比较时间大小实例
Aug 21 PHP
php中curl使用指南
Feb 05 PHP
PHP判断上传文件类型的解决办法
Oct 20 PHP
详谈php静态方法及普通方法的区别
Oct 04 PHP
PHP会话控制实例分析
Dec 24 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
Laravel中Kafka的使用详解
Mar 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
PHP文件上传主要代码讲解
2013/09/30 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
PHP获取中英混合字符串长度的方法
2014/06/07 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
JavaScript DOM 添加事件
2009/02/14 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
推荐25个超炫的jQuery网格插件
2014/11/28 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
js面向对象的写法
2016/02/19 Javascript
String字符串截取的四种方式总结
2016/11/28 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
JS触摸与手势事件详解
2017/05/09 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
Python导出DBF文件到Excel的方法
2015/07/25 Python
初步剖析C语言编程中的结构体
2016/01/16 Python
Python实现二维数组输出为图片
2018/04/03 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
Java里面如何创建一个内部类的实例
2015/01/19 面试题
毕业生自我鉴定
2013/11/05 职场文书
交警个人先进事迹材料
2014/05/11 职场文书
财务负责人任命书
2014/06/06 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL