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 cron中的批处理
Sep 16 PHP
说说PHP的autoLoad自动加载机制
Sep 27 PHP
分享一段php获取linux服务器状态的代码
May 27 PHP
PHP+javascript制作带提示的验证码源码分享
May 28 PHP
PHP获取当前完整URL地址的函数
Dec 21 PHP
php实现四舍五入的方法小结
Mar 03 PHP
PHP简单判断字符串是否包含另一个字符串的方法
Mar 25 PHP
php提交表单时保留多个空格及换行的文本样式的方法
Jun 20 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
Sep 10 PHP
php实现简单四则运算器
Nov 29 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实现基于mysqli的Model基类完整实例
2016/04/08 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
JS中图片缓冲loading技术的实例代码
2013/08/29 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
ES6实现图片切换特效代码
2020/01/14 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
django批量导入xml数据
2016/10/16 Python
python中装饰器级连的使用方法示例
2017/09/29 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
Python中使用Counter进行字典创建以及key数量统计的方法
2018/07/06 Python
在python中pandas的series合并方法
2018/11/12 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
Python的形参和实参使用方式
2019/12/24 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
如何学习Python time模块
2020/06/03 Python
如何将json数据转换为python数据
2020/09/04 Python
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
行政助理岗位职责
2013/11/10 职场文书
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
毕业学生推荐信
2013/12/01 职场文书
医院实习介绍信
2014/01/12 职场文书
企业诚信承诺书
2014/05/23 职场文书
集体生日活动方案
2014/08/18 职场文书
新生儿未入户证明
2015/06/23 职场文书
java设计模式--建造者模式详解
2021/07/21 Java/Android
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server