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下使用无限生命期Session的方法
Mar 16 PHP
功能齐全的PHP发送邮件类代码附详细说明
Jul 10 PHP
php数据库抽象层 PDO
May 07 PHP
$_GET['goods_id']+0 的使用详解
Jun 06 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
PHP中使用TCPDF生成PDF文档实例
Jul 01 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
Jul 28 PHP
thinkphp命名空间用法实例详解
Dec 30 PHP
PHP后端银联支付及退款实例代码
Jun 23 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
PHP实现限制域名访问的实现代码(本地验证)
Sep 13 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
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
PHP编译安装中遇到的两个错误和解决方法
2014/08/20 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
JS 的应用开发初探(mootools)
2009/12/19 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
2016/09/24 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
2020/11/18 jQuery
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
编写Python的web框架中的Model的教程
2015/04/29 Python
Python实现k-means算法
2018/02/23 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
综合测评自我鉴定
2013/10/08 职场文书
房屋买卖协议书
2014/04/10 职场文书
小学英语教师研修感悟
2015/11/18 职场文书
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS