微信开发之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 相关文章推荐
一个图形显示IP的PHP程序代码
Oct 19 PHP
PHP读取目录下所有文件的代码
Jan 07 PHP
基于OpenCV的PHP图像人脸识别技术
Oct 11 PHP
php源代码安装常见错误与解决办法分享
May 28 PHP
php实现建立多层级目录的方法
Jul 19 PHP
PHP实现远程下载文件到本地
May 17 PHP
浅谈PHP中output_buffering
Jul 13 PHP
php中引用符号(&amp;)的使用详细介绍
Dec 06 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
Dec 24 PHP
php使用正则表达式获取字符串中的URL
Dec 29 PHP
PHP微信发送推送消息乱码的解决方法
Feb 28 PHP
laravel框架如何设置公共头和公共尾
Oct 22 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
PHP实现把数字ID转字母ID
2013/08/12 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
Google 静态地图API实现代码
2010/11/19 Javascript
jQuery操作select的实例代码
2012/06/14 Javascript
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
node.js中的fs.mkdir方法使用说明
2014/12/17 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
微信小程序中的上拉、下拉菜单功能
2020/03/13 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
Python中set与frozenset方法和区别详解
2016/05/23 Python
python实现梯度下降算法
2020/03/24 Python
Django web框架使用url path name详解
2019/04/29 Python
详解numpy的argmax的具体使用
2019/05/27 Python
Python+Selenium使用Page Object实现页面自动化测试
2019/07/14 Python
推荐8款常用的Python GUI图形界面开发框架
2020/02/23 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
网络工程师个人的自我评价范文
2013/10/01 职场文书
一夜的工作教学反思
2014/02/08 职场文书
个人求职自荐信范文
2014/06/20 职场文书
大学生学期个人总结
2015/02/12 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python