|
@@ -31,28 +31,61 @@ class loginControl extends mobileHomeControl
|
|
|
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()
|
|
|
- {
|
|
|
+ public function __construct() {
|
|
|
parent::__construct();
|
|
|
}
|
|
|
|
|
|
public function statusOp()
|
|
|
{
|
|
|
if (session_helper::logined()) {
|
|
|
- session::instance()->set_cookie($_SESSION['MPHPSESSID']);
|
|
|
- account_helper::onStatus($_SESSION['member_id']);
|
|
|
- return self::outsuccess(['member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID'],'userinfo' => $this->userinfo()]);
|
|
|
+ session::instance()->set_cookie(session_helper::session_id());
|
|
|
+ account_helper::onStatus(session_helper::memberid());
|
|
|
+ return self::outsuccess($this->ret_value());
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
+ else {
|
|
|
$fcode = new user_session\fcode();
|
|
|
$fcode->onStatus();
|
|
|
- return self::outsuccess(NULL);
|
|
|
+ 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 = wx_userinfo::has_userinfo();
|
|
|
+ }
|
|
|
+
|
|
|
+ $ret = ['ismember' => $has_mobile, 'isauthor' => $has_author, //for前向兼容
|
|
|
+ 'hasmobile' => $has_mobile, 'hasauthor'=> $has_author,
|
|
|
+ 'member_id' => session_helper::memberid(),
|
|
|
+ 'HPHPSESSID' => session_helper::session_id(),
|
|
|
+ 'userinfo' => $this->userinfo()];
|
|
|
+ return $ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ private function userinfo()
|
|
|
+ {
|
|
|
+ $result = [];
|
|
|
+ $result['member_avatar'] = session_helper::avatar();
|
|
|
+ $result['member_mobile'] = session_helper::cur_mobile();
|
|
|
+ $result['member_nickname'] = session_helper::nickname();
|
|
|
+ $result['member_sex'] = session_helper::sex();
|
|
|
+
|
|
|
+ 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, "上传的用户信息为空.");
|
|
@@ -63,52 +96,86 @@ class loginControl extends mobileHomeControl
|
|
|
return self::outerr(errcode::ErrParamter, "上传的用户信息为空.");
|
|
|
}
|
|
|
|
|
|
- if(session_helper::logined())
|
|
|
+ //cur-> wx
|
|
|
+ $unionid_loginner = new login\open_userinfo_log($user_info);
|
|
|
+ if($unionid_loginner->ismember())
|
|
|
{
|
|
|
- $loginner = new login\open_userinfo_log($user_info);
|
|
|
- if($loginner->ismember())
|
|
|
+ if($unionid_loginner->has_mobile())
|
|
|
{
|
|
|
- if(session_helper::memberid() == $loginner->memberid())
|
|
|
+ //pre-> mobile
|
|
|
+ if(session_helper::has_regmobile())
|
|
|
{
|
|
|
- return self::outsuccess(array('ismember' => true,'isauthor' => true,
|
|
|
- 'member_id' => $_SESSION['member_id'],
|
|
|
- 'HPHPSESSID' => $_SESSION['MPHPSESSID'],'userinfo' => $this->userinfo()));
|
|
|
+ $mobile = session_helper::get_regmobile();
|
|
|
+
|
|
|
+ $mobile_loginner = new login\mobile_log($mobile);
|
|
|
+ if($mobile_loginner->ismember()) {
|
|
|
+ $unionid_loginner->unbind_userinfo();
|
|
|
+ $unionid_loginner->unbind_mobile();
|
|
|
+ $mobile_loginner->bind($user_info,$mobile);
|
|
|
+ $mobile_loginner->login();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $unionid_loginner->bind($user_info,$mobile); //前向兼容很久前用openid登录情况。
|
|
|
+ $unionid_loginner->login();
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- $loginner->unbind();
|
|
|
+ $unionid_loginner->bind($user_info);
|
|
|
+ $unionid_loginner->login();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //pre-> mobile
|
|
|
+ if(session_helper::has_regmobile())
|
|
|
+ {
|
|
|
+ $mobile = session_helper::get_regmobile();
|
|
|
+
|
|
|
+ $mobile_loginner = new login\mobile_log($mobile);
|
|
|
+ if($mobile_loginner->ismember()) {
|
|
|
+ $unionid_loginner->unbind_userinfo();
|
|
|
+ $mobile_loginner->bind($user_info,$mobile);
|
|
|
+ $mobile_loginner->login();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $unionid_loginner->bind($user_info,$mobile); //前向兼容很久前用openid登录情况。
|
|
|
+ $unionid_loginner->login();
|
|
|
+ }
|
|
|
+
|
|
|
+ session_helper::clear_regmobile();
|
|
|
+ wx_userinfo::clear_wxinfo();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ wx_userinfo::set_userinfo($user_info);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- $id_loginer = new login\memberid_log(session_helper::memberid());
|
|
|
- $id_loginer->bind($user_info,false);
|
|
|
- $id_loginer->login();
|
|
|
- return self::outsuccess(['ismember' => true,'isauthor' => true,
|
|
|
- 'member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID'],
|
|
|
- 'userinfo' => $this->userinfo()]);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- $loginner = new login\open_userinfo_log($user_info);
|
|
|
- if($loginner->ismember()) {
|
|
|
- $loginner->bind($user_info,false);
|
|
|
- $loginner->login();
|
|
|
- return self::outsuccess(['ismember' => true,'isauthor' => true,
|
|
|
- 'member_id' => $_SESSION['member_id'],
|
|
|
- 'HPHPSESSID' => $_SESSION['MPHPSESSID'],
|
|
|
- 'userinfo' => $this->userinfo()]);
|
|
|
- }
|
|
|
- else
|
|
|
+ if(session_helper::has_regmobile())
|
|
|
{
|
|
|
- $loginner->register($user_info,session_helper::relay_id());
|
|
|
+ $mobile = session_helper::get_regmobile();
|
|
|
+ $mobile_loginner = new login\mobile_log($mobile);
|
|
|
|
|
|
- $user_info['openid'] = '';
|
|
|
- $_SESSION['wx_author']['user_info'] = $user_info;
|
|
|
- $_SESSION['wx_author']['handled'] = false;
|
|
|
+ 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();
|
|
|
|
|
|
- return self::outsuccess(['ismember' => false,'isauthor' => true]);
|
|
|
+ session_helper::clear_regmobile();
|
|
|
+ wx_userinfo::clear_wxinfo();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ wx_userinfo::set_userinfo($user_info);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ return self::outsuccess($this->ret_value());
|
|
|
}
|
|
|
|
|
|
private function is_special($mobile,$code)
|
|
@@ -126,18 +193,21 @@ class loginControl extends mobileHomeControl
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
- public function bind_mobileOp()
|
|
|
+
|
|
|
+ public function bind_mobilexOp()
|
|
|
{
|
|
|
+ if(session_helper::logined()) {
|
|
|
+ return self::outsuccess($this->ret_value());
|
|
|
+ }
|
|
|
+
|
|
|
$mobile = trim($_GET['mobile']);
|
|
|
- $code = trim($_GET['code']);
|
|
|
+ $code = trim($_GET['code']);
|
|
|
|
|
|
+ //一些平台测试账户,特殊处理
|
|
|
if($this->is_special($mobile,$code))
|
|
|
{
|
|
|
- if(login_helper::onBinded($mobile,$code,0,false))
|
|
|
- {
|
|
|
- return self::outsuccess(['ismember' => true,'isauthor' => true,
|
|
|
- 'member_id' => $_SESSION['member_id'],
|
|
|
- 'HPHPSESSID' => $_SESSION['MPHPSESSID'],'userinfo' => $this->userinfo()]);
|
|
|
+ if(login_helper::onBinded($mobile,$code,0,false)) {
|
|
|
+ return self::outsuccess($this->ret_value());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -149,40 +219,128 @@ class loginControl extends mobileHomeControl
|
|
|
if ($err != '') {
|
|
|
return self::outerr(errcode::ErrInputParam,$err);
|
|
|
}
|
|
|
-
|
|
|
// 校验验证码
|
|
|
$ret = sms_helper::check_code(Sms::register_code,$code,$mobile);
|
|
|
if(is_array($ret)) {
|
|
|
return self::outerr($ret['code'], $ret['msg']);
|
|
|
}
|
|
|
|
|
|
- $loginner = new login\mobile_log($mobile);
|
|
|
- if($loginner->ismember()) {
|
|
|
+ //cur-> mobile
|
|
|
+ $mobile_loginner = new login\mobile_log($mobile);
|
|
|
+ if($mobile_loginner->ismember())
|
|
|
+ {
|
|
|
+ if($mobile_loginner->wxauthored())
|
|
|
+ {
|
|
|
+ //pre->wx
|
|
|
+ if(wx_userinfo::has_userinfo())
|
|
|
+ {
|
|
|
+ $user_info = wx_userinfo::userinfo();
|
|
|
+
|
|
|
+ $union_logginer = new login\open_userinfo_log($user_info);
|
|
|
+ if($union_logginer->ismember()) {
|
|
|
+ $mobile_loginner->unbind_mobile();
|
|
|
+ $mobile_loginner->unbind_userinfo();
|
|
|
+
|
|
|
+ $union_logginer->bind([],$mobile);
|
|
|
+ $union_logginer->login();
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ $mobile_loginner->bind(wx_userinfo::userinfo());
|
|
|
+ $mobile_loginner->login();
|
|
|
+ }
|
|
|
+ session_helper::clear_regmobile();
|
|
|
+ wx_userinfo::clear_wxinfo();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $mobile_loginner->login();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //pre->wx
|
|
|
+ if(wx_userinfo::has_userinfo())
|
|
|
+ {
|
|
|
+ $user_info = wx_userinfo::userinfo();
|
|
|
+
|
|
|
+ $union_logginer = new login\open_userinfo_log($user_info);
|
|
|
+ if($union_logginer->ismember()) {
|
|
|
+ $mobile_loginner->unbind_mobile();
|
|
|
+ $union_logginer->bind([],$mobile);
|
|
|
+ $union_logginer->login();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $mobile_loginner->bind(wx_userinfo::userinfo());
|
|
|
+ $mobile_loginner->login();
|
|
|
+ }
|
|
|
+ session_helper::clear_regmobile();
|
|
|
+ wx_userinfo::clear_wxinfo();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ session_helper::set_regmobile($mobile);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //pre->wx
|
|
|
+ if(wx_userinfo::has_userinfo())
|
|
|
+ {
|
|
|
+ $user_info = wx_userinfo::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();
|
|
|
+ }
|
|
|
+ session_helper::clear_regmobile();
|
|
|
+ wx_userinfo::clear_wxinfo();
|
|
|
+ }
|
|
|
+ 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,$code,0,false)) {
|
|
|
+ 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);
|
|
|
}
|
|
|
- else {
|
|
|
|
|
|
+ // 校验验证码
|
|
|
+ $ret = sms_helper::check_code(Sms::register_code,$code,$mobile);
|
|
|
+ if(is_array($ret)) {
|
|
|
+ return self::outerr($ret['code'], $ret['msg']);
|
|
|
}
|
|
|
|
|
|
if(login_helper::onBinded($mobile,$code,session_helper::relay_id(),false)) {
|
|
|
- $isauthor = empty($_SESSION['member_wxunionid']) ? false : true;
|
|
|
- return self::outsuccess(['ismember' => true,'isauthor' => $isauthor,'member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID'],'userinfo' => $this->userinfo()]);
|
|
|
+ return self::outsuccess($this->ret_value());
|
|
|
} else {
|
|
|
return self::outerr(errcode::ErrDB,"对不起,系统出现错误:(");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private function userinfo()
|
|
|
- {
|
|
|
- $result = [];
|
|
|
- $result['member_avatar'] = session_helper::avatar();
|
|
|
- $result['member_mobile'] = session_helper::cur_mobile();
|
|
|
- $result['member_nickname'] = session_helper::nickname();
|
|
|
- $result['member_sex'] = session_helper::sex();
|
|
|
-
|
|
|
- return $result;
|
|
|
- }
|
|
|
-
|
|
|
public function getcodexOp()
|
|
|
{
|
|
|
$mobile = trim($_POST['mobile']);
|
|
@@ -269,22 +427,6 @@ class loginControl extends mobileHomeControl
|
|
|
return self::outsuccess(array('member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID']));
|
|
|
}
|
|
|
|
|
|
- private function register_open($model_member,$type,$openid)
|
|
|
- {
|
|
|
- if($type == self::wxopen_login)
|
|
|
- {
|
|
|
- $id = $model_member->insert(array('member_wxopenid' => $openid));
|
|
|
- if($id > 0) {
|
|
|
- return $this->getMemberInfoEx($model_member,$openid,$type);
|
|
|
- } else {
|
|
|
- return NULL;
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- return NULL;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
private function getMemberInfoEx($model_member,$openid, $type, $passwd = '')
|
|
|
{
|
|
|
$conditions = array();
|