<?php
//启用session
session_start();
//编码
header("Content-type: text/html; charset=utf-8");
//保存微信openid
$weixin_openid = "";
//保存从微信得到的code
$code = "";
//获得菜单中设置的state值
$state = ""; //修改为注册的测试号信息
$appid = "wx834404c1d1dbb5ec";
$secret = "bf03cfa823d80dd537bd18e83ce9a4e4"; if (isset($_GET['code']) && isset($_GET['state']) ){
$weixin_openid = GetOpenid($_GET['code']);
$code = $_GET['code'];
$state = $_GET['state'];
//echo $resultStr;
}else{
echo "NO CODE";
return ;
} // store session data
$_SESSION['weixin_openid']=$weixin_openid; if($state == "s1"){
//我的课堂
header('Location: courseCenter.php');
}else if($state == "s2"){
//订单记录
header('Location: orderList.php');
}else{
$textTpl="由认证接口进入我的课堂,<br/>您的 wx_openid: %s <br/> code: %s <br/> state: %s <br/>
<a href='orderList.php'>订单记录</a>";
$resultStr = sprintf($textTpl, $weixin_openid, $code, $state); echo $resultStr ;
} //获取微信的openid
function GetOpenid($c_code)
{
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $appid . "&secret=" . $secret . "&code=" . $c_code . "&grant_type=authorization_code";
//$url = "http://www.baidu.com";
$result = getData($url); $jsondecode = json_decode($result);
if($jsondecode != null){
if(property_exists ( $jsondecode, "openid" ) )
{
return $jsondecode->{"openid"};
}else{
return "code is invalid.";
}
} return null;
}
//获取https的get请求结果
function getData($c_url)
{
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $c_url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
// curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
// curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据
} ?>

最新文章

  1. Linux终端最常用快捷键
  2. Mysql-linux下密码修改,忘记密码修改,超级管理用户修改
  3. java网络编程之TCP通讯
  4. bzoj 2818: Gcd GCD(a,b) = 素数
  5. [转]python下很帅气的爬虫包 - Beautiful Soup 示例
  6. HDU 1988 Cube Stacking (数据结构-并检查集合)
  7. java_ log4j的基本配置参数
  8. 常用JS调试工具使用方法,帮你快速定位问题(Firebug+ IE“开发人员工具”)
  9. [NOIP2011] 聪明的质监员 二分+前缀和
  10. Intellij导入子项目时,maven列表子项目灰色不可用---解决方法
  11. 构建具有用户身份认证的 Ionic 应用
  12. 记录mysql正在执行的SQL语句
  13. 可上下拖动且有浮沉动画的View
  14. 事件类型(js)
  15. CentOS 6和CentOS 7防火墙的关闭
  16. oracle SGA
  17. springaop----&gt;springaop的使用(一)
  18. 【Ubuntu】用户切换到root
  19. 利用BeanUtils.copyProperties 克隆出新对象,避免对象重复问题
  20. 2016ACM/ICPC亚洲区大连站现场赛题解报告(转)

热门文章

  1. Jconsole
  2. HTML+JavaScript实现链式运动特效
  3. JMeter 七:远程测试
  4. 七个你无法忽视的Git使用技巧
  5. Android BaseAdapter和ViewHolder 优化 解决ListView的item抢焦点问题和item错乱问题
  6. js 终止 for 循环
  7. 07-hibernate进阶
  8. 5种样式实现div容器中三图摆放实例对比说明
  9. C++14系列(1):Linux下C++14开发环境配置
  10. CSS3Transition添加多个过渡效果