如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
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;
}
王明昌博客
