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的一些小问题
Jul 03 PHP
php 网上商城促销设计实例代码
Feb 17 PHP
PHP迭代器实现斐波纳契数列的函数
Nov 12 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
Nov 03 PHP
WordPress自定义时间显示格式
Mar 27 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
Nov 16 PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 PHP
利用ajax和PHP实现简单的流程管理
Mar 23 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
Jun 17 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 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
php下Memcached入门实例解析
2015/01/05 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
PHP使用PDO调用mssql存储过程的方法示例
2017/10/07 PHP
Javascript数组与字典用法分析
2014/12/13 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
浅谈Python中的闭包
2015/07/08 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
python 统计代码行数简单实例
2017/05/04 Python
Python之os操作方法(详解)
2017/06/15 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
个人求职简历的自我评价
2013/10/19 职场文书
师范应届生语文教师求职信
2013/10/29 职场文书
我的五年职业生涯规划
2014/01/23 职场文书
加拿大留学自荐信
2014/01/28 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
2014年人事科工作总结
2014/11/19 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
2015年派出所工作总结
2015/04/24 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书