[](http://www.phpgrace.com/tools/download/17.html)
# 微信扫码登录-网站
## **功能描述**
网站第三方登录 - 微信扫码登录组件,整合为一个类文件,通过简单的配置即可完成复杂的登录功能。
## **申请开通微信开放平台**
网址 :[https://open.weixin.qq.com/](https://open.weixin.qq.com/)
注册并登录微信开放平台(需要认证),认证后按照要求添加应用【网站应用】-> 通过审核。
## **部署说明**
>下载 webWxLogin.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_openid_wx` varchar(100) DEFAULT NULL COMMENT 'openid-wx',
`u_unionid_wx` varchar(100) DEFAULT NULL COMMENT 'unionid-wx',
`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;
~~~
## **类文件配置**
~~~
打开 webWxLogin.php
1、正确填写 appId 和 secret(微信开发平台应用中心点开应用获取)
2、填写回调地址 redirectUri,如: http://www.phpGrace.com/qqLogin/bac
~~~
## **登录接口使用【 注意在入口页开启 session 】**
在视图中添加一个链接,链接到控制器 wxLogin,代码如下:
~~~
<?php
//核心登录 session 名称 graceUid,请根据项目需求自行修改。
class wxLoginController extends grace{
private $loginer;
public function __init(){
parent::__init();
//检查是否已经登录
if(!empty($_SESSION['graceUid'])){header('/'); exit;}
$this->loginer = new phpGrace\tools\webWxLogin();
}
public function index(){
$this->loginer->login();
}
//扫描登录后返回处理
public function back(){
//检查参数
if(empty($_GET['code']) || empty($_GET['state'])){exit('数据错误请返回重试');}
if($_GET['state'] != $_SESSION['wxLoginState']){exit('数据错误请返回重试');}
//获取用户信息
$user = $this->loginer->getUserInfo();
//连接数据比对用户
$dbMember = db('members');
$member = $dbMember->where('u_openid_wx = ?', array($this->loginer->openId))->fetch();
//用户数据不存在 [ 第一次登录 ]
if(empty($member)){
$preAddData = array();
$preAddData['u_openid_wx'] = $this->loginer->openId;
$preAddData['u_nickname'] = $user['nickname'];
$preAddData['u_face'] = $user['headimgurl'];
$preAddData['u_gender'] = $user['sex'];
$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:/');
}
}
~~~
- 快速开始
- phpGrace 介绍
- 环境需求及伪静态设置
- 目录结构及命名规则
- 初始化、原理、分组
- 控制器与路由
- 创建控制器
- 基础控制器
- URL解析规则
- 自定义路由
- URL生成
- 数据与模型
- 数据库配置
- 获取数据库操作对象
- 数据库操作(CURD)
- 数据分页详解
- 事务处理
- 数据验证
- 表单令牌及验证
- 模型创建与调用
- 视图
- 视图文件创建
- 调用、引用视图
- 视图路径模式
- 会话机制
- Cookie 操作
- Session[文件型 ]
- Session [memcache]
- Session [redis]
- 缓存机制
- 缓存概述及配置
- 文件型缓存
- Memcache 形式的缓存
- Memcache介绍
- Memcache安装
- 开启PHP Memcache
- PHP操作Memcache
- Memcache来保存Session
- Memcached图形化管理工具
- Memcache安全相关
- redis 形式的缓存
- Redis介绍
- Redis安装
- 开启 PHP Redis
- Redis图形化管理工具
- PHP操作Redis
- 配置、常量、语言
- 全局配置、分组配置
- 预定义常量
- 语言包使用说明
- 工具
- 函数小工具
- 安全与扩展
- 框架部署安全
- 常规安全
- 扩展说明
- 常用类库
- 图片处理类
- 文件上传类
- IP地址获取类
- 验证码绘制类
- 日期时间换算类
- md5加密类
- 服务器信息类
- curl通信类
- 文件下载类
- 类反射工具
- XML生成与解析
- 汉字转拼音类
- 文件夹操作
- 人民币大写转换类
- 第三方类库
- QQ登录 - web版
- 微信扫码登录-网站
- excel 读写操作
- 阿里云短信接口
- SMTP 邮件发送
- 二维码生成类
- word、pdf 生成类
- 阿里云静态云存储接口类
