前言:
最近做微信开发,在微信中访问PHP页面,页面中有个表单。测试发现偶尔会出现表单被自动提交两次的情况,导致流程出错。
问题原因
暂时未找到原因,不过怀疑跟微信本身的机制有关。
解决方法
用session,每次提交表单时,计算一个随机数post出去。页面处理表单提交时,先判断是否有这个session,如果不存在就保存,存在就和post过来的随机数比较,如果相等表示重复提交。
代码示例:
表单部分
php" id="highlighter_827062">
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<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> |
处理表单提交
1
2
3
4
5
6
7
8
9
10
11
12
13
|
if (isset( $_POST [ 'confirm' ])) { //解决重复调用两次的问题 if ( $_POST [ 'code' ] == $_SESSION [ 'code' ]) { exit ; } else { $_SESSION [ 'code' ] = $_POST [ 'code' ]; } //continue.... } |
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://blog.csdn.net/pony_maggie/article/details/52848982