config['wx_rz'] != "1") { if ((int)$_GET['login'] == "1") { $this->ACT_msg_wap(Url("wap") . 'member/', $msg = "对不起,微信绑定已关闭!", 2, 5); } else { $this->ACT_msg_wap(Url("wap"), $msg = "对不起,微信登录已关闭!", 2, 5); } } $this->seo('wxlogin'); $app_id = $this->config['wx_appid']; $app_secret = $this->config['wx_appsecret']; $my_url = $this->config['sy_wapdomain'] . "/index.php?c=wxconnect"; if (isset($_GET['wxoauth'])) { $my_url .= '&wxoauth=1'; } $code = $_GET['code']; session_start(); if (empty($code)) { $_SESSION['wx']['state'] = md5(uniqid(rand(), TRUE)); $dialog_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $app_id . "&redirect_uri=" . urlencode($my_url) . "&response_type=code&scope=snsapi_userinfo&state=" . $_SESSION['wx']['state'] . "#wechat_redirect"; header("location:" . $dialog_url); die; } if ($_GET['state'] == $_SESSION['wx']['state']) { $token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $app_id . "&secret=" . $app_secret . "&code=" . $code . "&grant_type=authorization_code"; if (function_exists('curl_init')) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $token_url); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $response = curl_exec($ch); curl_close($ch); $user = json_decode($response, true); if (!empty($user['openid'])) { $userinfoM = $this->MODEL("userinfo"); $where['wxid'] = $user['openid']; if (!empty($user['unionid'])) { $where['unionid'] = array('=', $user['unionid'], 'OR'); } $userinfo = $userinfoM->getInfo($where); if (is_array($userinfo) && !empty($userinfo)) { if ($this->uid) { $userinfoM->upInfo(array('uid' => $this->uid), array('wxid' => $user['openid'], 'unionid' => $user['unionid'])); if ($userinfo['usertype'] > 0) { // 会员日志,记录手动绑定微信 $LogM = $this->MODEL('log'); $LogM->addMemberLog($userinfo['uid'], $userinfo['usertype'], 'WAP微信绑定成功'); } $this->wapheader('member/index.php?c=binding'); } else { $userinfoM->upInfo(array('uid' => $userinfo['uid']), array('login_date' => time(), 'wxid' => $user['openid'], 'unionid' => $user['unionid'])); if ($userinfo['usertype'] > 0) { if ($userinfo['status'] == '2' || $userinfo['status'] == '4') { // 账号被锁定 header("location:" . Url('wap', array('c' => 'login', 'a' => 'loginlock', 'type' => 1))); exit(); } // 会员日志,记录手动登录 $LogM = $this->MODEL('log'); $LogM->addMemberLog($userinfo['uid'], $userinfo['usertype'], 'WAP微信登录成功'); $logtime = date("Ymd", $userinfo['login_date']); $nowtime = date("Ymd", time()); if ($this->config['resume_sx'] == 1 && $userinfo['usertype'] == 1) { $resumeM = $this->MODEL('resume'); $resume = $resumeM->getResumeInfo(array('uid' => $userinfo['uid']), array('field' => '`def_job`')); if ($resume['def_job']) { $resumeM->upInfo(array('id' => $resume['def_job']), array('eData' => array('lastupdate' => time()))); $resumeM->upResumeInfo(array('uid' => $userinfo['uid']), array('rData' => array('lastupdate' => time()), 'port' => 2)); } } if ($logtime != $nowtime) { $this->MODEL('integral')->invtalCheck($userinfo['uid'], $userinfo['usertype'], "integral_login", "会员登录", 22); //登录日志 $logdata['uid'] = $userinfo['uid']; $logdata['usertype'] = $userinfo['usertype']; $logdata['did'] = $userinfo['did']; $logdata['content'] = 'WAP微信登录'; $LogM->addLoginlog($logdata); } } if ($this->config['sy_uc_type'] == "uc_center") { $this->obj->uc_open(); $uc_user = uc_get_user($userinfo['username']); $ucsynlogin = uc_user_synlogin($uc_user[0]); $msg = '登录成功!'; $this->wapheader('member/'); } else { $this->cookie->add_cookie($userinfo['uid'], $userinfo['username'], $userinfo['salt'], $userinfo['email'], $userinfo['password'], $userinfo['usertype'], $this->config['sy_logintime'], $userinfo['did']); $this->wapheader('member/'); } } } else { $_SESSION['wx']["openid"] = $user['openid']; $_SESSION['wx']["unionid"] = $user['unionid']; $_SESSION['wx']["tooken"] = $user['access_token']; $_SESSION['wx']["logininfo"] = "您已登录微信,请绑定您的帐户!"; if ($this->uid) { // 会员中心微信绑定 $uwhere['wxid'] = $user['openid']; if (!empty($user['unionid'])) { $uwhere['unionid'] = array('=', $user['unionid'], 'OR'); } $userinfoM->upInfo($uwhere, array('wxopenid' => '', 'wxid' => '', 'app_wxid' => '', 'unionid' => '')); $userinfoM->upInfo(array('uid' => $this->uid), array('wxid' => $user['openid'], 'unionid' => $user['unionid'])); if ($this->usertype) { // 会员日志,记录手动绑定微信 $LogM = $this->MODEL('log'); $LogM->addMemberLog($this->uid, $this->usertype, 'WAP微信绑定成功'); } $this->wapheader('member/index.php?c=binding'); } else { $nick_url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $user['access_token'] . '&openid=' . $user['openid'] . '&lang=zh_CN'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $nick_url); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $response = curl_exec($ch); curl_close($ch); $user = json_decode($response, true); if ($user['nickname']) { $_SESSION['wx']['nickname'] = $user['nickname']; $_SESSION['wx']['pic'] = $user['headimgurl']; $urlarr = array('c' => 'wxconnect', 'a' => 'wxbind'); if (isset($_GET['wxoauth'])) { $urlarr['wxoauth'] = 1; } header("location:" . Url('wap', $urlarr)); } else { $this->ACT_msg(Url("wap"), "用户信息获取失败,请重新登录!", 8); } } } } } } else { $this->wapheader('member/'); } } function wxbind_action() { session_start(); if ($_POST) { if ($_SESSION['wx']['openid']) { $data = array( 'openid' => $_SESSION['wx']['openid'], 'unionid' => $_SESSION['wx']['unionid'], 'source' => 4, 'moblie' => $_POST['moblie'], 'moblie_code' => $_POST['moblie_code'], 'code' => $_POST['authcode'], 'port' => 2 ); $userinfoM = $this->MODEL('userinfo'); $return = $userinfoM->fastReg($data, '', 'weixin'); if ($return['errcode'] == 9) { $result['url'] = Url("wap") . 'member/'; } else { $result['msg'] = $return['msg']; } } else { $result['msg'] = '微信登录信息已失效,请重新登录!'; } echo json_encode($result); } else { $this->yunset('headertitle', '微信登录绑定'); $this->yunset('backurl', Url('wap', array('c' => 'login'))); $this->yuntpl(array('wap/wxbind')); } } //登录短信验证码发送 function sendmsg_action() { $noticeM = $this->MODEL('notice'); $result = $noticeM->jycheck($_POST['authcode'], '前台登录'); if (!empty($result)) { $this->layer_msg($result['msg'], 9, 0, '', 2, $result['error']); } $moblie = $_POST['moblie']; $UserinfoM = $this->MODEL('userinfo'); $userinfo = $UserinfoM->getInfo(array("moblie" => $moblie), array('field' => "`usertype`,`uid`")); if ($this->config['sy_reg_type'] == 2 && empty($userinfo)) { $result = array( 'error' => 2, 'msg' => '请先注册账号' ); }else { $user = array( 'uid' => $userinfo['uid'], 'usertype' => $userinfo['usertype'] ); $result = $noticeM->sendCode($moblie, 'login', 2, $user, 6, 90, 'msg'); } echo json_encode($result); exit(); } } ?>