/** * 检查用户是否存在 * * @param strint $user 用户标识 uid|phone|uname|email * @return array * @author Medz Seven <*****@*****.**> **/ public function hasUser($user, $isUid = false) { if ($isUid) { $users = Models\User::existent()->audit()->byUid($user)->get(); } elseif (MedzValidator::isEmail($user)) { $users = Models\User::existent()->audit()->byEmail($user)->get(); } else { $users = Models\User::existent()->audit()->where('uid', '=', intval($user))->orWhere('uname', '=', EmojiFormat::en($user))->orWhere('phone', '=', EmojiFormat::en($user))->get(); } return $users; }
/** * 使用本地帐号登陆,无密码 * @param string $login 登录名称,邮箱或用户名 * @param boolean $is_remember_me 是否记录登录状态,默认为false * @return boolean 是否登录成功 */ public function loginLocalWithoutPassword($login, $is_remember_me = false) { $login = addslashes($login); if (empty($login)) { $this->error = L('PUBLIC_ACCOUNT_NOTEMPTY'); // 帐号不能为空 return false; } // if($this->isValidEmail($login)){ // $map = " (login='******' OR email='{$login}' ) AND is_del=0 "; // }else{ // $map = " (login='******' OR uname='{$login}' ) AND is_del=0 "; // } // # 判断是否是email if (MedzValidator::isEmail($login)) { $map = '`email` LIKE "' . $login . '" AND `is_del` = 0'; // # 判断是否是手机号码 } elseif (MedzValidator::isTelNumber($login)) { $map = '`phone` = ' . $login . ' AND `is_del` = 0'; // # 默认userName方式查询用户 } else { $map = '`uname` LIKE "' . $login . '" AND `is_del` = 0'; } $user = M('User')->where($map)->find(); if (!$user) { $this->error = L('PUBLIC_ACCOUNT_NOEXIST'); // 帐号不存在 return false; } return $user['uid'] > 0 ? $this->_recordLogin($user['uid'], $is_remember_me) : false; }
/** * 用户第三方帐号绑定情况 --using * * @return 第三方列表及是否绑定 */ public function user_bind() { // 可同步平台 $validPublish = array('sina', 'qq', 'qzone'); // 可绑定平台 $validAlias = array('sina' => '新浪微博', 'qzone' => 'QQ互联', 'weixin' => '微信'); $bind = M('login')->where('uid=' . $this->mid)->findAll(); // 用户已绑定数据 $config = model('AddonData')->lget('login'); // 检查可同步的平台的key值是否可用 foreach ($validAlias as $k => $v) { // 检查是否在后台config设置好 if (!in_array($k, $config['open']) && $k != 'weixin') { continue; } if (in_array($k, $validPublish)) { $can_sync = true; } else { $can_sync = false; } $is_bind = false; $is_sync = false; foreach ($bind as $value) { if ($value['type'] == $k) { $is_bind = true; } if ($value['type'] == $k && $value['is_sync']) { $is_sync = true; } if ($value['type'] == $k && $value['bind_time']) { $bind_time = $value['bind_time']; } if ($value['type'] == $k && $value['bind_user']) { $bind_user = $value['bind_user']; } } $bindInfo[] = array('type' => $k, 'name' => $validAlias[$k], 'isBind' => $is_bind ? 1 : 0); } // 手机号 $tel_bind[0]['type'] = 'phone'; $tel_bind[0]['name'] = '手机号'; $login = model('User')->where('uid=' . $this->mid)->field('phone')->getField('phone'); if (MedzValidator::isTelNumber($login)) { $tel_bind[0]['isBind'] = 1; } else { $tel_bind[0]['isBind'] = 0; } $bindInfo = array_merge($tel_bind, $bindInfo); return $bindInfo; }
/** * 检查Email地址是否合法 * * @return bool */ function isValidEmail($email) { return MedzValidator::isEmail($email); }