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 相关文章推荐
详解:――如何将图片储存在数据库里
Dec 05 PHP
PHP+memcache实现消息队列案例分享
May 21 PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
PHP实现远程下载文件到本地
May 17 PHP
关于PHP开发的9条建议
Jul 27 PHP
Yii2中如何使用modal弹窗(基本使用)
May 30 PHP
php 数组字符串搜索array_search技巧
Jul 05 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
PHP count()函数讲解
Feb 03 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 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
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
javascript常见操作汇总
2014/09/03 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
JQuery标签页效果实例详解
2015/12/24 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
jQuery Easyui快速入门教程
2016/08/21 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
jQuery实现动态生成年月日级联下拉列表示例
2019/05/11 jQuery
Vue.js实现备忘录功能
2019/06/26 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
详解python开发环境搭建
2016/12/16 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
python能开发游戏吗
2020/06/11 Python
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
建筑学推荐信
2013/11/03 职场文书
2014国培学习感言
2014/03/05 职场文书
怎样写家长意见
2015/06/04 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS
Python实现为PDF去除水印的示例代码
2022/04/03 Python
MySQL批量更新不同表中的数据
2022/05/11 MySQL