微信开发之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 相关文章推荐
PHP.MVC的模板标签系统(二)
Sep 05 PHP
推荐文章系统(一)
Oct 09 PHP
用PHP实现多服务器共享SESSION数据的方法
Mar 16 PHP
PHP 采集程序 常用函数
Dec 18 PHP
PHP 简单日历实现代码
Oct 28 PHP
php遍历目录viewDir函数
Dec 15 PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 PHP
linux下安装php的memcached客户端
Aug 03 PHP
discuz目录文件资料汇总
Dec 30 PHP
php生成唯一的订单函数分享
Feb 02 PHP
AJAX的使用方法详解
Apr 29 PHP
php文件上传原理与实现方法详解
Dec 20 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
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
2012/03/26 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
Node.js中的事件驱动编程详解
2014/08/16 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
python读文件逐行处理的示例代码分享
2013/12/27 Python
Python程序设计入门(4)模块和包
2014/06/16 Python
Python contextlib模块使用示例
2015/02/18 Python
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
python 输出上个月的月末日期实例
2018/04/11 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
Python实现简单的列表冒泡排序和反转列表操作示例
2019/07/10 Python
python自动识别文本编码格式代码
2019/12/26 Python
Django在Model保存前记录日志实例
2020/05/14 Python
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
高一新生军训感言
2014/03/02 职场文书
环境建设实施方案
2014/03/14 职场文书
2014年关于两会精神的心得体会
2014/03/17 职场文书
鉴定评语大全
2014/05/05 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
Java数据结构之链表相关知识总结
2021/06/18 Java/Android