QQ登录协议php,QQ登录 - web版

编程知识 更新时间:2023-05-01 23:09:53

[![](http://static.phpgrace/statics/images/downcode.png)](http://www.phpgrace/tools/download/14.html)

# QQ登录 - web版

## **功能描述**

网站第三方登录 - qq登录组件,整合为一个类文件,通过简单的配置即可完成复杂的登录功能。

## **申请开通QQ互联**

网址 : [https://connect.qq](https://connect.qq/)

打开网址后登录QQ互联,点击“创建应用按钮”,按照步骤填写并提交应用:

![未命名-4.png](http://www.phpgrace/statics/images/201804/1524455603157617.png "1524455434227522.png")

## **部署说明**

>下载 webQQLogin.php 部署到 phpGrace/tools 文件夹下。

## **数据结构**

创建 pg\_members.sql 数据表。

~~~

DROP TABLE IF EXISTS `pg_members`;

CREATE TABLE `pg_members` (

`u_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',

`u_username` varchar(50) DEFAULT NULL COMMENT '用户名',

`u_openid_qq` varchar(100) DEFAULT NULL COMMENT 'openid-qq',

`u_unionid_qq` varchar(100) DEFAULT NULL COMMENT 'unionid-qq',

`u_phone` varchar(20) DEFAULT NULL COMMENT '手机号',

`u_pwd` varchar(50) DEFAULT NULL COMMENT '密码',

`u_name` varchar(20) DEFAULT NULL COMMENT '称呼',

`u_face` varchar(200) DEFAULT NULL COMMENT '头像地址',

`u_gender` varchar(20) DEFAULT NULL COMMENT '性别',

`u_status` tinyint(4) DEFAULT NULL COMMENT '状态',

`u_regtime` bigint(13) DEFAULT NULL COMMENT '注册时间',

`u_logintime` bigint(13) DEFAULT NULL COMMENT '登陆时间',

`u_randnum` varchar(50) DEFAULT NULL COMMENT '随机码',

`u_ip` varchar(20) DEFAULT NULL COMMENT '登陆IP',

`u_msgcode` varchar(10) DEFAULT NULL COMMENT '短信验证码',

PRIMARY KEY (`u_id`),

UNIQUE KEY `u_unionid_qq` (`u_unionid_qq`),

UNIQUE KEY `u_username` (`u_username`),

UNIQUE KEY `u_phone` (`u_phone`) USING BTREE,

UNIQUE KEY `u_openid_qq` (`u_openid_qq`) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=100000 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

~~~

## **类文件配置**

~~~

打开 webQQLogin.php

1、正确填写 appId 和 appKey (QQ互联管理中心点开应用获取)

2、填写回调地址 redirectUri,如: http://www.phpGrace/qqLogin/bac

~~~

## **登录接口使用【 注意在入口页开启 session 】**

在视图中添加一个链接,链接到控制器 qqLogin,代码如下:

~~~

//核心登录 session 名称 graceUid,请根据项目需求自行修改。

class qqLoginController extends grace{

private $qqLoginer;

public function __init(){

parent::__init();

//检查是否已经登录

if(!empty($_SESSION['graceUid'])){header('location:/'); exit;}

//实例化 qq 登录对象

$this->qqLoginer = new phpGrace\tools\webQQLogin();

}

//发起登录

public function index(){

$this->qqLoginer->login();

}

//返回接口

public function back(){

//GET 参数检查、 验证码比对

$res = $this->qqLoginer->checkBack();

if(!$res){exit($this->qqLoginer->error);}

//获取用户信息

$user = $this->qqLoginer->getUserInfo();

//连接数据比对用户

$dbMember = db('members');

$member   = $dbMember->where('u_openid_qq = ?', array($this->qqLoginer->openId))->fetch();

//用户数据不存在 [ 第一次登录 ]

if(empty($member)){

$preAddData = array();

$preAddData['u_openid_qq'] = $this->qqLoginer->openId;

$preAddData['u_nickname']  = $user['nickname'];

$preAddData['u_face']      = empty($user['figureurl_qq_2']) ? $user['figureurl_qq_1'] : $user['figureurl_qq_2'];

$preAddData['u_gender']    = $user['gender'];

$preAddData['u_status']    = 1;

$preAddData['u_regtime']   = time();

$preAddData['u_logintime'] = time();

$preAddData['u_ip']        = phpGrace\tools\ip::getIp();

$uid = $dbMember->add($preAddData);

if($uid){

//记录 session

setSession('graceUid', $uid);

setSession('graceNickName', $user['nickname']);

}else{

exit('服务器忙,请返回重试');

}

}

//用户已经存在

else{

$preUpdateData = array();

$preUpdateData['u_logintime'] = time();

$preUpdateData['u_ip']        = phpGrace\tools\ip::getIp();

$dbMember->where('u_id = ?', array($member['u_id']))->update($preUpdateData);

//记录 session

setSession('graceUid', $member['u_id']);

setSession('graceNickName', $user['nickname']);

}

//登录后跳转回首页,可以根据项目需求改写跳转

header('location:/');

}

}

~~~

更多推荐

QQ登录协议php,QQ登录 - web版

本文发布于:2023-04-24 11:11:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/87dadc1bc72c58557dbf9dbd1453d576.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:协议   QQ   web   php

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 100376文章数
  • 26039阅读数
  • 0评论数