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 socket方式提交的post详解
Jul 19 PHP
php fckeditor 调用的函数
Jun 21 PHP
PHP开发不能违背的安全规则 过滤用户输入
May 01 PHP
PHP操作数组的一些函数整理介绍
Jul 17 PHP
使用PHP实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
Oct 09 PHP
深入PHP运行环境配置的详解
Jun 04 PHP
深入PHP变量存储的详解
Jun 13 PHP
ThinkPHP3.1之D方法实例详解
Jun 20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
Jun 25 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
Dec 29 PHP
PHP设计模式之建造者模式定义与用法简单示例
Aug 13 PHP
对laravel in 查询的使用方法详解
Oct 09 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
discuz Passport 通行证 整合笔记
2008/06/30 PHP
PHP中防止SQL注入实现代码
2011/02/19 PHP
PHP错误和异长常处理总结
2014/03/06 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
php判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
js停止输出代码
2008/07/20 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
Python算法之图的遍历
2017/11/16 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
python中取绝对值简单方法总结
2020/07/24 Python
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
高中军训感言400字
2014/02/24 职场文书
幼儿园小班评语
2014/04/18 职场文书
学雷锋活动总结范文
2014/04/25 职场文书
家长给学校的建议书
2014/05/15 职场文书
师德师风自查总结
2014/10/14 职场文书
关于使用Redisson订阅数问题
2022/01/18 Redis