微信开发之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 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 多个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 '])
-
PHP程序开发范例学习之表单 获取文本框的值
<form name="form" method="post" action="login.php"></form> 文本框的用法: <input type="text" name="username" /> 其中input类型包括text.password等类型,HTML5新增了很多的input类型,如果想学习这类的知识可以很好的了解一下,因为分的越细,用的越方便. 看
-
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不允许用户提交空表单(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 表单数据的获取代码
复制代码 代码如下: <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 表单提交给自己
在大部分情况下我们指定另外一个来处理表单内容的URL地址给Action属性,但也有部分情况是需要将表单数据提交给自己的.这时候我们应该如何指定Action属性值呢?<?php if (isset($_POST['action']) && $_POST['action'] == 'submitted') { print '<pre>'; print_r($_POST); print '<a href="'. $_SERVER['PHP_SEL
-
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中一个完整表单处理实现代码
一个完整表单处理 下面我们将创建一个复杂的表单,代码如下所示. 复制代码 代码如下: <form action="someform.php" method="post"> <table width="541" border="0"> <tr> <td width="26%">姓名:</td> <td width="74%"
-
ThinkPHP 防止表单重复提交的方法
然而有一种情况,是防止不了的: 用户提交表单以后,点击浏览器后退按钮返回表单页面,这个时候浏览器会直接从缓存中取出页面,因此token验证一定是通不过的. 网上有许多种办法可以绕过这个问题,比如用location.replace()方法来替换当前历史记录,但是这样仍然有瑕疵.极端的情况,若用户在页面间切换多次,那么多点几次后退按钮很可能又回到了上一个表单页面. 解决办法是在http头中设置Cache-Control: no-cache, no-store.然而我尝试了无论是在页面head中添加
-
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换行符的方法
下面是我对这个问题的解决过程,最后算是完全搞懂了,真是阴沟里险些翻船 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
随机推荐
- 小议Javascript中的this指针
- Windows XP系统最强的启动提速技巧
- java在网页上面抓取邮件地址的方法
- php运行报错Call to undefined function curl_init()的最新解决方法
- php smarty模板引擎的6个小技巧
- python 默认参数问题的陷阱
- c++中typename和class的区别介绍
- js 获取中文拼音,Select自动匹配字母获取值的代码
- js事件委托和事件代理案例分享
- 复习一下sql server的差异备份
- jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
- jQuery轮播图效果精简版完整示例
- jQuery UI Dialog控件中的表单无法正常提交的解决方法
- Jquery实现瀑布流布局(备有详细注释)
- js中document.write的那点事
- 仿Discuz!的论坛评分发帖弹出提示并渐渐消失的效果
- php文件管理基本功能简单操作
- Android轻松画出触摸轨迹
- Maven工程搭建spring boot+spring mvc+JPA的示例
- 基于python 二维数组及画图的实例详解