| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <?php
- namespace app\index\controller;
- use think\Controller;
- use think\Request;
- use think\Db;
- require_once('function.php');
- class Common extends Controller{
- public $accessToken =""; //属性保存在access_token
- public $appid =APPID;
- public $appsecret=APPSECRET;
- public function __construct(Request $request)
- {
- parent::__construct();
- $this->accessToken = get_access_token();
-
- //获得方法
- $action_name =$request->action();
- //获得控制器
- $controller_name = $request->controller();
- if(!cookie('user')){
- if($action_name !='getcode'){
- $this->auth($action_name, $controller_name);
- }
- }
-
-
- }
-
- public function auth($action_name, $controller_name)
- {
- // var_dump($action_name, $controller_name);
- $bak = urlencode(HOSTNAME."/index/".$controller_name."/".$action_name);
- $redirecr_uri =urlencode(HOSTNAME.'/index/common/getcode?bak='.$bak);
- $url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$this->appid."&redirect_uri=".$redirecr_uri."&response_type=code&scope=snsapi_userinfo&state=".time()."#wechat_redirect";
- header("Location:$url");exit;
-
- }
- public function getcode(Request $request)
- {
- $code = $_GET['code'];
- if(!$code){
- echo '微信服务器故障';
- exit;
- }
- // 通过code换取网页授权中的access_token
- $url ="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$this->appid."&secret=".$this->appsecret."&code=".$code."&grant_type=authorization_code";
- $result =file_get_contents($url);
- $result = json_decode($result,true);
- if(!$result){
- echo '微信服务器故障';
- exit;
- }
- // 获取用户的基本信息,此操作仅限scope为snspai_userinfo
- $url ="https://api.weixin.qq.com/sns/userinfo?access_token=".$result['access_token']."&openid=".$result['openid']."&lang=zh_CN";
- $result =file_get_contents($url);
- $result = json_decode($result,true);
- $userInfo = db('user')->where("openid","=",$result['openid'])->find();
- if(!$userInfo){
- $data = [
- 'nickname' =>$result['nickname'] ,
- 'openid'=>$result['openid'],
- 'headimgurl'=>$result['headimgurl'],
- 'addtime' =>time()
- ];
- db('user')->insert($data);
- $userInfo = $result;
- }
- $bak = $_GET['bak'];
- cookie('user',$userInfo);
- header('Location:'.$bak);exit;
- }
- }
|