登录  /  注册
博主信息
博文 10
粉丝 1
评论 0
访问量 12093
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
thinkPHP整合新版QQ登录
GrMax的博客
原创
1645人浏览过

首先去QQ互联下载SDK 放入Vendor下

用户点击QQ登录是执行下面方法

public function login_qq(){
Vendor('qq.qqConnectAPI');
$qc = new \QC();
$qc->qq_login();
}

在用户进行授权之后 QQ会向回调地址进行发送数据

我们在控制器里面接收并做业务处理

//QQ登录回调
  public function login_qq_back(){
      	    Vendor('qq.qqConnectAPI');
	    $qc = new \QC();
    	$access_token = $qc->qq_callback();
        $open_id = $qc->get_openid();
        $qc = new \QC($access_token,$open_id);
        $user_info = $qc->get_user_info();
      	$user = D('member')->where(array('openid'=>$open_id))->find();//查询用户openid
      	
      	
   	 //此处是当用户进行QQ登录授权之后还需要进行手机号的绑定!如果不需要可直接删除此段进行
   	if (!$user) {
      	session('openid',$open_id);
    	$this->assign('user_info',$user_info);
    	$this->display();
        exit;
   	}else{
   	//下方为已经登记过的openID的记录
   	    if ($user['is_lock']) {
			$this->error('用户被锁定!', '', array('input' => ''));
		}
		//更新数据库的参数
		$data = array('id' => $user['id'], //保存时会自动为此ID的更新
			'login_time'       => date('Y-m-d H:i:s'),
			'login_ip'         => get_client_ip(),
			'login_num'        => $user['login_num'] + 1,
		);
		//更新数据库
		M('member')->save($data);
   		$uf = $request . '.' . md5($data['nickname']) . '.' . get_random(6); //检测因子
		session('uid', $user['id']);
		set_cookie(array('name' => 'uid', 'value' => $user['id']));
		set_cookie(array('name' => 'nickname', 'value' => $user['nickname']));
		set_cookie(array('name' => 'group_id', 'value' => $user['group_id'])); //20140801
		set_cookie(array('name' => 'login_time', 'value' => $user['login_time']));
		set_cookie(array('name' => 'login_ip', 'value' => $user['login_ip']));
		set_cookie(array('name' => 'status', 'value' => $user['status'])); //激活状态
		set_cookie(array('name' => 'verifytime', 'value' => time())); //激活状态
		set_cookie(array('name' => 'uf', 'value' => $uf)); //登录标识
      	//因为前段是弹出窗口进行授权的。所以这里要执行JS的代码进行关闭窗口并刷新父窗口
      	echo '<script>opener.location.reload(); window.close();</script>';
      	exit;
   	}
}

下面方法是用户进行绑定手机号的实现方法,需要的小伙伴可以参考一下!包含了手机验证码 手机验证码获取可以使用自己的逻辑给用户发送验证码

 public function login_qq_int(){
  		if(IS_POST){
        	$data = I('post.',' ','htmlspecialchars');
        	$validate = array(
			array('email', 'require', '手机号不能为空'),
			array('code', 'require', '请输入手机验证码'),
		);

		$db = M('member');
		if (!$db->validate($validate)->create()) {
			$this->error($db->getError());
		}

		$code = I('code',0,'intval');
		if ((int)session('code') !==$code ) {
			 session('code',null);
			$this->error('手机验证码不正确或验证码已经失效,请重新获取', '', array('input' => 'code'));
		}	
         
        //检测手机号是否存在
          $user_info = $db->where(array('email'=>$data['email']))->find();
         if($user_info){
			$user_info['login_time'] =  date('Y-m-d H:i:s');
            $user_info['login_ip']   = get_client_ip();
            $user_info['openid'] = session('openid'); 
           	$request = D('member')->save($user_info);
            $uf = $request . '.' . md5($user_info['nickname']) . '.' . get_random(6); //检测因子
            session('uid', $request);
            set_cookie(array('name' => 'uid', 'value' => $request));
            set_cookie(array('name' => 'nickname', 'value' => $user_info['nickname']));
            set_cookie(array('name' => 'group_id', 'value' => $user_info['group_id']));
            set_cookie(array('name' => 'login_time', 'value' => $user_info['login_time']));
            set_cookie(array('name' => 'login_ip', 'value' => $user_info['login_ip']));
            set_cookie(array('name' => 'status', 'value' => 0)); 
            set_cookie(array('name' => 'verifytime', 'value' => time()));
            set_cookie(array('name' => 'uf', 'value' => $uf)); //登录标识
            session('openid',null);
            $this->success('登录成功',U('Home/index/index'));	
         }else{
         	$data['openid'] = session('openid'); 
            $data['reg_time']   =  date('Y-m-d H:i:s');
            $data['login_time'] =  date('Y-m-d H:i:s');
            $data['login_ip'] = get_client_ip();
            $data['group_id'] = 2; //注册会员
            $request = D('member')->add($data);
            $uf = $request . '.' . md5($data['nickname']) . '.' . get_random(6); //检测因子
            session('uid', $request);
            set_cookie(array('name' => 'uid', 'value' => $request));
            set_cookie(array('name' => 'nickname', 'value' => $data['nickname']));
            set_cookie(array('name' => 'group_id', 'value' => $data['group_id']));
            set_cookie(array('name' => 'login_time', 'value' => $data['login_time']));
            set_cookie(array('name' => 'login_ip', 'value' => $data['login_ip']));
            set_cookie(array('name' => 'status', 'value' => 0)); 
            set_cookie(array('name' => 'verifytime', 'value' => time()));
            set_cookie(array('name' => 'uf', 'value' => $uf)); //登录标识
            session('openid',null);
            $this->success('登录成功',U('Home/index/index'));	
         }
          
    }
  

 }


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学