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生成便于打印的网页
Oct 09 PHP
PHP下通过file_get_contents的代理使用方法
Feb 16 PHP
深入Apache与Nginx的优缺点比较详解
Jun 17 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
php全角字符转换为半角函数
Feb 07 PHP
php读取文件内容的方法汇总
Jan 24 PHP
PHP实现获取第一个中文首字母并进行排序的方法
May 09 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
PHP array_reduce()函数的应用解析
Oct 28 PHP
PHP简单验证码功能机制实例详解
Mar 27 PHP
php下的原生ajax请求用法实例分析
Feb 28 PHP
基于PHP实现发微博动态代码实例
Dec 11 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删除数组中的特定元素的代码
2012/06/28 PHP
基于递归实现的php树形菜单代码
2014/11/19 PHP
php强制运行广告的方法
2014/12/01 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
利用js+css+html实现固定table的列头不动
2016/12/08 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
Python闭包实现计数器的方法
2015/05/05 Python
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
Python中内建函数的简单用法说明
2016/05/05 Python
python 中random模块的常用方法总结
2017/07/08 Python
Python 装饰器使用详解
2017/07/29 Python
Python计算信息熵实例
2020/06/18 Python
html5读取本地文件示例代码
2014/04/22 HTML / CSS
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
公司活动邀请函
2014/01/24 职场文书
棉花姑娘教学反思
2014/02/15 职场文书
上课看小说检讨书
2014/02/22 职场文书
英语教研活动总结
2014/07/02 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
学校运动会报道稿
2014/09/23 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书
Golang标准库syscall详解(什么是系统调用)
2021/05/25 Golang
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis