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开发需要注意的安全问题
Sep 01 PHP
JS 网站性能优化笔记
May 24 PHP
php设计模式 Strategy(策略模式)
Jun 26 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
深入php self与$this的详解
Jun 08 PHP
解析php函数method_exists()与is_callable()的区别
Jun 21 PHP
php三维数组去重(示例代码)
Nov 26 PHP
PHP中unset,array_splice删除数组中元素的区别
Jul 28 PHP
PHP、Python和Javascript的装饰器模式对比
Feb 03 PHP
php验证身份证号码正确性的函数
Jul 20 PHP
php 使用html5实现多文件上传实例
Oct 24 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
Apr 18 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/12/22 PHP
基于php无限分类的深入理解
2013/06/02 PHP
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
javascript制作2048游戏
2015/03/30 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
Angular实现的table表格排序功能完整示例
2017/12/22 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
JavaScript实现拖拽功能
2020/02/11 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
VUE : vue-cli中去掉路由中的井号#操作
2020/09/04 Javascript
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python ip正则式
2009/05/07 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
Python+Wordpress制作小说站
2017/04/14 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
详解python读取和输出到txt
2019/03/29 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
python如何设置静态变量
2020/09/07 Python
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
2013/08/02 HTML / CSS
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
党员剖析材料范文
2014/12/18 职场文书
奖金申请报告模板
2015/05/15 职场文书
民事调解书范文
2015/05/20 职场文书
使用pytorch实现线性回归
2021/04/11 Python
最新最全的手机号验证正则表达式
2022/02/24 Javascript