前言:
最近做微信开发,在微信中访问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