如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
HTML
//登录验证 $without = array('register', 'login', 'forget'); // if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') == false ) {//判断是否微信浏览器 // if (!in_array($_GET['_action'], $without) && empty($_SESSION['user']['uid'])) { // if ($this->isPost()) { // $this->jserror('NOTLOGON'); // } else { // $this->redirect(__URL__ . '/login.html'); // } // } // }else { if (!in_array($_GET['_action'], $without) && empty($_SESSION['user']['uid'])) { if ($this->isPost()) { $this->jserror('NOTLOGON'); } else { $refurl = urlencode('http://' . $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); if(empty($refurl)){$refurl = urlencode(__ROOT__);} get_loginweixin($refurl); /*if(!$_SESSION['user']['bandmobile']){ $this->redirect(__APP__ . '/default/bandmobile.html'); }*/ } } // }
PHP方法
//微信登录 function get_loginweixin($url) { $code = $_REQUEST['code']; $appid = "********************"; $appsecret = "**********************";//获取openid if(empty($code)){ $acctokenurl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$url."&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect"; header('location:' . $acctokenurl, false, '301'); }else{ $code = $_GET['code'];//前端传来的code值 $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code"; $result = https_request($url); $jsoninfo = json_decode($result, true); //dump($jsoninfo);exit; $openid = $jsoninfo["openid"];//从返回json结果中读出openid $access_token = $jsoninfo["access_token"];//从返回json结果中读出openid $url1 = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN"; $result1 = https_request($url1); $users = json_decode($result1, true); $user = module('common')->model->table('member')->where("openid ='".$openid."'")->find(); //dump($openid);exit; if(empty($user)){ $data['gid'] = 1; if(!empty($_GET['uid'])){ $data['puid'] = $_GET['uid']; } $data['username'] = $users['openid']; $data['name'] = $users['nickname']; $data['openid'] = $users['openid']; $data['gender'] = $users['sex']; $data['country'] = $users['country']; $data['province'] = $users['province']; $data['city'] = $users['city']; $data['headimgurl'] = $users['headimgurl']; $data['createtime'] = $data['lasttime'] = time(); $data['createip'] = $data['lastip'] = get_client_ip(); $data['status'] = 1; $uid = module('common')->model->table('member')->data($data)->insert(); $_SESSION['user'] = module('common')->model->table('member')->where('uid='.$uid)->find(); }else { $data['name'] = $users['nickname']; $data['gender'] = $users['sex']; $data['country'] = $users['country']; $data['province'] = $users['province']; $data['city'] = $users['city']; $data['headimgurl'] = $users['headimgurl']; $data['lasttime'] = time(); $data['lastip'] = get_client_ip(); module('common')->model->table('member')->data($data)->where("uid=".$user['uid'])->update(); $_SESSION['user'] = module('common')->model->table('member')->where('uid='.$user['uid'])->find(); } // $_SESSION['user']['name'] = $users['nickname']; // if(empty($_SESSION['user']['bandmobile'])){ // header("Location:http://www.******.cn/weixin/index.php/default/bandmobile.html"); // } } } function https_request($url,$data = null){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); if (!empty($data)){ curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($curl); curl_close($curl); return $output; }