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定时自动生成静态HTML的实现代码
Jun 20 PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 PHP
解析php扩展php_curl.dll不加载的解决方法
Jun 26 PHP
PHP面向对象之旅:深入理解static变量与方法
Jan 06 PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 PHP
ThinkPHP中自定义目录结构的设置方法
Aug 15 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
php检测图片主要颜色的方法
Jul 01 PHP
教你识别简单的免查杀PHP后门
Sep 13 PHP
PHP直接修改表内容DataGrid功能实现代码
Sep 24 PHP
PHP 表单提交及处理表单数据详解及实例
Dec 27 PHP
Laravel框架生命周期与原理分析
Jun 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连接和操作MySQL数据库基础教程
2014/09/29 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
JavaScript简单计算人的年龄示例
2017/04/15 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
Javascript实现异步编程的过程
2018/06/18 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
Python实现简单http服务器
2018/04/12 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
Sanic框架配置操作分析
2018/07/17 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
2013年高中生自我评价
2013/10/23 职场文书
大学毕业生自我鉴定
2013/11/05 职场文书
消防安全检查制度
2014/02/04 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
国庆节活动总结
2014/08/26 职场文书
学术会议通知范文
2015/04/15 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL