PHP防止表单重复提交的几种常用方法汇总


Posted in PHP onAugust 19, 2014

本文较为详细的汇总了PHP防止表单重复提交的几种常用方法,在PHP程序开发中有着很高的实用价值。具体方法如下:

1. 使用JS让按钮在点击一次后禁用(disable)。采用这种方法可以防止多次点击的发生,实现方式较简单。

缺点是若客户端禁止JavaScript脚本,则失效。

2. 在提交成功后执行页面重定向(redirect)。转到提交成功信息页面。

特点:避免F5重复提交,消除浏览器前进和后退按钮可导致的同样问题。

3. 表单隐藏域中存放session(表单被请求时生成的标记)。采用此方法在接收表单数据后,检查此标志值是否存在,先进行删除,然后处理数据; 若不存在,说明已提交过,忽略本次提交。

/*
//服务端生成随机数存入session, 分配至表单页
$data['sess_id'] = $_SESSION['sid'] = mt_rand(1000, 9999);
$this->load->view('form', $data);

//表单页隐藏域存放此session值
<input type="hidden" name="sid" value="<?=$sess_id; ?>">

//处理
if($_POST['sid'] != '' && $_POST['sid'] == $_SESSION['sid'])
{
 unset($_SESSION['sid']);

 echo '处理数据';
}
else
{
 echo '已提交过表单';
}

4. 数据库唯一索引约束(最有效的防止重复数据的方法)。

希望本文所述方法对大家的PHP项目开发能起到一定的帮助作用。

PHP 相关文章推荐
再次研究下cache_lite
Feb 14 PHP
php表单转换textarea换行符的方法
Sep 10 PHP
php模拟js函数unescape的函数代码
Oct 20 PHP
php控制文件下载速度的方法
Mar 24 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
May 06 PHP
PHP的AES加密算法完整实例
Jul 20 PHP
对PHP依赖注入的理解实例分析
Oct 09 PHP
php获取文件名称和扩展名的方法
Feb 07 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
PHP内置函数生成随机数实例
Jan 18 PHP
php反射学习之依赖注入示例
Jun 14 PHP
PHP中单引号与双引号的区别分析
Aug 19 #PHP
php版本的cron定时任务执行器使用实例
Aug 19 #PHP
PHP框架Swoole定时器Timer特性分析
Aug 19 #PHP
几道坑人的PHP面试题 试试看看你会不会也中招
Aug 19 #PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
Aug 19 #PHP
php解析json数据实例
Aug 19 #PHP
php中使用array_filter()函数过滤空数组的实现代码
Aug 19 #PHP
You might like
聊天室php&amp;mysql(二)
2006/10/09 PHP
PHP仿盗链代码
2012/06/03 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
javascript 自定义事件初探
2009/08/21 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
python绘图库Matplotlib的安装
2014/07/03 Python
解析Python中的二进制位运算符
2015/05/13 Python
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
python实现嵌套列表平铺的两种方法
2018/11/08 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
Python实现中值滤波去噪方式
2019/12/18 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
临床医师专业个人自我评价
2014/01/08 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
小学音乐课教学反思
2016/02/18 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书