我们在上一节课已经发送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”如下所示:

然后我们创建一个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进行发送地址,当然如果在正常的情况下,

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

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

温馨提示:

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

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

  1. C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一)

    咨询 请加 QQ::QQ群: 在微信里面,非认证的公众号账号,只能通过在微信回复菜单单击等事件获取openid,但是认证的公众账号(之前认证的订阅号是不可以的,现在新开放了政府媒体机构的认证订阅号)可 ...

  2. C#微信公众号开发-高级接口-之网页授权oauth2.0获取用户基本信息(二)

    C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一) 中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法 ...

  3. C#微信公众号开发--网页授权(oauth2.0)获取用户基本信息二

    前言 这一篇实现snsapi_userinfo,写这篇时其实我是有疑惑的,因为我并没有调试成功,但是我反复检查程序和思路是没有问题的,因为我使用的测试公众号,群里一个伙计说他之前调试时用的也是测试公众 ...

  4. C#微信公众号开发--网页授权(oauth2.0)获取用户基本信息一

    前言 微信网页授权共分为两种方式:snsapi_base.snsapi_userinfo. snsapi_base需要关注公众号,获取用户信息时不弹出用户授权界面. snsapi_userinfo是在 ...

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

    如果用户在微信客户端访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,从而实现业务逻辑. 一般我们用来“数据采集”,“市场调查”,“投票”,只要授权了第三方网页,微信用户无需注册就可 ...

  6. 夺命雷公狗---微信开发53----网页授权(oauth2.0)获取用户基本信息接口(3)实现世界留言版

    前面两节课我们讲的是base型的授权了,那么现在我们开始Userinfo型授权, 先来看下我们的原理图 我们这节课来做一个 世界留言版 系统 1..首先我还是在微信测试平台那里设置好回调页面的域名 2 ...

  7. 夺命雷公狗---微信开发62----所以memcache对access_token进行全局缓存优化

    公众号调用接口并不是无限制的,为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下, 每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到错误信息,造成调用失败. 我们也 ...

  8. 夺命雷公狗---微信开发59----在线点播电影网1之ckplayer播放器

    我们节课程就要开始写一个小项目了,这项目主要是写一个在线点播电影影网的,我们用到的播放器是ckplayer ckplayer基本介绍: ckplayer的全称是:超酷flv播放器,他是一款用于网页上播 ...

  9. 夺命雷公狗---微信开发17----自定义菜单的事件推送,响应菜单的CLICK

    废话不多说,index.php 代码如下所示: <?php /** * wechat php test */ //define your token require_once "com ...

随机推荐

  1. Magento: How to reset admin pssword

    Magento: How to reset admin pssword If you forget your admin password for Magento and you can’t reme ...

  2. magento去掉小数点后面的0

     <?php echo $_product->getPrice()?> PHP number_format() 函数  <?php echo number_format($_p ...

  3. JS-003-innerText 与 innerHTML 区别

    此文主要讲述在使用 innerText 和 innerHTML 获取元素中间值时的差别,我个人将二者的区别简单的理解为: webelement.innerText : 获取的是页面元素显示的文本 we ...

  4. JSON.stringify实例应用—将对象转换成JSON类型进行AJAX异步传值

    在上一篇中,对JSON.stringify()方法有了初步的认识,并且做了一些简单的例子.本篇将进一步将JSON.stringify用在复杂些的实例中,例如如下需求: 在进jQuery AJAX异步传 ...

  5. AppStore提审攻略

    导语: AppStore后台上传新产品的时候需要填写很多资料,看似很复杂,其实搞清楚之后也比较简单. 下面就给大家介绍一下  iTunes Connect 后台上传新APP时需要提交的资料.不要等待需 ...

  6. toggle笔记

    <!DOCTYPE html> <!-- saved from url=(0040)http://v3.bootcss.com/examples/carousel/ --> & ...

  7. What algorithm to use to normalize someone's face on image

    http://stackoverflow.com/questions/7066104/what-algorithm-to-use-to-normalize-someones-face-on-image

  8. Linux 进程间通信

    [转]unix进程间的通信方式 (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信. (2)命名管道(named pipe):命名管道克服 ...

  9. Apache中压力测试工具ab的操作说明

    1.压力测试工具ab(ApacheBench)的简单说明 1)     网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题.Apache中有个 ...

  10. BlockingQueue的使用

    本例介绍一个特殊的队列:BlockingQueue,如果BlockQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒.同 ...