$database_user = D('User'); if ($database_user->field('`uid`')->where(array('phone' => $_POST['phone']))->find()) { json_return(1014, '手机号码已存在'); } $data = array(); $data['phone'] = trim($_POST['phone']); $data['nickname'] = ''; $data['password'] = md5(trim($_POST['pwd'])); $data['check_phone'] = 1; $data['login_count'] = 1; if (!empty($_SESSION['openid'])) { $data['openid'] = $_SESSION['openid']; } $add_result = M('User')->add_user($data); if ($add_result['err_code'] == 0) { $_SESSION['wap_user'] = $add_result['err_msg']; mergeSessionUserInfo(session_id(), $add_result['err_msg']['uid']); json_return(0, '注册成功'); } else { json_return(1, $add_result['err_msg']); } } } else { //回调地址 $redirect_uri = $_GET['referer'] ? $_GET['referer'] : ($_SERVER['HTTP_REFERER'] ? $_SERVER['HTTP_REFERER'] : ($_COOKIE['wap_store_id'] ? './home.php?id=' . $_COOKIE['wap_store_id'] : $config['site_url'])); if (!empty($_SESSION['wap_user'])) { redirect($redirect_uri); } include display('login'); echo ob_get_clean(); }
public function wap_getStore($store_id) { $store = $this->db->where(array('store_id' => $store_id, 'status' => 1))->find(); if (!empty($store)) { $_SESSION['tmp_store_id'] = $store_id; //解决用户访问不同店铺重复授权生成新用户问题 /*if (empty($_SESSION['wap_user']) && !empty($_COOKIE['uid'])) { //COOKIE中有用户信息 $tmp_user = M('User')->checkUser(array('uid' => $_COOKIE['uid'])); if (!empty($tmp_user)) { $_SESSION['wap_user'] = $tmp_user; $tmp_seller = D('Store')->where(array('drp_supplier_id' => $store_id, 'uid' => $_COOKIE['uid'], 'status' => 1))->find(); if (!empty($tmp_seller)) { $_SESSION['wap_drp_store'] = $tmp_seller; if (!empty($tmp_seller['oauth_url'])) { //对接微店 $_SESSION['sync_user'] = true; } } setcookie('uid', $_COOKIE['uid'], $_SERVER['REQUEST_TIME']+10000000, '/'); //延长cookie有效期 } else { unset($_SESSION['sync_user']); //删除同步标识 unset($_SESSION['wap_user']); //删除用户登录状态 } }*/ //判断是否为对接微店 if (!empty($store['oauth_url'])) { if (!empty($_SESSION['wap_user']) && $_SESSION['wap_user']['store_id'] != $store_id) { //非当前店铺粉丝,重新授权登陆 unset($_SESSION['sync_user']); //删除同步标识 unset($_SESSION['wap_user']); //删除用户登录状态 } } else { unset($_SESSION['sync_user']); //非对接店铺 删除同步标识 } //对接网站用户授权登陆 //授权条件:非对接同步用户,是对接店铺,店铺管理后台未登录(不加此条件,店铺管理后台的所有链接无法在pc端打开,都会跳转授权) if (empty($_SESSION['sync_user']) && !empty($store['oauth_url']) && empty($_SESSION['sync_store'])) { $return_url = urlencode('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); if (!empty($store['oauth_url'])) { if (stripos($store['oauth_url'], '?') === false) { redirect($store['oauth_url'] . '?return_url=' . $return_url . '&store_id=' . $store_id . '&token=' . $store['token']); } else { redirect($store['oauth_url'] . '&return_url=' . $return_url . '&store_id=' . $store_id . '&token=' . $store['token']); } } } else { if (empty($_SESSION['sync_user']) && empty($store['oauth_url']) && empty($_SESSION['store'])) { //默认授权 //授权条件:非对接同步用户,非对接店铺,店铺管理后台未登录(不加此条件,店铺管理后台的所有链接无法在pc端打开,都会跳转授权) /*是否移动端*/ $is_mobile = is_mobile(); /*是否微信端*/ $is_weixin = is_weixin(); //调试 清除登录信息 //setcookie('pigcms_sessionid','',$_SERVER['REQUEST_TIME']-10000000,'/'); //$_SESSION = null; //session_destroy(); /*如果是微信端,且配置文件中配置了微信信息,得到openid*/ if ($is_weixin && (empty($_SESSION['openid']) || empty($_SESSION['wap_user']))) { //openid存在 通过openid查找用户 if (!empty($_SESSION['openid'])) { $userinfo = M('User')->get_user('openid', $_SESSION['openid']); $_SESSION['wap_user'] = $userinfo['user']; mergeSessionUserInfo(session_id(), $userinfo['user']['uid']); unset($_SESSION['wap_drp_store']); } //用户未登录 调用授权获取openid, 通过openid查找用户,如果已经存在,设置登录,如果不存在,添加一个新用户和openid关联 if (empty($_SESSION['wap_user'])) { $customeUrl = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; //判断店铺是否绑定过认证服务号 $wx_bind = D('Weixin_bind')->where(array('store_id' => $store['store_id']))->find(); if (empty($_GET['code'])) { $_SESSION['weixin']['state'] = md5(uniqid()); if (!empty($wx_bind) && $wx_bind['service_type_info'] == 2 && $wx_bind['verify_type_info'] == 0) { $oauthUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $wx_bind['authorizer_appid'] . '&redirect_uri=' . urlencode($customeUrl) . '&response_type=code&scope=snsapi_userinfo&state=' . $_SESSION['weixin']['state'] . '&component_appid=' . option('config.wx_appid') . '#wechat_redirect'; } else { //店铺非认证服务号走总后台授权 $oauthUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . option('config.wechat_appid') . '&redirect_uri=' . urlencode($customeUrl) . '&response_type=code&scope=snsapi_userinfo&state=' . $_SESSION['weixin']['state'] . '#wechat_redirect'; } redirect($oauthUrl); exit; } else { if (isset($_GET['code']) && isset($_GET['state']) && $_GET['state'] == $_SESSION['weixin']['state']) { unset($_SESSION['weixin']); import('Http'); $http = new Http(); if (!empty($wx_bind) && $wx_bind['service_type_info'] == 2 && $wx_bind['verify_type_info'] == 0) { $component_token = M('Weixin_bind')->get_access_token($store['store_id'], true); $tokenUrl = 'https://api.weixin.qq.com/sns/oauth2/component/access_token?appid=' . $wx_bind['authorizer_appid'] . '&code=' . $_GET['code'] . '&grant_type=authorization_code&component_appid=' . option('config.wx_appid') . '&component_access_token=' . $component_token; } else { $tokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . option('config.wechat_appid') . '&secret=' . option('config.wechat_appsecret') . '&code=' . $_GET['code'] . '&grant_type=authorization_code'; } $return = $http->curlGet($tokenUrl); $jsonrt = json_decode($return, true); if ($jsonrt['errcode']) { $error_msg_class = new GetErrorMsg(); exit('授权发生错误:' . $jsonrt['errcode']); } if ($jsonrt['openid']) { //微信中打开直接登陆 $url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $jsonrt['access_token'] . '&openid=' . $jsonrt['openid'] . '&lang=zh_CN'; $wxuser = $http->curlGet($url); $wxuser = json_decode($wxuser, true); $_SESSION['openid'] = $jsonrt['openid']; $userinfo = M('User')->get_user('openid', $_SESSION['openid']); if (empty($userinfo['user'])) { //用户不存在,添加新用户,并设置登录 $data = array(); $data['phone'] = ''; $data['nickname'] = $wxuser['nickname']; $data['openid'] = $_SESSION['openid']; $data['avatar'] = $wxuser['headimgurl']; $data['password'] = ''; $data['check_phone'] = 1; $data['login_count'] = 1; $add_result = M('User')->add_user($data); if ($add_result['err_code'] == 0) { $_SESSION['wap_user'] = $add_result['err_msg']; $_SESSION['wap_user']['sex'] = $wxuser['sex']; $_SESSION['wap_user']['province'] = $wxuser['province']; $_SESSION['wap_user']['city'] = $wxuser['city']; mergeSessionUserInfo(session_id(), $add_result['err_msg']['uid']); } } else { //用户已存在,设置登录 $_SESSION['wap_user'] = $userinfo['user']; $_SESSION['wap_user']['sex'] = $wxuser['sex']; $_SESSION['wap_user']['province'] = $wxuser['province']; $_SESSION['wap_user']['city'] = $wxuser['city']; mergeSessionUserInfo(session_id(), $userinfo['user']['uid']); } unset($_SESSION['wap_drp_store']); //删除保存在session中的分销店铺 } } } } } //} } } $store['url'] = option('config.wap_site_url') . '/home.php?id=' . $store['store_id']; if (empty($store['logo'])) { $store['logo'] = getAttachmentUrl('images/default_shop_2.jpg', false); } else { if (stripos($store['logo'], 'http://') === false && stripos($store['logo'], 'https://') === false) { $store['logo'] = getAttachmentUrl($store['logo']); } } $store['ucenter_url'] = option('config.wap_site_url') . '/ucenter.php?id=' . $store['store_id']; $store['physical_url'] = option('config.wap_site_url') . '/physical.php?id=' . $store['store_id']; option('now_store', $store); } return $store; }