夺命雷公狗---微信开发52----网页授权(oauth2.0)获取用户基本信息接口(2)

时间:2022-11-30 10:24:32

我们在上一节课已经发送code给第三方了,那么这就要获取code去换取到用户的openid。

第一步:编写create_baseurl.php(上一节课程已经写完了)

第二步:编写vote1.php(上一节课已经谢了一大部分,现在我们来完成他)

<?php
require_once "common.php";
//获取code
$code = $_GET['code'];
//公众号的appid
$appid = "wxed89d8f74fa6fc51";
//公众号的appsecret
$appsecret = 'd4624c36b6795d1d99dcf0547af5443d';
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appid}&secret={$appsecret}&code={$code}&grant_type=authorization_code"; //发出请求
$res = http_request($url,null);
//json解码
$res = json_decode($res);
//获取openid
$openid = $res -> openid; ?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>你最喜欢那个类型的女人</title>
<meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<link href="./jquery.mobile-1.0.min.css" rel="stylesheet" type="text/css">
<script src="./jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="./jquery.mobile-1.0.min.js" type="text/javascript"></script>
</head>
<body>
<div data-role="page" id="page3">
<div data-role="header">
<h1>你最喜欢那个类型的女人</h1>
</div>
<div data-role="content">
<form action="vote2.php" method="post" data-ajax="false" >
<div data-role="fieldcontain">
<fieldset data-role="controlgroup">
<legend>你最喜欢那个类型的女人</legend>
<input type="radio" name="radio1" id="radio1_0" value="温柔" />
<label for="radio1_0">温柔</label>
<input type="radio" name="radio1" id="radio1_1" value="开朗" />
<label for="radio1_1">开朗</label>
<input type="radio" name="radio1" id="radio1_2" value="拨辣" />
<label for="radio1_2">拨辣</label>
<input type="radio" name="radio1" id="radio1_3" value="文静" />
<label for="radio1_3">文静</label>
</fieldset>
</div>
<!--增加一个隐藏域,表示是那个用户提交的-->
<input type="hidden" name="openid" value="<?php echo $openid; ?>">
<div class="ui-block-a">
<button type="submit" data-role="button" >点击提交</button>
</div>
</div>
</div>
</form>
</body>
</html>

第三步:编写vote2.php,主要用来处理用户提交的选择结果,并入库,比如我们这里面的“喜欢那个类型的女人”

我们先来创建一张表,表名叫“lp_code”如下所示:

夺命雷公狗---微信开发52----网页授权(oauth2.0)获取用户基本信息接口(2)

然后我们创建一个vote2.php的文件,代码如下所示:

 <?php
$openid = $_POST['openid'];
$item = $_POST['radio1'];
//因为取来的值后面自动加了一个 ' 所以要用substr去掉最后一个 '
$openid = substr($openid,0,strlen($openid)-1); $connect = mysql_connect('localhost','root','root') or die('数据库链接失败');
mysql_select_db('wxdb',$connect);
mysql_query('set names utf8');
$sql = "select openid from lp_code where openid='{$openid}'";
$res = mysql_query($sql);
//$response主要用来做提示用的
$response = '';
//这里主要作用是判断一下如果投过票的就不让他再投了
if($row = mysql_fetch_assoc($res)){
$response = "您已选择过噢,本轮活动只能选择一次";
}else{
$sql = "insert into lp_code (id,openid,item) values(NULL,'{$openid}','{$item}')";
mysql_query($sql);
$response = "恭喜您,您已经选择成功";
} //同分组的形式统计一下各个水果投票的次数
$sql = "select item, count(*) as counts from lp_code group by item";
$res = mysql_query($sql); ?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>数据采集系统</title>
<meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0, maximum-scale=1.0,user-scalable=no;">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<link href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" rel="stylesheet" type="text/css">
<script src="http://code.jquery.com/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js" type="text/javascript"></script>
</head>
<body>
<div data-role="page" id="page3">
<div data-role="header">
<h1>水果投票情况一览</h1>
</div>
<div data-role="content">
<ul data-role="listview">
<?php
//这里遍历出来大家选择了什么,选了几遍
while($row = mysql_fetch_assoc($res){ ?>
<li>
喜欢<?php echo $row['item']; ?>
<span class="ui-li-count"><?php echo $row['counts']; ?></span>
</li>
<?php } ?>
<li><font color='red'><?php echo $response; ?></font></li>
</ul>
</div>
</div>
</body>
</html>

然后反问上一节课里面的create_baseurl.php进行发送地址,当然如果在正常的情况下,

我们都是通过以图文之类的形式发送的,如果直接推送的是一条链接,谁都不敢点嘛,嘻嘻

然后在手机端里点击该链接进行投票即可

温馨提示:

夺命雷公狗---微信开发52----网页授权(oauth2.0)获取用户基本信息接口(2)

code这里返回的access_token和基础接口里获取到的access_token是不一样的