标签分类
技术文章
当前位置:主页 > 计算机编程 > php > 微信开发之php表单微信中自动提交两次问题解决办法

php表单微信中自动提交两次问题的解决办法

  • 发布时间:
  • 作者:码农之家原创
  • 点击:101

微信开发之php表单微信中自动提交两次问题解决办法

这篇文章主要知识点是关于php表单微信中自动提交两次问题解决办法,php微信中自动提交,微信开发php表单自动提交两次,微信开发之php表单微信中自动提交两次问题解决办法,的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

PHP7从入门到精通:教学版
  • 类型:PHP7大小:426 MB格式:PDF出版:清华大学出版社作者:刘增杰、张工厂
立即下载

更多相关的学习资源可以参阅 程序设计电子书PHP电子书、等栏目。

前言:

最近做微信开发,在微信中访问PHP页面,页面中有个表单。测试发现偶尔会出现表单被自动提交两次的情况,导致流程出错。

问题原因

暂时未找到原因,不过怀疑跟微信本身的机制有关。

解决方法

用session,每次提交表单时,计算一个随机数post出去。页面处理表单提交时,先判断是否有这个session,如果不存在就保存,存在就和post过来的随机数比较,如果相等表示重复提交。

代码示例:

表单部分

<div class="odform">
  <form action="#" method="post">

    <div class="input-group">
      <label for="amount_id">金额</label>
      <input type="text" name="amount" id="amount_id"
          placeholder="单位是元,精确到分,如:12.66" pattern="^([1-9]+(\.[0-9]{2})?|0\.[1-9][0-9]|0\.0[1-9])$">
      <input type="hidden" name="code" value="<?php $code = mt_rand(0, 100000); echo $code; ?>">
    </div>

    <div class="input-group">
      <span id="available">当前余额:<?php echo $amount_available; ?>元</span>
    </div>

    <button name="confirm">确认</button>
  </form>
</div>

处理表单提交

if(isset($_POST['confirm'])) {
  //解决重复调用两次的问题
  if ($_POST['code'] == $_SESSION['code'])
  {
    exit;
  }
  else
  {
    $_SESSION['code'] = $_POST['code'];
  }

  //continue....
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到spring+springmvc+mybatis整合注、 详解vue axios封装请求状态、 vue项目中使用md5加密以及、 等php文章进一步学习,感谢大家的阅读和支持。

上一篇:laravel实现简单用户权限的代码分析

下一篇:php获取客户端IP及URL的实例方法

展开 +

收起 -

学习笔记
网友NO.285504

php防止表单重复提交实例讲解

说来惭愧,前几天做项目的时候,出现个低级错误。在公司后台做表单提交,一是自己员工用,二是 html 自己来写的,没有验证表单重复提交,结果出错了。写出来记录下以便提醒自己,时刻不能疏忽。 解决方法 其实方法有很多种,只举例几个简单的来说说。 框架 很多框架都有防止重复提交的功能,大家应该都有了解,这里不再赘述。 前端 原理很简单,用户点击提交之后,使用 JS 将提交按钮置灰即可。 后端 也就是使用 PHP 进行验证,当然不局限以下几种 Cookie 用户提交表单到后端,在 Cookie 中做标记,指定时间内重复提交无效。但是用户禁用 Cookie 这个方法就失效了。 ?php if (isset($_COOKIE['formFlag'])) { exit('error');} // 处理数据 // 30秒内重复提交无效setcookie('formFlag', time(), time() + 30); Session 展示表单页面的时候,生成随机数,同时存储在 Session 中以及表单隐藏域中。第一次提交的时候,对比成功删除 Session 中的值。 ?php if (!isset($_SESSION['formFlag']) || $_POST['formFlag'] != $_SESSION['formFlag']) { exit('error');} // 处理数据 unset($_SESSION['formFlag']); 上面就是本次介绍PHP防止重复提交表单的全部内容,感谢大家对码农之家的支持。 ……

网友NO.821499

提交表单后 PHP获取提交内容的实现方法

问题: 网页上提交表单之后,PHP为什么不能获取提交的内容?然而在老版本的PHP上运行却正常。 新版的PHP已经废弃了原来的表单内容处理方式,即不再把提交的表单的内容直接复制到一个同名变量中。 解决办法有四个: 1. 修改php.ini,查找 register_globals,将其值修改为 On。这样就可以像原来一样,例如,提交的表单中包括一个名为"username"的变量,那么在php中就可以直接使用$username来访问该变量。但是,除非你要使用一段旧的代码而考虑到兼容性问题,否则不建议使用该方法。 2. 使用 $HTTP_GET_VARS、$HTTP_POST_VARS数组来访问,例如写成$HTTP_POST_VARS["username"]的形式。不过该方法也不建议采用。 3. (推荐)使用 $_POST、$_GET等数组来访问,例如写成 $_POST["username"]的形式。建议采用这种方法。 (推荐)使用 import_request_variables 函数。该函数将提交内容导入到变量中。 例如 import_request_variables("gp", "rvar_");第一个参数可以选择g,p,c,分别表示导入 GET,POST,COOKIE 变量;第二个参数为导入后的变量前缀。执行上面的语句后即可使用 $rvar_username 来访问提交的 username 变量。使用import_request_variables("gp", "");可以兼容以前的PHP程序。 PHP $_GET 和 $_POST变量是用来获取表单中的信息的,比如用户输入的信息。 PHP表单操作 在我们处理HTML表单和PHP表单时,我们要……

网友NO.527340

php表单加入Token防止重复提交的方法分析

本文实例讲述了php表单加入Token防止重复提交的方法。分享给大家供大家参考,具体如下: Token浅谈 Token,就是令牌,最大的特点就是随机性,不可预测。一般黑客或软件无法猜测出来。 那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方——防止表单重复提交、anti csrf攻击(跨站点请求伪造)。 两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会生成一个随机数Token,并且将Token放置到session当中,然后将Token发给客户端(一般通过构造hidden表单)。下次客户端提交请求时,Token会随着表单一起提交到服务器端。 然后,如果应用于“anti csrf攻击”,则服务器端会对Token值进行验证,判断是否和session中的Token值相等,若相等,则可以证明请求有效,不是伪造的。 不过,如果应用于“防止表单重复提交”,服务器端第一次验证相同过后,会将涩session中的Token值更新下,若用户重复提交,第二次的验证判断将失败,因为用户提交的表单中的Token没变,但服务器端session中Token已经改变了。 上面的session应用相对安全,但也叫繁琐,同时当多页面多请求时,必须采用多Token同时生成的方法,这样占用更多资源,执行效率会降低。因此,也可用cookie存储验证信息的方法来代替session Token。比如,应对“……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明