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


Posted in PHP onJanuary 08, 2017

前言:

最近做微信开发,在微信中访问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....
}

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

PHP 相关文章推荐
phpwind中的数据库操作类
Jan 02 PHP
解析Linux下Varnish缓存的配置优化
Jun 20 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
Jul 23 PHP
php+xml结合Ajax实现点赞功能完整实例
Jan 30 PHP
浅析Yii2 GridView实现下拉搜索教程
Apr 22 PHP
[原创]php实现子字符串位置相互对调互换的方法
Jun 02 PHP
CI框架表单验证实例详解
Nov 21 PHP
如何离线执行php任务
Feb 21 PHP
php获取文章内容第一张图片的方法示例
Jul 03 PHP
Yii框架日志操作图文与实例详解
Sep 09 PHP
在TP5数据库中四个字段实现无限分类的示例
Oct 18 PHP
PHP获取类私有属性的3种方法
Sep 10 PHP
yii2-GridView在开发中常用的功能及技巧总结
Jan 07 #PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 #PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 #PHP
Yii框架表单提交验证功能分析
Jan 07 #PHP
Yii框架弹出框功能示例
Jan 07 #PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 #PHP
PHP验证码类ValidateCode解析
Jan 07 #PHP
You might like
用header 发送cookie的php代码
2007/03/16 PHP
PHP+MySQL 制作简单的留言本
2009/11/02 PHP
PHP间隔一段时间执行代码的方法
2014/12/02 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
JavaScript 事件记录使用说明
2009/10/20 Javascript
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
js 实现菜单左右滚动显示示例介绍
2013/11/21 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
angularjs封装$http为factory的方法
2017/05/18 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
python正则表达式抓取成语网站
2013/11/20 Python
python学习手册中的python多态示例代码
2014/01/21 Python
使用优化器来提升Python程序的执行效率的教程
2015/04/02 Python
Python中模块string.py详解
2017/03/12 Python
python合并同类型excel表格的方法
2018/04/01 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
Python跳出多重循环的方法示例
2019/07/03 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
介绍一下sql server的安全性
2014/08/10 面试题
Java servlet面试题
2012/03/04 面试题
校园餐饮创业计划书
2014/01/10 职场文书
生产部岗位职责范文
2014/02/07 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
岗位聘任书范文
2014/03/29 职场文书
办公室文员岗位职责
2015/02/04 职场文书