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 8小时时间差的解决方法小结
Dec 22 PHP
关于js与php互相传值的介绍
Jun 25 PHP
php按单词截取字符串的方法
Apr 07 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
Dec 12 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
thinkPHP5实现数据库添加内容的方法
Oct 25 PHP
php实现的表单验证类完整示例
Aug 13 PHP
Laravel使用Queue队列的技巧汇总
Sep 02 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
Sep 12 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与SQL注入攻击[三]
2007/04/17 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
2020/12/15 PHP
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
基于javascript实现泡泡大冒险网页版小游戏
2016/03/23 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
React 使用Hooks简化受控组件的状态绑定
2019/03/18 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
python实现定时提取实时日志程序
2018/06/22 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
芬兰灯具网上商店:Nettilamppu.fi
2018/06/30 全球购物
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
优秀应届生推荐信
2013/11/09 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
法律进社区实施方案
2014/03/21 职场文书
活动总结新闻稿
2014/08/30 职场文书
喋血孤城观后感
2015/06/08 职场文书
2015年重阳节主持词
2015/07/04 职场文书
运动会报道稿大全
2015/07/23 职场文书
企业法律事务工作总结
2015/08/11 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL