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 n个不重复的随机数生成代码
Jun 23 PHP
PHP 多维数组排序(usort,uasort)
Jun 30 PHP
zen cart新进商品的随机排序修改方法
Sep 10 PHP
PHP封装分页函数实现文本分页和数字分页
Oct 23 PHP
PHP输出九九乘法表代码实例
Mar 27 PHP
利用PHP将部分内容用星号替换
Apr 21 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
PHP实现的统计数据功能详解
Dec 06 PHP
php变量与JS变量实现不通过跳转直接交互的方法
Aug 25 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
Jan 23 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
Feb 07 PHP
详解Laravel框架的依赖注入功能
May 27 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自带的进位制之间的转换函数
2013/06/08 PHP
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
Google 静态地图API实现代码
2010/11/19 Javascript
Node.js编码规范
2014/07/14 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
Bootstrap项目实战之首页内容介绍(全)
2016/04/25 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
sortable+element 实现表格行拖拽的方法示例
2019/06/07 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
Python 文件重命名工具代码
2009/07/26 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
python中id函数运行方式
2020/07/03 Python
python 模拟登陆github的示例
2020/12/04 Python
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
法人身份证明书
2014/10/08 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
综合管理员岗位职责
2015/02/11 职场文书
纪录片信仰观后感
2015/06/08 职场文书
回门宴新娘答谢词
2015/09/29 职场文书
2015年库房管理工作总结
2015/10/14 职场文书
幼儿园大班开学寄语(2016秋季)
2015/12/03 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python