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
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
PHP垃圾回收机制引用计数器概念分析
Jun 24 PHP
显示程序执行时间php函数代码
Aug 29 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
Oct 29 PHP
php中AES加密解密的例子小结
Feb 18 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
Sep 23 PHP
PHP中判断文件存在使用is_file还是file_exists?
Apr 03 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
laravel 获取当前url的别名方法
Oct 11 PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 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
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
PHP 透明水印生成代码
2012/08/27 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
PHP实现验证码校验功能
2017/11/16 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
理解JavaScript表单的基础知识
2016/01/25 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
使用jquery Ajax实现上传附件功能
2018/10/23 jQuery
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
Pyspark读取parquet数据过程解析
2020/03/27 Python
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
九年级历史教学反思
2014/01/27 职场文书
教师绩效工资方案
2014/02/01 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
公司员工活动策划方案
2014/08/20 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
小学运动会通讯稿
2015/07/18 职场文书
婚礼父母致辞
2015/07/28 职场文书
Python实现学生管理系统并生成exe可执行文件详解流程
2022/01/22 Python