PHP+Session防止表单重复提交的解决方法


Posted in PHP onApril 09, 2018

 index.php

当前表单页面is_submit设为0

SESSION_START(); 
$_SESSION['is_submit'] = 0;
<form id="reg" action="post.php" method="post"> 
  <p>用户名:<input type="text" class="input" name="username" id="user"></p> 
  <p>密   码:<input type="password" class="input" name="password" id="pass"></p> 
  <p>E-mail:<input type="text" class="input" name="email" id="email"></p> 
  <p><input type="submit" name="submit" class="btn" value="提交注册"/></p> 
</form>

 post.php

若是提交表单了,设当前'is_submit为1,若是刷新post.php,那么将执行else代码

SESSION_START(); 
if (isset($_POST['submit'])) { 
  if ($_SESSION['is_submit'] == '0') { 
    $_SESSION['is_submit'] = '1'; 
    echo "代码块,要做的事,代码...<a onclick='history.go(-1);' href='javascript:void(0)'>返回</a>"; 
  } else { 
    echo "请不用重复提交<a href='index.php'>PHP+SESSION防止表单重复提交</a>"; 
  } 
}

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

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

例1 代码如下

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

例1

 代码如下

<?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);
$_SESSION['token'] = $token;

总结

以上所述是小编给大家介绍的PHP+Session防止表单重复提交的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
对Session和Cookie的区分与解释
Mar 16 PHP
深入理解PHP中的Streams工具
Jul 03 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
PHP基于curl后台远程登录正方教务系统的方法
Oct 14 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
php中照片旋转 (orientation) 问题的正确处理
Feb 16 PHP
Laravel如何友好的修改.env配置文件详解
Jun 07 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
详解如何实现Laravel的服务容器的方法示例
Apr 15 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
Oct 22 PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 PHP
php去除数组中为0的元素的实例分析
Nov 17 PHP
PHP创建自己的Composer包方法
Apr 09 #PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 #PHP
PHP实现的获取文件mimes类型工具类示例
Apr 08 #PHP
PHP面向对象之里氏替换原则简单示例
Apr 08 #PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
Apr 08 #PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 #PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 #PHP
You might like
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
使用JQUERY Tabs插件宿主IFRAMES
2010/01/01 Javascript
JavaScript 注册事件代码
2011/01/27 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
如何利用Python写个坦克大战
2020/11/18 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
安全事故检讨书
2014/01/18 职场文书
市场营销管理制度
2014/01/29 职场文书
总经理的岗位职责
2014/02/23 职场文书
低碳生活倡议书
2014/04/14 职场文书
升职演讲稿范文
2014/05/23 职场文书
三好生演讲稿
2014/09/12 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
采购员岗位职责
2015/02/03 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
2016新年致辞
2015/08/01 职场文书
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers