• 河南网站建设-郑州网站设计-郑州网站建设-手机建站-郑州建站-上海建站

  • 专注网站建设 服务热线: 13061801310

当前位置:好东东网 > 近期动态 > 技术分享 > 正文

php表单微信中自动提交两次问题

发布时间:2017-05-22 | 发布者: 东东工作室 | 浏览次数:

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

问题原因

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

解决方法

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

代码示例:

表单部分

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

        <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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

处理表单提交

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

    //continue....
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
 
提交成功后跳转上两页
echo "<script language='JavaScript'>alert('此专家今日挂号已满,请另选时间');location.href=".$lyurl.";</script>";
注意:微信页面提交一定要用GEt传值

转载请标注:东东工作室——php表单微信中自动提交两次问题