|
- <?php
- // 公众号的id和secret
- $appid = 'wx18835f75daa4e';
- $appsecret = '2541bff9214c662e8eb0a42';
- $redirecturl='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
- $url = "https://wx.4yun.top/spwl_oauth.php?oauth_back_url=".urlencode($redirecturl); //进行域名借权处理
- session_start();
-
- // 获取code码,用于和微信服务器申请token。 注:依据OAuth2.0要求,此处授权登录需要用户端操作
- if(!isset($_GET['code']) && !isset($_SESSION['code'])){
- if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {// 手机
- exit("<script>location.href='https://open.weixin.qq.com/connect/oauth2/authorize?appid={$appid}&redirect_uri={$url}&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect';</script>");
- }
- echo "<center><img src='https://www.spw8.cn/g/qr/api.php?p=5&text={$redirecturl}'></center>";
- exit;
- }
-
- // 依据code码去获取openid和access_token,自己的后台服务器直接向微信服务器申请即可
- if (isset($_GET['code']) && !isset($_SESSION['token'])){
- $_SESSION['code'] = $_GET['code'];
-
- $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$_GET['code']."&grant_type=authorization_code";
- $res = https_request($url);
- $res=(json_decode($res, true));
- $_SESSION['token'] = $res;
- }
-
- //echo "<pre>";
- //print_r($_SESSION);
- //echo "</pre>";
-
- // 依据申请到的access_token和openid,申请Userinfo信息。
- if (isset($_SESSION['token']['access_token'])){
- $url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$_SESSION['token']['access_token']."&openid=".$_SESSION['token']['openid']."&lang=zh_CN";
- $res = https_request($url);
- $res = json_decode($res, true);
- $_SESSION['userinfo'] = $res;
-
- $userinfo_data=@file_get_contents("wx_userinfo.txt");
- if($res[openid]){
- if(!strpos($userinfo_data,$res[openid])){
- $userinfo_data=@file_put_contents("wx_userinfo.txt",date("Y-m-d H:i:s",time()).var_export($res,TRUE)."\r\n",FILE_APPEND);
- }
- }
- }
-
- // cURL函数简单封装
- function https_request($url, $data = null)
- {
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
- if (!empty($data)){
- curl_setopt($curl, CURLOPT_POST, 1);
- curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
- }
-
- ///////////////////////////////////////////////////////////////////////////////////////////
-
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- $output = curl_exec($curl);
- curl_close($curl);
- return $output;
- }
- //这里设置一个退出返回登录页面
- if($_GET['op']=="logout"){
- //就清除缓存
- $_SESSION = array(); //清除SESSION值.
- if(isset($_COOKIE[session_name()])){ //判断客户端的cookie文件是否存在,存在的话将其设置为过期.
- setcookie(session_name(),'',time()-1,'/');
- }
- session_destroy(); //清除服务器的sesion文件
- exit("<script>history.go(0);</script>");
- }
- if($res[sex]==1){
- $sex="男";
- }elseif($res[sex]==2){
- $sex="女";
- }else{
- $sex="未知";
- }
- if($res[openid]){
- echo "
- <div class='userinfo'>
- <div class='headimg'><img src='{$res[headimgurl]}'></div>
- <div class='nickname'>{$res[nickname]} ({$sex})</div>
- <div>{$res[country]}{$res[province]}{$res[city]} {$res[language]}</div>
- <div class='openid'>{$res[openid]}</div>
- <div><a href='?op=logout'>[退出登录]</a></div>
- </div>
- ";
- }
- ?>
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <style>
- .userinfo{width:100%;height:px;background:#0c0;color:;text-align:center;border-radius:10px;}
- .userinfo .headimg img{width:100px;height:100px;border:0;border-radius:100px;padding:10px;}
- .userinfo .nickname{font-weight:800;}
- .userinfo .openid{padding:10px;}
- </style>
复制代码 |
|