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 相关文章推荐
PHP jQuery表单,带验证具体实现方法
Feb 15 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
Aug 06 PHP
php实现兼容2038年后Unix时间戳转换函数
Mar 18 PHP
PHP中生成UUID自定义函数分享
Jun 10 PHP
PHP里的单例类写法实例
Jun 25 PHP
thinkphp关于简单的权限判定方法
Apr 03 PHP
PHP培训要多少钱
Jun 06 PHP
thinkPHP框架中执行事务的方法示例
May 31 PHP
ThinkPHP 5.x远程命令执行漏洞复现
Sep 23 PHP
PHP字符串和十六进制如何实现互相转换
Jul 16 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 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_SELF的安全问题
2009/09/05 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
js 动态选中下拉框
2009/11/26 Javascript
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
javascript 计算两个整数的百分比值
2009/12/26 Javascript
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
python3实现高效的端口扫描
2019/08/31 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
如何基于Python + requests实现发送HTTP请求
2020/01/13 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
Python偏函数实现原理及应用
2020/11/20 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
产品质量承诺书范文
2014/03/27 职场文书
作风建设演讲稿
2014/05/23 职场文书
团队队名口号大全
2014/06/06 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
人民检察院起诉书
2015/05/20 职场文书
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server