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图片验证码制作实现分享(全)
May 10 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
Jun 01 PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 PHP
自己写了一个php检测文件编码的函数
Apr 21 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
Jun 22 PHP
PHP如何通过AJAX方式实现登录功能
Nov 23 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
Jan 03 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
php-msf源码详解
Dec 25 PHP
Yii Framework框架使用PHPExcel组件的方法示例
Jul 24 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
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
nodejs开发微信小程序实现密码加密
2017/07/11 NodeJs
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
React Native 通告消息竖向轮播组件的封装
2020/08/25 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
python fabric实现远程操作和部署示例
2014/03/25 Python
python调用fortran模块
2016/04/08 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
星空联盟C# .net笔试题
2014/12/05 面试题
售后服务经理岗位职责范本
2014/02/22 职场文书
学历公证委托书
2014/04/09 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
软环境建设心得体会
2014/09/09 职场文书
先进单位申报材料
2014/12/25 职场文书
工程资料员岗位职责
2015/04/13 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库