微信开发之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的一个基础知识 表单提交
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 表单数据的获取代码
复制代码 代码如下: <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表单转换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 多个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 表单提交给自己
在大部分情况下我们指定另外一个来处理表单内容的URL地址给Action属性,但也有部分情况是需要将表单数据提交给自己的.这时候我们应该如何指定Action属性值呢?<?php if (isset($_POST['action']) && $_POST['action'] == 'submitted') { print '<pre>'; print_r($_POST); print '<a href="'. $_SERVER['PHP_SEL
-
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程序开发范例学习之表单 获取文本框的值
<form name="form" method="post" action="login.php"></form> 文本框的用法: <input type="text" name="username" /> 其中input类型包括text.password等类型,HTML5新增了很多的input类型,如果想学习这类的知识可以很好的了解一下,因为分的越细,用的越方便. 看
-
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"> <script language="javascript" src="form.js" src="form.js"&
-
php中一个完整表单处理实现代码
一个完整表单处理 下面我们将创建一个复杂的表单,代码如下所示. 复制代码 代码如下: <form action="someform.php" method="post"> <table width="541" border="0"> <tr> <td width="26%">姓名:</td> <td width="74%"
-
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
随机推荐
- Extjs中常用表单介绍与应用
- nasm实现的用vmware运行自做的linux启动盘的引导代码
- Struts2 自定义下拉框Tag标签
- 浅析ASP.NET生成随机密码函数
- SQL集合函数中case when then 使用技巧
- PHP递归遍历指定目录的文件并统计文件数量的方法
- php做下载文件的实现代码及文件名中乱码解决方法
- Android 屏幕实现上下翻转
- 原生javascript实现的ajax异步封装功能示例
- 微信开发 JS-SDK 6.0.2 经常遇到问题总结
- 初识NodeJS服务端开发入门(Express+MySQL)
- 查看Oracle中是否有锁表的sql
- sql not in 与not exists使用中的细微差别
- 基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
- ASP.NET jQuery 实例9 通过控件hyperlink实现返回顶部效果
- 深入Synchronized和java.util.concurrent.locks.Lock的区别详解
- 你必须知道的Javascript知识点之"深入理解作用域链"的介绍
- php 解析xml 的四种方法详细介绍
- C语言手把手教你实现贪吃蛇AI(下)
- 浅谈利用Session防止表单重复提交