[](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 生成類
- 阿里云靜態云存儲接口類