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 相关文章推荐
文章推荐系统(二)
Oct 09 PHP
一个用于网络的工具函数库
Oct 09 PHP
PHP生成静态页面详解
Dec 05 PHP
IIS环境下快速安装、配置和调试PHP5.2.0
Dec 17 PHP
php SQL Injection with MySQL
Feb 27 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
Web程序工作原理详解
Dec 25 PHP
php中异常处理方法小结
Jan 09 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
May 13 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
php弹出提示框的是实例写法
Sep 26 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 array_key_exists检查键名或索引是否存在于数组中的实现方法
2016/06/13 PHP
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
js实现一键复制功能
2017/03/16 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
Vue2.0父子组件传递函数的教程详解
2017/10/16 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
细说webpack6 Babel的使用详解
2019/09/26 Javascript
原生JS实现萤火虫效果
2020/03/07 Javascript
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
Python分析学校四六级过关情况
2017/11/22 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
Apache部署Django项目图文详解
2019/07/30 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
高中运动会广播稿
2014/09/16 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
vue-element-admin项目导入和导出的实现
2021/05/21 Vue.js
Golang并发操作中常见的读写锁详析
2021/08/30 Golang
JS封装cavans多种滤镜组件
2022/02/15 Javascript