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

作者:无名 - PHP编程 -

前言:

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

问题原因

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

解决方法

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

代码示例:

表单部分

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

    <p 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; ?>">
    </p>

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

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

处理表单提交

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

  //continue....
}

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

该篇内容就是由IT人知识库(原文链接:http://www.itpeo.net/12740/479641.html)小编为各位整理





微信 getAccessToken方法详解及实例

memcache缓存存储用户信息7000秒 <?php function getAccessToken... ...

PHP 闭包详解及实例代码

闭包和匿名函数在PHP5.3.0中引入的。 闭包是指:创建时封装周围状态的函数。即使闭包所处的环境不存在了,闭包中封装... ...

JavaScript与HTML结合的基本使用方法整理

JavaScript:写入 HTML 输出 实例 document.write("<h1>This i... ...

mac下安装nginx和php

一、前话:1.1、环境选择:重新在mac上配置php,原本mac上就自带有apach、php以及pgsql,如果图简单的... ...

rfedfre

jQuery EasyUI API 中文文档 - DateBox日期框

扩展自 $.fn.combo.defaults。用 $.fn.datebox.defaults 重写了 defaults... ...

js下函数般调用正则的方法附代码

曾经 ECMAScript 4 建议指出这个功能将会增加到 ES4 规... ...

解决控件遮挡问题:关于有窗口元素和无窗口元素

不知道朋友们有没有碰到过控件的遮挡问题,最典型的就是DropdownList和ActiveX的遮挡,HTML的z-ind... ...

常用表单验证类,有了这个,一般的验证就都齐了。

代码如下:<php   /**    * 页面作用:... ...

玩转图像函数库—常见图形操作

我尽量不说大理论,诸如什么是png,自己查解决. PHP自4.3版本开始,捆绑了自己的GD2库,用户可以自己下载并设置.... ...

转换中文为unicode 转换unicode到正常文本

代码如下:'//转换中文为unicode function URLEncoding(vstrIn) &nbs... ...

php pdo操作数据库示例

POD扩展是在PHP5中加入,该扩展提供PHP内置类 PDO来对数据库进行访问,不同数据库使用相同的方法名,解决数据库连... ...

PHP 无限级分类

有一段时间没用过无限极分类,不巧今天又用到,所以特地去翻箱回顾以前。为了避免以后找起来麻烦,特地贴在这里。 <... ...

详解PHP中的 input属性(隐藏 只读 限制)

隐藏 <input type="hidden"> 只读 <input type="text" r... ...

rfedfre

php连接MSsql server的五种方法总结

参考php手册,对php连接sql server系列做出个小结。主要有五种方式: 一、通过mssql_系列函数 mssq... ...

rfedfre

php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)

现在好多网站使用的验证码非常容易被软件自动识别到,本文介绍了一种PHP生成复杂验证码加入倾斜,弦干扰线,黏贴,旋转等效果... ...

rfedfre

php array_map()数组函数使用说明

/*函数array_map()函数:多数组回调函数---将回调函数作用到给定数组的单元上 * 1、语法:array a... ...

php 利用array_slice函数获取随机数组或前几条数据

先给大家说下基本语法:array_slice ( array $array , int $offset [, int $... ...

PHP中strlen()和mb_strlen()的区别浅析

在php中常见的计算字符串长度的函数有:strlen和mb_strlen.当字符全是英文字符的时候,两者是一样。这里主要... ...

rfedfre

php中preg_replace正则替换用法分析

本文实例讲述了php中preg_replace正则替换用法。分享给大家供大家参考,具体如下:1.php 的 preg_r... ...

php PATH_SEPARATOR判断当前服务器系统类型实例

php中有一个非常有用的预定义常量PATH_SEPARATOR,我们可以通过该常量来判断当前服务器是linux还是Win... ...