欢迎光临
感谢一路有你

实例 | 微信公众号授权登录

如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
 

HTML

//登录验证
        $without = array('register', 'login', 'forget');
        // if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') == false ) {//判断是否微信浏览器
        //     if (!in_array($_GET['_action'], $without) && empty($_SESSION['user']['uid'])) {
        //         if ($this->isPost()) {
        //             $this->jserror('NOTLOGON');
        //         } else {
        //             $this->redirect(__URL__ . '/login.html');
        //         }
        //     }
        // }else {
            if (!in_array($_GET['_action'], $without) && empty($_SESSION['user']['uid'])) {
                if ($this->isPost()) {
                    $this->jserror('NOTLOGON');
                } else {
                    $refurl = urlencode('http://' . $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
                    if(empty($refurl)){$refurl = urlencode(__ROOT__);}
                    get_loginweixin($refurl);
                    /*if(!$_SESSION['user']['bandmobile']){
        
                        $this->redirect(__APP__ . '/default/bandmobile.html');
                    }*/
                }
            }
        // }

PHP方法

//微信登录
function get_loginweixin($url) {
    $code = $_REQUEST['code'];
    $appid = "********************";
    $appsecret = "**********************";//获取openid

    if(empty($code)){
        $acctokenurl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$url."&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect";
        header('location:' . $acctokenurl, false, '301');
    }else{
        $code = $_GET['code'];//前端传来的code值
        $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";
        $result = https_request($url);
        $jsoninfo = json_decode($result, true);
        //dump($jsoninfo);exit;
        $openid = $jsoninfo["openid"];//从返回json结果中读出openid
        $access_token = $jsoninfo["access_token"];//从返回json结果中读出openid
        $url1 = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
        $result1 = https_request($url1);
        $users = json_decode($result1, true);
    
        $user = module('common')->model->table('member')->where("openid ='".$openid."'")->find();
    //dump($openid);exit;
        if(empty($user)){
            $data['gid'] = 1;
            if(!empty($_GET['uid'])){
                $data['puid'] = $_GET['uid'];
            }
            $data['username'] = $users['openid'];
            $data['name'] = $users['nickname'];
            $data['openid'] = $users['openid'];
            $data['gender'] = $users['sex'];
            $data['country'] = $users['country'];
            $data['province'] = $users['province'];
            $data['city'] = $users['city'];
            $data['headimgurl'] = $users['headimgurl'];
            $data['createtime'] = $data['lasttime'] = time();
            $data['createip'] = $data['lastip'] = get_client_ip();
            $data['status'] = 1;
            $uid = module('common')->model->table('member')->data($data)->insert();
      
            $_SESSION['user'] = module('common')->model->table('member')->where('uid='.$uid)->find();
        }else {
            $data['name'] = $users['nickname'];
            $data['gender'] = $users['sex'];
            $data['country'] = $users['country'];
            $data['province'] = $users['province'];
            $data['city'] = $users['city'];
            $data['headimgurl'] = $users['headimgurl'];
            $data['lasttime'] = time();
            $data['lastip'] = get_client_ip();
            module('common')->model->table('member')->data($data)->where("uid=".$user['uid'])->update();
            $_SESSION['user'] = module('common')->model->table('member')->where('uid='.$user['uid'])->find();
        }
        
        // $_SESSION['user']['name'] = $users['nickname']; 
        
        // if(empty($_SESSION['user']['bandmobile'])){
        //     header("Location:http://www.******.cn/weixin/index.php/default/bandmobile.html");
        // }
        
    }
    
}


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;
}

 

赞(0) 打赏
未经允许不得转载:王明昌博客 » 实例 | 微信公众号授权登录
分享到: 更多 (0)

相关推荐

  • 暂无文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

×
订阅图标按钮