ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
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')); } ~~~