1. 判断用户是否登录,且当前控制器不能是登录控制器和支付控制器 **`$this->verify_login();`**
2. 发起微信授权登录 **`$this->wechat_login();`**
3. 获取CODE ,通过CODE获取用户信息 **`$this->login_auth();`**
~~~
/**
* 用户信息
*/
protected function verify_login()
{
$user_id = session('user_id');
if (!$user_id && (CONTROLLER != 'Login' && CONTROLLER != 'Pays')) {
//跳转到登录操作页面 微信内使用微信公众号登录
$Wechat = new Wechat();
$Wechat->wechat_login();
}
$this->user_id = $user_id;
$u_id = session('u_id');
if ($u_id) {
$this->u_id = $u_id;
} else {
session('u_id', 2);
$this->u_id = 2;
}
}
/**
* 微信公众号登录入口
*/
public function wechat_login()
{
$app = Factory::OfficialAccount($this->wechat_config);
$oauth = $app->oauth;
//记录当前URL
session('return_url', 'http://' . $_SERVER["HTTP_HOST"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"]);
$oauth->redirect()->send();
}
/**
* 微信授权回调地址
*/
public function login_auth()
{
//得到微信code, 来获取用户信息
//获取用户信息
$data = $this->return_url();
if (!$data['id']) {
die('非法错误');
}
//判断用户是否注册过账号
$user_id = Db::name('members')->where([['openid', '=', $data['id']]])->value('id');
//获取当前分站ID
$site_url = $_SERVER['HTTP_HOST'];
$admin = Db::name('admin')->where([['site_url', 'like', '%' . $site_url . '%']])->find();
if (!$admin) {
$u_id = 2;
} else {
$u_id = $admin['u_id'];
}
//如果不存在,则注册账号
if (!$user_id) {
$members = [
'create_time' => time(),
'openid' => $data['id'],
'username' => $data['name'],
'photo' => $data['avatar'],
'province' => $data['original']['province'],
'city' => $data['original']['city'],
'u_id' => $u_id, //写入分站ID
];
//新增用户
$user_id = Db::name('members')->insertGetId($members);
}
session('user_id', $user_id);
$return_url = session('return_url');
if ($return_url) {
header('location:' . $return_url);
exit;
}
$this->redirect(url('home/index/index'));
}
~~~
- ThinkPHP
- MySql
- 事务
- 漏洞修复
- jQuery
- select搜索下拉框,多选,全选等
- 移动端富文本编辑器
- 复制内容
- ajax请求
- PHP
- 基本语法
- 关于屏蔽“未定义数组下标:0”错误的问题
- PHP文件操作
- 使用PhpOffice 在PHP7.3中导出数据报错问题
- curl
- PHP生成PPT
- Redis
- 如何在PHP中安装Redis扩展
- Redis队列,秒杀,抢购
- 压力测试(ab)
- apache ab压力测试
- 微信
- 微信支付
- 微信分享
- 授权登录
- 微信公众号服务器
- 自动回复
- 微信发起支付html页面
- composer
- 安装
- 二维码的生成
- Excel导入导出
- 数据采集
- 采集列表
- 采集内容详情
- 图片采集
- Linux
- 常用命令
- 解压压缩
- 服务器
- 服务器运行缓慢的原因
- IIS 隐藏index.php
- 端口检测
- Nginx
- 数据库
- Oracle数据库
- MySql
- 新增MySql
- Field字段
- Tp验证码加载不出来,解决办法
- API接口
- Google API
- 织梦CMS支付接口
- SMTP发送邮箱问题
- Could not connect to SMTP host
- 阿里云API接口
- 支付宝新版配置
- 腾讯API接口
- 安装方法
- 百度地图API
- 通过ip地址获取当前城市
- 常用笔记
- yarn