微信开发之php表单微信中自动提交两次问题解决办法
前言:
最近做微信开发,在微信中访问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 多个submit提交表单 处理方法
test.php 复制代码 代码如下: <?php $test = $_POST[ 'test ']; echo '12 '; echo $test; echo $_POST[ 'submit1 ']; echo $_POST[ 'submit2 ']; if (isset($_POST[ 'submit1 ']) && $_POST[ 'submit1 '] == 'submit1 ') { echo 'ok1 '; } if (isset($_POST[ 'submit2 '])
-
ThinkPHP 防止表单重复提交的方法
然而有一种情况,是防止不了的: 用户提交表单以后,点击浏览器后退按钮返回表单页面,这个时候浏览器会直接从缓存中取出页面,因此token验证一定是通不过的. 网上有许多种办法可以绕过这个问题,比如用location.replace()方法来替换当前历史记录,但是这样仍然有瑕疵.极端的情况,若用户在页面间切换多次,那么多点几次后退按钮很可能又回到了上一个表单页面. 解决办法是在http头中设置Cache-Control: no-cache, no-store.然而我尝试了无论是在页面head中添加
-
php中一个完整表单处理实现代码
一个完整表单处理 下面我们将创建一个复杂的表单,代码如下所示. 复制代码 代码如下: <form action="someform.php" method="post"> <table width="541" border="0"> <tr> <td width="26%">姓名:</td> <td width="74%"
-
php 表单数据的获取代码
复制代码 代码如下: <html> <head> <title>Form</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <form action="post.php" method="get" name
-
php 表单验证实现代码
复制代码 代码如下: <html> <head> <title>Form</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <script language="javascript" src="form.js" src="form.js"&
-
PHP form 表单传参明细研究
为什么呢?因为表单的处理有GET和POST两种,怎么在这两种表单中都要传递一直do参数,而且要在后台通过同样的方式获取就一直是个很困惑的问题,今天经过几个小时的实验终于搞懂了,特发此文. GET表单: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
-
php不允许用户提交空表单(php空值判断)
可以修改代码,添加些判断: 复制代码 代码如下: if(empty($_POST['name'])){ echo "俗话说的好,雁过留声人过留名<br />"; } elseif(empty($_POST['comment'])){ echo "矮油,多说几句吧~"; } else{ $sql = "INSERT INTO myblog_comments(blog_id, dateposted, name, comment) VALUES
-
PHP程序开发范例学习之表单 获取文本框的值
<form name="form" method="post" action="login.php"></form> 文本框的用法: <input type="text" name="username" /> 其中input类型包括text.password等类型,HTML5新增了很多的input类型,如果想学习这类的知识可以很好的了解一下,因为分的越细,用的越方便. 看
-
php表单转换textarea换行符的方法
下面是我对这个问题的解决过程,最后算是完全搞懂了,真是阴沟里险些翻船 1.必须知道textarea中的换行符是 \n (个人检测发现按回车键是\n,好像在linux下是\r\n) 2.用nl2br之前,请仔细看好手册解释,我就是搞郁闷了,一般都理解为将\n转换成<br >,其实不是的: 看php手册解释: nl2br – Inserts HTML line breaks before all newlines in a string Returns string with '<br
-
PHP的一个基础知识 表单提交
register.php: 复制代码 代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=gb2312"> <title>注册页面</title> </head> <body> <form action="request.php" method=&quo
-
PHP获取表单textarea数据中的换行问题
测试页面代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-e
-
PHP 表单提交给自己
在大部分情况下我们指定另外一个来处理表单内容的URL地址给Action属性,但也有部分情况是需要将表单数据提交给自己的.这时候我们应该如何指定Action属性值呢?<?php if (isset($_POST['action']) && $_POST['action'] == 'submitted') { print '<pre>'; print_r($_POST); print '<a href="'. $_SERVER['PHP_SEL
随机推荐
- AngularJS中$http使用的简单介绍
- VBS正则表达式对象的MultiLine属性
- Java源码解析Integer方法解读
- php判断输入不超过mysql的varchar字段的长度范围
- Nginx下让WordPress支持固定链接的伪静态规则
- 详细讲述MySQL中的子查询操作
- android将图片转换存到数据库再从数据库读取转换成图片实现代码
- 原生JS分页展示效果(点击分页看效果)
- Python中的time模块与datetime模块用法总结
- MVC遇上bootstrap后的ajax表单验证
- 网站解决和优化Server is too busy的一些方法
- CentOS上安装Jenkins的方法
- 弹出自适应图片大小的窗口弹出窗口根据图片大小,自动判断高和宽。
- js时间戳和c#时间戳互转方法(推荐)
- 详细解读Java编程中面向字符的输入流
- SpringBoot文件上传控制及Java 获取和判断文件头信息
- js实现动态改变radio状态的方法
- 利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
- python生成多个只含0,1元素的随机数组或列表的实例
- springboot基于Mybatis mysql实现读写分离
