|
@@ -1,858 +0,0 @@
|
|
|
-<?php
|
|
|
-/**
|
|
|
- * 用户身份认证相关操作
|
|
|
- */
|
|
|
-
|
|
|
-defined('InShopNC') or exit('Access Invalid!');
|
|
|
-
|
|
|
-require_once(BASE_DATA_PATH . '/model/member.model.php');
|
|
|
-require_once(BASE_CORE_PATH . '/framework/libraries/sms.php');
|
|
|
-require_once(BASE_CORE_PATH . '/framework/function/core.php');
|
|
|
-
|
|
|
-require_once(BASE_HELPER_PATH . '/sms_helper.php');
|
|
|
-require_once(BASE_HELPER_PATH . '/field_helper.php');
|
|
|
-require_once(BASE_HELPER_PATH . '/session_helper.php');
|
|
|
-require_once(BASE_HELPER_PATH . '/relation_helper.php');
|
|
|
-require_once(BASE_HELPER_PATH . '/account_helper.php');
|
|
|
-require_once(BASE_HELPER_PATH . '/session.php');
|
|
|
-require_once(BASE_HELPER_PATH . '/login_helper.php');
|
|
|
-
|
|
|
-//登录,获取验证码,注册
|
|
|
-class loginControl extends mobileHomeControl
|
|
|
-{
|
|
|
- const mobile_login = 1;
|
|
|
- const wxopen_login = 2;
|
|
|
- const wxunion_login = 3;
|
|
|
-
|
|
|
- //客户登录身份类型
|
|
|
- protected $client_login_type_array = [0, 1, 2];
|
|
|
- private static $fields = 'member_id,member_mobile,member_wxunionid,member_wxopenid,member_name,member_truename,member_signname,' .
|
|
|
- 'member_nickname,member_avatar,member_sex,member_birthday,member_passwd,member_paypwd,member_email,member_mobile_bind,member_state';
|
|
|
-
|
|
|
- public function __construct()
|
|
|
- {
|
|
|
- parent::__construct();
|
|
|
- }
|
|
|
-
|
|
|
- public function statusOp()
|
|
|
- {
|
|
|
- if (session_helper::logined()) {
|
|
|
- session::instance()->set_cookie(session_helper::session_id());
|
|
|
- account_helper::onStatus(session_helper::memberid());
|
|
|
- return self::outsuccess($this->ret_value());
|
|
|
- } else {
|
|
|
- $fcode = new user_session\fcode();
|
|
|
- $fcode->onStatus();
|
|
|
- return self::outsuccess($this->ret_value());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private function ret_value()
|
|
|
- {
|
|
|
- $has_mobile = empty($_SESSION['member_mobile']) ? false : true;
|
|
|
- if (!$has_mobile) {
|
|
|
- $has_mobile = session_helper::has_regmobile();
|
|
|
- }
|
|
|
-
|
|
|
- $has_author = empty($_SESSION['member_wxunionid']) ? false : true;
|
|
|
- if (!$has_author) {
|
|
|
- $has_author = wechat_helper::has_userinfo();
|
|
|
- }
|
|
|
-
|
|
|
- $ret = ['ismember' => $has_mobile, 'isauthor' => $has_author, //for前向兼容
|
|
|
- 'hasmobile' => $has_mobile, 'hasauthor' => $has_author,
|
|
|
- 'member_id' => session_helper::memberid(),
|
|
|
- 'userinfo' => $this->userinfo()];
|
|
|
- return $ret;
|
|
|
- }
|
|
|
-
|
|
|
- private function userinfo()
|
|
|
- {
|
|
|
- $result = [];
|
|
|
- $result['member_avatar'] = session_helper::avatar();
|
|
|
- $result['member_mobile'] = session_helper::mobile();
|
|
|
- $result['member_nickname'] = session_helper::nickname();
|
|
|
- $result['member_sex'] = session_helper::sex();
|
|
|
- $result['qrcode'] = session_helper::qrcode();
|
|
|
-
|
|
|
- return $result;
|
|
|
- }
|
|
|
-
|
|
|
- public function wxauthorOp()
|
|
|
- {
|
|
|
- if (session_helper::logined()) {
|
|
|
- return self::outsuccess($this->ret_value());
|
|
|
- }
|
|
|
-
|
|
|
- $user_info = $_GET['user_info'];
|
|
|
- if (empty($user_info)) {
|
|
|
- return self::outerr(errcode::ErrParamter, "上传的用户信息为空.");
|
|
|
- }
|
|
|
-
|
|
|
- $user_info = json_decode($user_info, true);
|
|
|
- if (empty($user_info)) {
|
|
|
- return self::outerr(errcode::ErrParamter, "上传的用户信息为空.");
|
|
|
- }
|
|
|
-
|
|
|
- //cur-> wx
|
|
|
- $unionid_loginner = new login\open_userinfo_log($user_info);
|
|
|
- if ($unionid_loginner->ismember())
|
|
|
- {
|
|
|
- if ($unionid_loginner->binded_mobile())
|
|
|
- {
|
|
|
- //pre-> mobile
|
|
|
- if (session_helper::has_regmobile()) {
|
|
|
- $mobile = session_helper::get_regmobile();
|
|
|
-
|
|
|
- $mobile_loginner = new login\mobile_log($mobile);
|
|
|
- if ($mobile_loginner->ismember()) {
|
|
|
- $mobile_loginner->bind($user_info, $mobile);
|
|
|
- $mobile_loginner->login();
|
|
|
- } else {
|
|
|
- $unionid_loginner->bind($user_info, $mobile); //前向兼容很久前用openid登录情况。
|
|
|
- $unionid_loginner->login();
|
|
|
- }
|
|
|
- } else {
|
|
|
- $unionid_loginner->bind($user_info);
|
|
|
- $unionid_loginner->login();
|
|
|
- }
|
|
|
- account_helper::onLogin(session_helper::memberid());
|
|
|
- }
|
|
|
- elseif (session_helper::has_regmobile())
|
|
|
- { //pre-> mobile
|
|
|
- $mobile = session_helper::get_regmobile();
|
|
|
-
|
|
|
- $mobile_loginner = new login\mobile_log($mobile);
|
|
|
- if ($mobile_loginner->ismember()) {
|
|
|
- $mobile_loginner->bind($user_info, $mobile);
|
|
|
- $mobile_loginner->login();
|
|
|
- } else {
|
|
|
- $unionid_loginner->bind($user_info, $mobile); //前向兼容很久前用openid登录情况。
|
|
|
- $unionid_loginner->login();
|
|
|
- }
|
|
|
-
|
|
|
- account_helper::onLogin(session_helper::memberid());
|
|
|
- session_helper::clear_regmobile();
|
|
|
- wechat_helper::clear_userinfo();
|
|
|
- }
|
|
|
- else {
|
|
|
- wechat_helper::set_userinfo($user_info);
|
|
|
- }
|
|
|
- }
|
|
|
- elseif (session_helper::has_regmobile())
|
|
|
- {
|
|
|
- $mobile = session_helper::get_regmobile();
|
|
|
- $mobile_loginner = new login\mobile_log($mobile);
|
|
|
-
|
|
|
- if ($mobile_loginner->ismember()) {
|
|
|
- $mobile_loginner->bind($user_info);
|
|
|
- $mobile_loginner->login();
|
|
|
- } else {
|
|
|
- $unionid_loginner->register($user_info, session_helper::relay_id(), $mobile);
|
|
|
- $unionid_loginner->login();
|
|
|
- account_helper::onRegister(session_helper::memberid(), session_helper::relay_id());
|
|
|
- session_helper::clear_regmobile();
|
|
|
- wechat_helper::clear_userinfo();
|
|
|
- }
|
|
|
- account_helper::onLogin(session_helper::memberid());
|
|
|
- }
|
|
|
- else {
|
|
|
- wechat_helper::set_userinfo($user_info);
|
|
|
- }
|
|
|
-
|
|
|
- return self::outsuccess($this->ret_value());
|
|
|
- }
|
|
|
-
|
|
|
- public function skipOp()
|
|
|
- {
|
|
|
- if (session_helper::has_regmobile()) {
|
|
|
- $mobile = session_helper::get_regmobile();
|
|
|
- session_helper::clear_regmobile();
|
|
|
- }
|
|
|
- if (wechat_helper::has_userinfo()) {
|
|
|
- $user_info = wechat_helper::get_userinfo();
|
|
|
- wechat_helper::clear_userinfo();
|
|
|
- }
|
|
|
-
|
|
|
- if (!empty($mobile)) {
|
|
|
- $loginner = new login\mobile_log($mobile);
|
|
|
- if ($loginner->ismember()) {
|
|
|
- $loginner->login();
|
|
|
- } else {
|
|
|
- $loginner->register([], session_helper::relay_id(), $mobile);
|
|
|
- $loginner->login();
|
|
|
- account_helper::onRegister(session_helper::memberid(), session_helper::relay_id());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (!empty($user_info)) {
|
|
|
- $loginner = new login\open_userinfo_log($user_info);
|
|
|
- if ($loginner->ismember()) {
|
|
|
- $loginner->login();
|
|
|
- } else {
|
|
|
- $loginner->register($user_info, session_helper::relay_id(), '');
|
|
|
- $loginner->login();
|
|
|
- account_helper::onRegister(session_helper::memberid(), session_helper::relay_id());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return self::outsuccess($this->ret_value());
|
|
|
- }
|
|
|
-
|
|
|
- private function decrypt($sesskey, $input, $iv)
|
|
|
- {
|
|
|
- $aesKey = base64_decode($sesskey);
|
|
|
- $aesIV = base64_decode($iv);
|
|
|
- $aesCipher = base64_decode($input);
|
|
|
- $decrypt = openssl_decrypt($aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
|
|
|
- $data = json_decode($decrypt, true);
|
|
|
-
|
|
|
- $appid = MiniPay\WxPayConfig::APPID;
|
|
|
- if (empty($data) || $data['watermark']['appid'] != $appid) {
|
|
|
- return false;
|
|
|
- } else {
|
|
|
- return $data;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private function decrypt_userinfo($sesskey, $input, $iv)
|
|
|
- {
|
|
|
- $data = $this->decrypt($sesskey, $input, $iv);
|
|
|
- if ($data !== false) {
|
|
|
- $result = [];
|
|
|
- $result['nickname'] = $data['nickName'];
|
|
|
- $result['unionid'] = $data['unionId'];
|
|
|
- $result['openid'] = $data['openId'];
|
|
|
- $result['headimgurl'] = $data['avatarUrl'];
|
|
|
- $result['sex'] = $data['gender'];
|
|
|
- return $result;
|
|
|
- } else {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private function cast_userinfo($input)
|
|
|
- {
|
|
|
- if (!empty($input)) {
|
|
|
- $result = [];
|
|
|
- $result['nickname'] = $input['nickname'];
|
|
|
- $result['unionid'] = $input['unionid'];
|
|
|
- $result['openid'] = $input['openid'];
|
|
|
- $result['headimgurl'] = $input['avatarUrl'];
|
|
|
- $result['sex'] = $input['gender'];
|
|
|
- return $result;
|
|
|
- } else {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private function decrypt_phone($sesskey, $input, $iv)
|
|
|
- {
|
|
|
- $data = $this->decrypt($sesskey, $input, $iv);
|
|
|
- if ($data !== false) {
|
|
|
- return [$data['countryCode'], $data['purePhoneNumber']];
|
|
|
- } else {
|
|
|
- return ['', ''];
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //给迷你小程序使用add
|
|
|
- public function wxauthenOp()
|
|
|
- {
|
|
|
- if(session_helper::client_type() == session_helper::device_mini && session_helper::version_code() > 168) {
|
|
|
- $user_info = $_GET['user_info'];
|
|
|
- $user_info = urldecode(base64_decode($user_info));
|
|
|
- Log::record("{$user_info}",Log::DEBUG);
|
|
|
- $phone_info = '';
|
|
|
- }
|
|
|
- else {
|
|
|
- $user_info = $_GET['user_info'];
|
|
|
- $phone_info = $_GET['phone_info'];
|
|
|
- }
|
|
|
-
|
|
|
- $channel = intval($_GET['channel']);
|
|
|
- if (empty($user_info)) {
|
|
|
- return self::outerr(errcode::ErrParamter, "上传的用户信息为空.");
|
|
|
- }
|
|
|
-
|
|
|
- Log::record("userinfo={$user_info}", Log::DEBUG);
|
|
|
- $user_info = json_decode($user_info, true);
|
|
|
- if (empty($user_info)) {
|
|
|
- $err = json_last_error_msg();
|
|
|
- Log::record("{$err}",Log::ERR);
|
|
|
- return self::outerr(errcode::ErrParamter, "上传的用户信息为空.");
|
|
|
- }
|
|
|
-
|
|
|
- if (!array_key_exists('unionid', $user_info)) {
|
|
|
- $sesskey = wechat_helper::mini_sesskey();
|
|
|
- Log::record("sesskey={$sesskey}", Log::DEBUG);
|
|
|
- $user_info = $this->decrypt_userinfo($sesskey, $user_info['encryptedData'], $user_info['iv']);
|
|
|
- if ($user_info == false) {
|
|
|
- return self::outerr(errcode::ErrParamter, "上传的用户信息为空.");
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- $user_info = $this->cast_userinfo($user_info);
|
|
|
- }
|
|
|
-
|
|
|
- $phone = '';
|
|
|
- if (!empty($phone_info)) {
|
|
|
- $phone_info = json_decode($phone_info, true);
|
|
|
- $sesskey = wechat_helper::mini_sesskey();
|
|
|
- [$country_code, $phone] = $this->decrypt_phone($sesskey, $phone_info['encryptedData'], $phone_info['iv']);
|
|
|
- }
|
|
|
-
|
|
|
- $uid_login = new login\open_userinfo_log($user_info);
|
|
|
- if (session_helper::logined()) {
|
|
|
- $mid_login = new login\memberid_log(session_helper::memberid());
|
|
|
- $mid_login->bind($user_info, $phone);
|
|
|
- $mid_login->login();
|
|
|
- account_helper::onLogin(session_helper::memberid());
|
|
|
- }
|
|
|
- elseif ($uid_login->ismember()) {
|
|
|
- $uid_login->bind($user_info,$phone);
|
|
|
- $uid_login->login();
|
|
|
- account_helper::onLogin(session_helper::memberid());
|
|
|
- }
|
|
|
- else {
|
|
|
- $uid_login->register($user_info, session_helper::relay_id(), session_helper::mobile(),$channel);
|
|
|
- $uid_login->login();
|
|
|
- account_helper::onRegister(session_helper::memberid(), session_helper::relay_id(),$channel);
|
|
|
- session_helper::clear_regmobile();
|
|
|
- wechat_helper::clear_userinfo();
|
|
|
- }
|
|
|
-
|
|
|
- return self::outsuccess($this->ret_value());
|
|
|
- }
|
|
|
-
|
|
|
- public function wxbind_phoneOp()
|
|
|
- {
|
|
|
- $phone_info = $_GET['phone_info'];
|
|
|
- if(session_helper::client_type() == session_helper::device_mini && session_helper::version_code() > 168) {
|
|
|
- $phone_info = urldecode(base64_decode($phone_info));
|
|
|
- }
|
|
|
- Log::record("phone_info:{$phone_info}",Log::DEBUG);
|
|
|
-
|
|
|
- if(session_helper::logined())
|
|
|
- {
|
|
|
- if (!empty($phone_info)) {
|
|
|
- $phone_info = json_decode($phone_info, true);
|
|
|
- $sesskey = wechat_helper::mini_sesskey();
|
|
|
- [$country_code, $phone] = $this->decrypt_phone($sesskey, $phone_info['encryptedData'], $phone_info['iv']);
|
|
|
- Log::record("{$country_code}:{$phone}",Log::DEBUG);
|
|
|
-
|
|
|
- $mid_login = new login\memberid_log(session_helper::memberid());
|
|
|
- $mid_login->bind('', $phone);
|
|
|
- $mid_login->login();
|
|
|
- account_helper::onLogin(session_helper::memberid());
|
|
|
- return self::outsuccess($this->ret_value());
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- session::instance()->destroy();
|
|
|
- return self::outsuccess(NULL);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public function ministartOp()
|
|
|
- {
|
|
|
- $code = $_GET['code'];
|
|
|
- if (empty($code)) return self::outerr(errcode::ErrParamter);
|
|
|
-
|
|
|
- $appid = MiniPay\WxPayConfig::APPID;
|
|
|
- $app_secret = MiniPay\WxPayConfig::APPSECRET;
|
|
|
-
|
|
|
- $url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$app_secret}&js_code={$code}&grant_type=authorization_code";
|
|
|
- $resp = http_request($url);
|
|
|
-
|
|
|
- if ($resp == false) {
|
|
|
- return self::outerr(errcode::ErrLogin);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- $body = json_decode($resp, true);
|
|
|
- Log::record("{$resp}", Log::DEBUG);
|
|
|
- if (isset($body['errcode'])) {
|
|
|
- return self::outerr(errcode::ErrApptype, "获取appid失败");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (array_key_exists('session_key', $body)) {
|
|
|
- wechat_helper::setmini_sesskey($body['session_key']);
|
|
|
- Log::record("session_key = {$body['session_key']}");
|
|
|
- }
|
|
|
- $share = $this->mini_share();
|
|
|
- $body['share_title'] = $share['share_title'];
|
|
|
- $body['share_image'] = $share['share_image'];
|
|
|
-
|
|
|
- session::instance()->set_cookie($_SESSION['MPHPSESSID']);
|
|
|
- $body['HPHPSESSID'] = $_SESSION['MPHPSESSID'];
|
|
|
- return self::outsuccess($body);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private function mini_share()
|
|
|
- {
|
|
|
- $title = '我刚在这里充值了,平台直接优惠了40元,很不错,你也试试.';
|
|
|
- $image = RESOURCE_SITE_URL . "/mobile/xyz/xyzshare.png";
|
|
|
-
|
|
|
- return ['share_title' => $title, 'share_image' => $image];
|
|
|
- }
|
|
|
-
|
|
|
- private function is_special($mobile, $code)
|
|
|
- {
|
|
|
- if ($mobile == '13700000000' && $code == '1111') {
|
|
|
- return true;
|
|
|
- } elseif ($mobile == '13800000000' && $code == '1111') {
|
|
|
- return true;
|
|
|
- } elseif ($mobile == '13900000000' && $code == '1111') {
|
|
|
- return true;
|
|
|
- } else {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public function login_codeOp()
|
|
|
- {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public function bind_mobilexOp()
|
|
|
- {
|
|
|
- if (session_helper::logined()) {
|
|
|
- return self::outsuccess($this->ret_value());
|
|
|
- }
|
|
|
-
|
|
|
- $mobile = trim($_GET['mobile']);
|
|
|
- $code = trim($_GET['code']);
|
|
|
-
|
|
|
- //一些平台测试账户,特殊处理
|
|
|
- if ($this->is_special($mobile, $code)) {
|
|
|
- if (login_helper::onBinded($mobile, 0)) {
|
|
|
- return self::outsuccess($this->ret_value());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 输入内容判断
|
|
|
- $validator = new Validator();
|
|
|
- $validator->setValidate(Validator::verify_mobile($mobile));
|
|
|
- $validator->setValidate(Validator::verify_smscode($code));
|
|
|
- $err = $validator->validate();
|
|
|
- if ($err != '') {
|
|
|
- return self::outerr(errcode::ErrInputParam, $err);
|
|
|
- }
|
|
|
- // 校验验证码
|
|
|
- $ret = sms_helper::check_code(sms_helper::register, $code, $mobile);
|
|
|
- if (is_array($ret)) {
|
|
|
- return self::outerr($ret['code'], $ret['msg']);
|
|
|
- }
|
|
|
-
|
|
|
- //绑定逻辑,以微信Unionid优先级为高。
|
|
|
- //cur-> mobile
|
|
|
- $mobile_loginner = new login\mobile_log($mobile);
|
|
|
- if ($mobile_loginner->ismember())
|
|
|
- {
|
|
|
- if ($mobile_loginner->binded_wechat())
|
|
|
- {
|
|
|
- //pre->wx
|
|
|
- if (wechat_helper::has_userinfo())
|
|
|
- {
|
|
|
- $user_info = wechat_helper::get_userinfo();
|
|
|
-
|
|
|
- $union_logginer = new login\open_userinfo_log($user_info);
|
|
|
- if ($union_logginer->ismember()) {
|
|
|
- $union_logginer->bind([], $mobile);
|
|
|
- $union_logginer->login();
|
|
|
- } else {
|
|
|
- $mobile_loginner->bind(wechat_helper::get_userinfo());
|
|
|
- $mobile_loginner->login();
|
|
|
- }
|
|
|
- session_helper::clear_regmobile();
|
|
|
- wechat_helper::clear_userinfo();
|
|
|
- } else {
|
|
|
- $mobile_loginner->login();
|
|
|
- }
|
|
|
- account_helper::onLogin(session_helper::memberid());
|
|
|
- }
|
|
|
- elseif (wechat_helper::has_userinfo())
|
|
|
- {
|
|
|
- $user_info = wechat_helper::get_userinfo();
|
|
|
- $union_logginer = new login\open_userinfo_log($user_info);
|
|
|
- if ($union_logginer->ismember()) {
|
|
|
- $union_logginer->bind([], $mobile);
|
|
|
- $union_logginer->login();
|
|
|
- } else {
|
|
|
- $mobile_loginner->bind(wechat_helper::get_userinfo());
|
|
|
- $mobile_loginner->login();
|
|
|
- }
|
|
|
-
|
|
|
- account_helper::onLogin(session_helper::memberid());
|
|
|
- session_helper::clear_regmobile();
|
|
|
- wechat_helper::clear_userinfo();
|
|
|
- }
|
|
|
- else {
|
|
|
- session_helper::set_regmobile($mobile);
|
|
|
- }
|
|
|
- }
|
|
|
- elseif (wechat_helper::has_userinfo()) //pre->wx
|
|
|
- {
|
|
|
- $user_info = wechat_helper::get_userinfo();
|
|
|
-
|
|
|
- $union_logginer = new login\open_userinfo_log($user_info);
|
|
|
- if ($union_logginer->ismember()) {
|
|
|
- $union_logginer->bind([], $mobile);
|
|
|
- $union_logginer->login();
|
|
|
- } else {
|
|
|
- $mobile_loginner->register($user_info, session_helper::relay_id(), $mobile);
|
|
|
- $mobile_loginner->login();
|
|
|
- account_helper::onRegister($mobile_loginner->memberid(), session_helper::relay_id());
|
|
|
- }
|
|
|
-
|
|
|
- account_helper::onLogin(session_helper::memberid());
|
|
|
- session_helper::clear_regmobile();
|
|
|
- wechat_helper::clear_userinfo();
|
|
|
- }
|
|
|
- else {
|
|
|
- session_helper::set_regmobile($mobile);
|
|
|
- }
|
|
|
-
|
|
|
- return self::outsuccess($this->ret_value());
|
|
|
- }
|
|
|
-
|
|
|
- public function bind_mobileOp()
|
|
|
- {
|
|
|
- $mobile = trim($_GET['mobile']);
|
|
|
- $code = trim($_GET['code']);
|
|
|
-
|
|
|
- if ($this->is_special($mobile, $code)) {
|
|
|
- if (login_helper::onBinded($mobile, 0)) {
|
|
|
- return self::outsuccess($this->ret_value());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 输入内容判断
|
|
|
- $validator = new Validator();
|
|
|
- $validator->setValidate(Validator::verify_mobile($mobile));
|
|
|
- $validator->setValidate(Validator::verify_smscode($code));
|
|
|
- $err = $validator->validate();
|
|
|
- if ($err != '') {
|
|
|
- return self::outerr(errcode::ErrInputParam, $err);
|
|
|
- }
|
|
|
-
|
|
|
- // 校验验证码
|
|
|
- $ret = sms_helper::check_code(sms_helper::register, $code, $mobile);
|
|
|
- if (is_array($ret)) {
|
|
|
- return self::outerr($ret['code'], $ret['msg']);
|
|
|
- }
|
|
|
-
|
|
|
- if (login_helper::onBinded($mobile, session_helper::relay_id())) {
|
|
|
- return self::outsuccess($this->ret_value());
|
|
|
- } else {
|
|
|
- return self::outerr(errcode::ErrDB, "对不起,系统出现错误:(");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public function getcodexOp()
|
|
|
- {
|
|
|
- if (empty(session_helper::session_id())) {
|
|
|
- return self::outerr(errcode::ErrParamter);
|
|
|
- }
|
|
|
-
|
|
|
- if (session_helper::isapp() == false && util::from_wechat() == false) {
|
|
|
- if ($_POST['escape'] !== 'code') {
|
|
|
- return self::outerr(errcode::ErrParamter);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- $mobile = trim($_POST['mobile']);
|
|
|
- $type = trim($_POST['type']);
|
|
|
-
|
|
|
- $validator = new Validator();
|
|
|
- $validator->setValidate(Validator::verify_mobile($mobile));
|
|
|
- $err = $validator->validate();
|
|
|
- if ($err != '') {
|
|
|
- return self::outerr(errcode::ErrParamter, $err);
|
|
|
- }
|
|
|
-
|
|
|
- $sms = new sms_helper();
|
|
|
- $ret = $sms->send($mobile, $type);
|
|
|
-
|
|
|
- if ($ret['code'] == 200) {
|
|
|
- $items = Model('member')->getBindedMemberByMobile($mobile);
|
|
|
- if (empty($items)) {
|
|
|
- $isMember = false;
|
|
|
- } else {
|
|
|
- $isMember = true;
|
|
|
- }
|
|
|
- return self::outsuccess(['is_member' => $isMember]);
|
|
|
- } else {
|
|
|
- return self::outerr($ret['code'], $ret['msg']);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
- public function loginOp()
|
|
|
- {
|
|
|
- if ($_SESSION['is_login'] == '1') { //检查是否已经登录
|
|
|
- return self::outsuccess(['member_id' => $_SESSION['member_id'], 'HPHPSESSID' => $_SESSION['MPHPSESSID']]);
|
|
|
- }
|
|
|
-
|
|
|
- $type = intval(trim($_POST['type']));
|
|
|
- if (!isset($type) || !in_array($type, $this->client_login_type_array)) {
|
|
|
- return self::outerr(errcode::ErrParamter, 'type error.');
|
|
|
- } else {
|
|
|
- $_SESSION['login_type'] = $type;
|
|
|
- }
|
|
|
-
|
|
|
- $validate = new Validator();
|
|
|
- if ($type == self::mobile_login) {
|
|
|
- $openid = trim($_POST['mobile']);
|
|
|
- $password = trim($_POST['passwd']);
|
|
|
- $validate->setValidate(Validator::verify_mobile($openid));
|
|
|
- $validate->setValidate(Validator::verify_password($password));
|
|
|
- } else {
|
|
|
- $openid = trim($_POST['openid']);
|
|
|
- $validate->setValidate(Validator::verify_openid($openid));
|
|
|
- }
|
|
|
-
|
|
|
- $error = $validate->validate();
|
|
|
- if ($error != '') {
|
|
|
- return self::outerr(errcode::ErrParamter, $error);
|
|
|
- }
|
|
|
-
|
|
|
- $model_member = Model('member');
|
|
|
- $member_info = $this->getMemberInfoEx($model_member, $openid, $type, $password);
|
|
|
-
|
|
|
- if (is_array($member_info) and !empty($member_info))
|
|
|
- {
|
|
|
- if (!$member_info['member_state']) {
|
|
|
- return self::outerr(errcode::ErrAccountStop);
|
|
|
- }
|
|
|
- }
|
|
|
- elseif ($type == self::wxopen_login) { //如果是开放平台帐号,此处先需要注册
|
|
|
- return self::outerr(errcode::ErrWxNotExist);
|
|
|
- } else {
|
|
|
- return self::outerr(errcode::ErrUserOrPass, "该手机号码未注册或者密码错误");
|
|
|
- }
|
|
|
-
|
|
|
- $model_member->createSession($member_info);
|
|
|
- Model('cart')->mergecart($member_info, $_SESSION['store_id']);
|
|
|
- Model('goods_browse')->mergebrowse($_SESSION['member_id'], $_SESSION['store_id']);
|
|
|
-
|
|
|
- account_helper::onLogin($_SESSION['member_id']);
|
|
|
- session::instance()->set_cookie($_SESSION['MPHPSESSID']);
|
|
|
- return self::outsuccess(['member_id' => $_SESSION['member_id'], 'HPHPSESSID' => $_SESSION['MPHPSESSID']]);
|
|
|
- }
|
|
|
-
|
|
|
- private function getMemberInfoEx($model_member, $openid, $type, $passwd = '')
|
|
|
- {
|
|
|
- $conditions = [];
|
|
|
- if ($type == self::mobile_login) {
|
|
|
- $conditions['member_mobile'] = $openid;
|
|
|
- $conditions['member_passwd'] = md5($passwd);
|
|
|
- } elseif ($type == self::wxopen_login) {
|
|
|
- $conditions['member_wxopenid'] = $openid;
|
|
|
- } else {
|
|
|
- return NULL;
|
|
|
- }
|
|
|
-
|
|
|
- $ret = $model_member->getMemberInfo($conditions, self::$fields);
|
|
|
- $member_info = session_helper::filter_member_info($ret, $openid);
|
|
|
-
|
|
|
- return $member_info;
|
|
|
- }
|
|
|
-
|
|
|
- public function getcodeOp()
|
|
|
- {
|
|
|
- if (empty(session_helper::session_id())) {
|
|
|
- return self::outerr(errcode::ErrParamter);
|
|
|
- }
|
|
|
-
|
|
|
- $mobile = trim($_POST['mobile']);
|
|
|
- $type = trim($_POST['type']);
|
|
|
-
|
|
|
- $validator = new Validator();
|
|
|
- $validator->setValidate(Validator::verify_mobile($mobile));
|
|
|
- $err = $validator->validate();
|
|
|
- if ($err != '') {
|
|
|
- return self::outerr(errcode::ErrParamter, $err);
|
|
|
- }
|
|
|
-
|
|
|
- $sms = new sms_helper();
|
|
|
- $ret = $sms->send_code($mobile, $type);
|
|
|
-
|
|
|
- if ($ret['code'] == 200) {
|
|
|
- return self::outsuccess(NULL);
|
|
|
- } else {
|
|
|
- return self::outerr($ret['code'], $ret['msg']);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
- public function registerOp()
|
|
|
- {
|
|
|
- if ($_SESSION['is_login'] == 1) {
|
|
|
- return self::outerr(errcode::ErrHasLogined, '登录后,不能注册新用户.');
|
|
|
- }
|
|
|
-
|
|
|
- $mobile = trim($_POST['mobile']);
|
|
|
- $password = trim($_POST['passwd']);
|
|
|
- $code = trim($_POST['code']);
|
|
|
-
|
|
|
- $validator = new Validator();
|
|
|
- $validator->setValidate(Validator::verify_mobile($mobile));
|
|
|
- $validator->setValidate(Validator::verify_password($password));
|
|
|
- $validator->setValidate(Validator::verify_smscode($code));
|
|
|
- $err = $validator->validate();
|
|
|
- if ($err != '') {
|
|
|
- return self::outerr(errcode::ErrParamter, $err);
|
|
|
- }
|
|
|
- $ret = sms_helper::check_code(sms_helper::register, $code, $mobile);
|
|
|
- if (is_array($ret)) {
|
|
|
- return self::outerr($ret['code'], $ret['msg']);
|
|
|
- }
|
|
|
-
|
|
|
- $model = Model('member');
|
|
|
- $ret = $model->getBindedMemberByMobile($mobile);
|
|
|
- if (!empty($ret)) {
|
|
|
- return self::outerr(errcode::ErrUserExisted, "用户已经存在.");
|
|
|
- } else {
|
|
|
- $member_info = ['member_mobile' => $mobile,
|
|
|
- 'member_type' => self::mobile_login,
|
|
|
- 'member_passwd' => $password,
|
|
|
- 'member_sex' => 0,
|
|
|
- 'member_name' => $mobile,
|
|
|
- 'member_nickname' => substr_replace($mobile, '****', 3, 4),
|
|
|
- 'member_mobile_bind' => 1];
|
|
|
-
|
|
|
- $insert_id = $model->addMember($member_info);
|
|
|
- if ($insert_id == false) {
|
|
|
- return self::outerr(errcode::ErrRegister);
|
|
|
- } else {
|
|
|
- $member_info = $model->getMemberInfoByID($insert_id);
|
|
|
-
|
|
|
- $model->createSession($member_info);
|
|
|
- Model('cart')->mergecart($member_info, $_SESSION['store_id']);
|
|
|
- Model('goods_browse')->mergebrowse($_SESSION['member_id'], $_SESSION['store_id']);
|
|
|
- account_helper::onRegister($_SESSION['member_id'], session_helper::relay_id());
|
|
|
- session::instance()->set_cookie($_SESSION['MPHPSESSID']);
|
|
|
- return self::outsuccess(['member_id' => $_SESSION['member_id'], 'HPHPSESSID' => $_SESSION['MPHPSESSID']]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public function resetpassOp()
|
|
|
- {
|
|
|
- $mobile = trim($_POST['mobile']);
|
|
|
- $password = trim($_POST['passwd']);
|
|
|
- $code = trim($_POST['code']);
|
|
|
-
|
|
|
- $validator = new Validator();
|
|
|
- $validator->setValidate(Validator::verify_mobile($mobile));
|
|
|
- $validator->setValidate(Validator::verify_password($password));
|
|
|
- $validator->setValidate(Validator::verify_smscode($code));
|
|
|
- $err = $validator->validate();
|
|
|
- if ($err != '') {
|
|
|
- return self::outerr(errcode::ErrParamter, $err);
|
|
|
- }
|
|
|
-
|
|
|
- $ret = sms_helper::check_code(sms_helper::resetpass, $code, $mobile);
|
|
|
- if (is_array($ret)) {
|
|
|
- return self::outerr($ret['code'], $ret['msg']);
|
|
|
- }
|
|
|
-
|
|
|
- $model = Model('member');
|
|
|
- $ret = $model->editMember(['member_mobile' => $mobile], ['member_passwd' => md5($password)]);
|
|
|
- if ($ret == false || $model->affected_rows() <= 0) {
|
|
|
- $ret = $model->getBindedMemberByMobile($mobile);
|
|
|
- if (empty($ret)) {
|
|
|
- return self::outerr(errcode::ErrMemberNotExist, "该手机号未注册");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return self::outsuccess(NULL);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 微信注册登录
|
|
|
- * wx_openid 微信id
|
|
|
- * user_info: 用户信息
|
|
|
- * mobile: 手机号
|
|
|
- * code: 验证码
|
|
|
- */
|
|
|
- public function bindOp()
|
|
|
- {
|
|
|
- $wx_openid = trim($_GET['wx_openid']);
|
|
|
- $mobile = trim($_GET['mobile']);
|
|
|
- $code = trim($_GET['code']);
|
|
|
-
|
|
|
- // 输入内容判断
|
|
|
- $validator = new Validator();
|
|
|
- $validator->setValidate(Validator::verify_mobile($mobile));
|
|
|
- $validator->setValidate(Validator::verify_openid($wx_openid));
|
|
|
- $validator->setValidate(Validator::verify_smscode($code));
|
|
|
- $err = $validator->validate();
|
|
|
- if ($err != '') {
|
|
|
- return self::outerr(errcode::ErrInputParam, $err);
|
|
|
- }
|
|
|
-
|
|
|
- // 校验验证码
|
|
|
- $ret = sms_helper::check_code(sms_helper::register, $code, $mobile);
|
|
|
- if (is_array($ret)) {
|
|
|
- return self::outerr($ret['code'], $ret['msg']);
|
|
|
- }
|
|
|
-
|
|
|
- // 判断是否处理
|
|
|
- $model = Model('member');
|
|
|
- $ret = $model->getBindedMemberByMobile($mobile);
|
|
|
- if (empty($ret))
|
|
|
- {
|
|
|
- $passwd = $_POST['passwd'];
|
|
|
- $validator = new Validator();
|
|
|
- $validator->setValidate(Validator::verify_password($passwd));
|
|
|
- $err = $validator->validate();
|
|
|
- if ($err != '') {
|
|
|
- return self::outerr(errcode::ErrInputParam, $err);
|
|
|
- }
|
|
|
- $member_info = ['member_mobile' => $mobile,
|
|
|
- 'member_type' => self::mobile_login,
|
|
|
- 'member_passwd' => $passwd,
|
|
|
- 'member_sex' => 0,
|
|
|
- 'member_name' => $mobile,
|
|
|
- 'member_nickname' => substr_replace($mobile, '****', 3, 4),
|
|
|
- 'member_mobile_bind' => 1];
|
|
|
- $member_id = $model->addMember($member_info);
|
|
|
-
|
|
|
- if (!isset($member_id) || $member_id == false) {
|
|
|
- return self::outerr(errcode::ErrMemberNotExist);
|
|
|
- } else {
|
|
|
- account_helper::onRegister($member_id, session_helper::relay_id());
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- $member_id = $ret['member_id'];
|
|
|
- }
|
|
|
-
|
|
|
- $update_arr = [];
|
|
|
- $info = session_helper::parase_wxinfo($_GET['user_info']);
|
|
|
- if ($info == false) {
|
|
|
- $update_arr['member_wxopenid'] = $wx_openid;
|
|
|
- } else {
|
|
|
- $update_arr['member_wxopenid'] = $wx_openid;
|
|
|
- $update_arr = array_merge($update_arr, $info);
|
|
|
- }
|
|
|
-
|
|
|
- $ret = $model->editMember(['member_id' => $member_id], $update_arr);
|
|
|
- if (!$ret) {
|
|
|
- return self::outerr(errcode::ErrDB);
|
|
|
- } else {
|
|
|
- $info = $model->getMemberInfoByID($member_id);
|
|
|
- $model->createSession($info);
|
|
|
- Model('cart')->mergecart($info, $_SESSION['store_id']);
|
|
|
- Model('goods_browse')->mergebrowse($_SESSION['member_id'], $_SESSION['store_id']);
|
|
|
- session::instance()->set_cookie($_SESSION['MPHPSESSID']);
|
|
|
- return self::outsuccess(['member_id' => $_SESSION['member_id'], 'HPHPSESSID' => $_SESSION['MPHPSESSID']]);
|
|
|
- }
|
|
|
- }
|
|
|
-}
|