微信获取用户
<?php /** * Description of WxUser * * @author xinjun */ namespace ControllerWx; use ControllerHomeHomeBase; use ModelWxUserModel; use FrameworkNetRequest as R; use ModelConstant; class WxUser extends HomeBase { public function __construct() { parent::__construct(); } /** * 获取当前用户的信息 * @return boolean */ public function getUser() { $ud = array(); //是否是从微信公众号条跳过来的 if (isset($_POST['openid']) && !empty($_POST['openid'])) { //查找用户数据库条件为openid,如果找到了,说明已经是当前的会员了直接找到取出给self::$userInfo $openid = $_POST['openid']; $userModel = new UserModel(); $ud = $userModel->getOneByOpenid($openid); if (!empty($ud)) { return $this->getData($ud); } else { //没有找到为新的用户直接保存用户的信息进数据库,然后取出返回 $userData = $this->getUserByOpenid(self::$access_token, $openid); $data = array(); $data['openid'] = $userData['openid']; $data['nf_nickname'] = $userData['nickname']; $data['nf_sex'] = $userData['sex']; $data['nf_province'] = $userData['province']; $data['nf_country'] = $userData['country']; $data['nf_headimgurl'] = $userData['headimgurl']; $result = $userModel->create($data); if ($result) { $ud = $userModel->getOneById($result); if (!empty($ud)) { return $this->getData($ud); } else { return $this->getError(Constant::GET_USER_ERROR); } } else { return $this->getError(Constant::GET_USER_ERROR); } } } else { //用户是通过分享过来的 $code = $_POST['code']; $userData = $this->getUserByCode(self::$appid, self::$secret, $code); //通过$userData获取当前用户的openid,查找用户表如果找到了用户直接给信息给self::$userInfo $userModel = new UserModel(); $ud = $userModel->getOneByOpenid($userData['openid']); if (!empty($ud)) { return $this->getData($ud); } else { $data = array(); $data['openid'] = $userData['openid']; $data['nf_nickname'] = $userData['nickname']; $data['nf_sex'] = $userData['sex']; $data['nf_province'] = $userData['province']; $data['nf_country'] = $userData['country']; $data['nf_headimgurl'] = $userData['headimgurl']; if(!empty($data['openid'])){ $result = $userModel->create($data); if ($result) { $userModel = new UserModel(); $ud = $userModel->getOneByOpenid($data['openid']); return $this->getData($ud); } else { return $this->getError(Constant::GET_USER_ERROR); } }else{ return $this->getError(Constant::GET_USER_ERROR); } } } } /** * 获取当前用户的信息(分享的) * @return type */ public function getUserByCode($appid, $secret, $code) { //通过分享过来的接收前端传的code $url = "https://api.weixin.qq.com/sns/oauth2/access_token?app; $https = true; $method = 'get'; $data = null; $result = $this->request($url, $https, $method, $data); //获取当前用户的access_token(非基础)和用户的openid $data = json_decode($result, 1); //检查数据库是否存在openid为当前用户的数据存在 $url = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $data['access_token'] . "&open; $https = true; $method = 'get'; $data = null; $userInfo = $this->request($url, $https, $method, $data); $userInfo = json_decode($userInfo, 1); return $userInfo; } /** * 获取当前用户的信息(从公众号里跳转过来的) * @param type $accessToken * @param type $openid * @return type */ public function getUserByOpenid($accessToken, $openid) { $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" . $accessToken . "&open; $https = true; $method = 'get'; $data = null; $userInfo = $this->request($url, $https, $method, $data); $userInfo = json_decode($userInfo, 1); return $userInfo; } }