qq互联

<!-- 
登录按钮
-->
<a href="https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id={$qq_appid}&redirect_uri=http://{$_SERVER['HTTP_HOST']}{:U('Index/login')}&scope=get_user_info"><img src="http://qzonestyle.gtimg.cn/qzone/vas/opensns/res/img/Connect_logo_7.png" alt="" /></a>
                                
<?php 

public function login(){
    if($_GET['clear_qq']){
        session('qq_openid',null);
        session('access_token',null);
        session('refresh_token',null);
        header("location:".U('Index/login'));
        exit();
    }


    if(IS_AJAX){
        $User_mod= M('users');
        $client_ip=get_client_ip();
        if($_POST['ac']=="check_username"){
            $map['username']=array('eq',$_POST['username']);
            $user=$User_mod->where($map)->find();
            if($user){
                if($user['state']==1){
                    session($client_ip.$_POST['username'],null);
                    $this->ajaxReturn(1,"用户名存在!",1);
                }else{
                    $this->ajaxReturn(3,"账户异常、被限制登录,请联系客服!",3);
                }
            }else{
                $this->ajaxReturn(2,"用户名不存在!",2);
            }
        }else if($_POST['ac']=="do_login"){
            if($_POST['username']==null or $_POST['password']==null ){
                $this->ajaxReturn(0,"用户名或密码为空",0);
            }
            if($_POST['verify']==null ){
                $this->ajaxReturn(4,"请输入验证码",4);
            }
            if(md5($_POST['verify'])!=$_SESSION['verify']){
                $this->ajaxReturn(8,"验证码错误",8);
            }
            $map['username']=array('eq',$_POST['username']);
            $user=$User_mod->where($map)->find();
            if($user){
                if($user['state']==1){
                    if(md5($_POST['password'])==$user['password']){
                        if($_POST['save_pw']){
                            setcookies('uid', $user['id'],604800);
                        }else{
                            setcookies('uid', $user['id']);
                        }

                        if($_SESSION['qq_openid'] && $_SESSION['qq_access_token'] && $_SESSION['qq_refresh_token']){
                            if(update_user_qq_token($user['id'])){
                                $this->ajaxReturn($user['username'],"绑定成功!",5);
                            }else{
                                $this->ajaxReturn($user['username'],"绑定失败!",6);
                            }
                        }else{
                            $this->ajaxReturn($user['username'],"登录成功!",5);
                        }

                    }else{
                        $this->ajaxReturn($user['username'],"密码错误!",6);
                    }
                }else{
                     $this->ajaxReturn(3,"账户异常、被限制登录,请联系客服!",3);
                }
            }else{
                $this->ajaxReturn(2,"用户名不存在!",2);
            }
        }else{
            $this->ajaxReturn(0,"非法请求!",0);
        }
    }else{
        if($this->userinfo){
            $this->error("已经登录无需登录",U('Index/index'));
        }else{
            $this->assign('qq_appid',C('qq_appid'));
            if($_SESSION['qq_openid'] && $_SESSION['qq_access_token']){
                $user_qq_info=get_qq_info($_SESSION['qq_openid'],$_SESSION['qq_access_token'],C('qq_appid'));
                $this->assign('nickname',$user_qq_info['nickname']);
                $this->assign('img',$user_qq_info['figureurl']);
                $this->assign('qq_appid',C('qq_appid'));
                $this->display('link_qq');
                exit();
            }

            if ($_GET ['code']) {  //qq登录
                $res_qq_login=$this->qq_login($_GET ['code']);
                if($res_qq_login['retcode']){
                    $this->success("登陆成功!",U('Index/index'));
                }else{
                    session('qq_openid',$res_qq_login['openid']);
                    session('qq_access_token',$res_qq_login['token']['access_token']);
                    session('qq_refresh_token',$res_qq_login['token']['refresh_token']);
                    $this->success("第一次使用 ,请绑定用户!",U('Index/login'));
                }
            }else{
                if(is_mobile()){
                    $this->display('m_login');
                }else{
                    $this->display();
                }
                }
            }



    }

}




private function qq_login($code){
    $_SESSION['qq_login_state'] = md5(uniqid(rand(), TRUE));
    $redirect_uri=urlencode("http://{$_SERVER['HTTP_HOST']}");
    $url_get_access_token = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=".C('qq_appid')."&client_secret=".C('qq_appsecret')."&code={$code}&state={$_SESSION['qq_login_state']}&redirect_uri=".$redirect_uri;
    $res_access_token=https_request ( $url_get_access_token );
    $arr_access_token=get_parse($res_access_token);
    $url_openid= "https://graph.qq.com/oauth2.0/me?".$res_access_token;
    $re_openid = https_request ( $url_openid );
    if (preg_match ( '/\"openid\":\"(\w+)\"/i', $re_openid, $match )) {
        $qq_openid = $match [1];
    }
    $map_user['qq_openid']=array('eq',$qq_openid);
    $user=M('users')->where($map_user)->find();
    if($user){
        setcookies('uid', $user['id'],604800);
        update_qq_access_token_data($qq_openid,$arr_access_token);
        $data['retcode']=1;
        $data['id']=$user['id'];
        return $data;
    }else{
        $data['openid']=$qq_openid;
        $data['token']=$arr_access_token;
        return $data;
    }

}




?>

 

posted on 2015-02-14 15:02  一条大鱼  阅读(718)  评论(0编辑  收藏  举报