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 相关文章推荐
一个数据采集类
Feb 14 PHP
php url地址栏传中文乱码解决方法集合
Jun 25 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
php实现的mongodb操作类
May 28 PHP
PHP实现获取并生成数据库字典的方法
May 04 PHP
功能强大的PHP发邮件类
Aug 29 PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
Jul 10 PHP
php微信开发之关键词回复功能
Jun 13 PHP
PDO::query讲解
Jan 29 PHP
php实现推荐功能的简单实例
Sep 29 PHP
PHP架构及原理知识点详解
Dec 22 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中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
php页面缓存方法小结
2015/01/10 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
vue2.0学习之axios的封装与vuex介绍
2018/05/28 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
vue实现搜索功能
2019/05/28 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
python的sorted用法详解
2019/06/25 Python
简单分析python的类变量、实例变量
2019/08/23 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
python yield和Generator函数用法详解
2020/02/10 Python
Python json读写方式和字典相互转化
2020/04/18 Python
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
人事行政主管岗位职责
2013/12/22 职场文书
单位授权委托书范本
2014/09/26 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
教师读书活动心得体会
2016/01/14 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python
Python自动化测试PO模型封装过程详解
2021/06/22 Python
Python 数据可视化之Seaborn详解
2021/11/02 Python