解决php表单重复提交实现方法


Posted in PHP onSeptember 29, 2015

重复提交是我们开发中会常碰到的一个问题,除了我们使用js来防止表单的重复提交,同时还可以使用php来防止重复提交哦。

<?php
/*
 * php中如何防止表单的重复提交
 */
session_start();
if (empty($_SESSION['ip'])) {//第一次写入操作,判断是否记录了IP地址,以此知道是否要写入数据库
  $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; //第一次写入,为后面刷新或后退的判断做个铺垫
  //...........//写入数据库操作
} else {//已经有第一次写入后的操作,也就不再写入数据库
  echo '请不要再次刷新和后退'; //写一些已经写入的提示或其它东西
}
?>

具体原理
session范围变量token来防止。
1. 开启session:
session_start();
2. 如果有表单提交

if (isset($token))

token以hidden的形式包含在form当中。

<input type="hidden" name="token" value="<?php echo $token; ?>" />

 

3. 如果是重复提交表单

if ($_SESSION["token"] != $token) { 
  // 不让重复提交,在此处理 
  // header("location:".$_SERVER['PHP_SELF']); 
} else { 
  // 正常的表单提交,在此处理 
  // echo "已提交";  
}

4. 设置token值
$token = mt_rand(0,1000000);
2$_SESSION['token'] = $token;

以上就是关于如何解决php表单重复提交实现方法,希望对大家的学习有所帮助。

PHP 相关文章推荐
PHP4中实现动态代理
Oct 09 PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 PHP
一个PHP分页类的代码
May 18 PHP
PHP-redis中文文档介绍
Feb 07 PHP
解析php二分法查找数组是否包含某一元素
May 23 PHP
yii上传文件或图片实例
Apr 01 PHP
PHP清除数组中所有字符串两端空格的方法
Oct 20 PHP
PHP写日志的实现方法
Nov 05 PHP
php根据生日计算年龄的方法
Jul 13 PHP
实例说明js脚本语言和php脚本语言的区别
Apr 04 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 11 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
Sep 29 #PHP
php猜单词游戏
Sep 29 #PHP
PHP代码优化技巧小结
Sep 29 #PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 #PHP
PHP类的封装与继承详解
Sep 29 #PHP
PHP比较运算符的详细介绍
Sep 29 #PHP
php提高网站效率的技巧
Sep 29 #PHP
You might like
6种php上传图片重命名的方法实例
2013/11/04 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
javascript preload&amp;lazy load
2010/05/13 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
js中精确计算加法和减法示例
2014/03/28 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
原生js二级联动效果
2017/06/20 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
[01:06:39]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第三局
2016/03/02 DOTA
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
python实现BackPropagation算法
2017/12/14 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
解决python3.6用cx_Oracle库连接Oracle的问题
2020/12/07 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
opencv实现图像几何变换
2021/03/24 Python
三年大学自我鉴定
2014/01/16 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
环境建议书
2015/02/04 职场文书
羊脂球读书笔记
2015/06/30 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
爱护公物主题班会
2015/08/17 职场文书