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 相关文章推荐
Smarty模板快速入门
Jan 04 PHP
php公用函数列表[正则]
Feb 22 PHP
php学习之 认清变量的作用范围
Jan 26 PHP
php设计模式 Decorator(装饰模式)
Jun 26 PHP
php数组键名技巧小结
Feb 17 PHP
PHP制作用户注册系统
Oct 23 PHP
PHP实现的一致性哈希算法完整实例
Nov 14 PHP
Zend Framework教程之Bootstrap类用法概述
Mar 14 PHP
PHP模拟http请求的方法详解
Nov 09 PHP
PHP实现Session入库/存入redis的方法
May 04 PHP
php使用scandir()函数扫描指定目录下所有文件示例
Jun 08 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
Jan 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实现文件上传二法
2006/10/09 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
详解javascript void(0)
2020/07/13 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
python求列表交集的方法汇总
2014/11/10 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
2017/07/22 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
python3 读取Excel表格中的数据
2018/10/16 Python
详解Python的循环结构知识点
2019/05/20 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
python3中celery异步框架简单使用+守护进程方式启动
2021/01/20 Python
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
美国购买隐形眼镜网站:Lenses For Less
2020/07/05 全球购物
企业文化建设实施方案
2014/03/22 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
房屋买卖委托书格式范本格式
2014/10/13 职场文书
工作失误检讨书范文
2015/01/26 职场文书
2015大学迎新标语
2015/07/16 职场文书
环保主题班会教案
2015/08/13 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
接收函
2019/04/22 职场文书