解决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 相关文章推荐
E路文章系统PHP
Dec 11 PHP
PHP音乐采集(部分代码)
Feb 14 PHP
php session 预定义数组
Mar 16 PHP
php添加文章时生成静态HTML文章的实现代码
Feb 17 PHP
谈谈关于php的优点与缺点
Apr 11 PHP
深入php var_dump()函数的详解
Jun 05 PHP
php计算程序运行时间的简单例子分享
May 10 PHP
Yii实现多按钮保存与提交的方法
Dec 03 PHP
php+ajax实现无刷新的新闻留言系统
Dec 21 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
Laravel实现ORM带条件搜索分页
Oct 24 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_multisort与uasort的区别
2011/03/24 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
php修改数组键名的方法示例
2017/04/15 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
详解JavaScript函数
2015/12/01 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
JS实现环形进度条(从0到100%)效果
2016/07/05 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
OpenLayers3实现地图显示功能
2020/09/25 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
教你学会使用Python正则表达式
2017/09/07 Python
浅析python协程相关概念
2018/01/20 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
AURALog面试题软件测试方面
2013/10/22 面试题
快递业务员岗位职责
2014/01/06 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
协议书怎么写
2014/04/21 职场文书
经济信息系毕业生自荐信
2014/06/02 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
详解NodeJS模块化
2021/06/15 NodeJs
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle