解决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 相关文章推荐
PHP+javascript模拟Matrix画面
Oct 09 PHP
mysql limit查询优化分析
Nov 12 PHP
一步一步学习PHP(6) 面向对象
Feb 16 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
彻底删除thinkphp3.1案例blog标签的方法
Dec 05 PHP
php实现的xml操作类
Jan 15 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
Nov 05 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
Mar 12 PHP
php实现单笔转账到支付宝功能
Oct 09 PHP
php和html的区别点详细总结
Sep 24 PHP
php 使用 __call实现重载功能示例
Nov 18 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
php array_walk() 数组函数
2011/07/12 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
php实现的递归提成方案实例
2015/11/14 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
2020/08/06 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
浅谈python中的占位符
2017/11/09 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
如何基于python生成list的所有的子集
2019/11/11 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
django 取消csrf限制的实例
2020/03/13 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
入党思想汇报
2014/01/05 职场文书
产品开发计划书
2014/04/27 职场文书
校园广播稿100字
2014/10/06 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
云冈石窟导游词
2015/02/04 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
Pygame如何使用精灵和碰撞检测
2021/11/17 Python
Python可视化神器pyecharts绘制水球图
2022/07/07 Python