/** * 检查用户是否存在 * * @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 $name 输入昵称的信息 * @param string $old_name 原始昵称的信息 * @return bool 是否验证成功 */ public function isValidName($name, $old_name = null) { // 默认不准使用的昵称 $protected_name = array('name', 'uname', 'admin', 'profile', 'space'); $site_config = model('Xdata')->get('admin_Config:site'); !empty($site_config['sys_nickname']) && ($protected_name = array_merge($protected_name, explode(',', $site_config['sys_nickname']))); if (in_array($name, $protected_name)) { $this->_error = L('PUBLIC_NICKNAME_RESERVED'); // 抱歉,该昵称不允许被使用 return false; } //不能为手机号格式 $phone_reg = preg_match($this->_phone_reg, $name) !== 0; if ($phone_reg) { $this->_error = '用户名不能为手机号格式'; return false; } //其他格式 $res = preg_match($this->_name_reg, $name) !== 0; if ($res) { $length = get_str_length($name); $res = $length >= 2 && $length <= 10; if (!$res) { $this->_error = L('PUBLIC_NICKNAME_LIMIT', array('nums' => '2-10')); // 昵称长度必须在2-10个汉字之间 return false; } } else { $this->_error = '昵称仅支持中英文,数字,下划线'; return false; } $old_user = \Ts\Models\User::existent()->byUserName($old_name)->first(); $user = \Ts\Models\User::existent()->byUserName($name)->first(); if ($name != $old_name && $old_name && $user && $old_user->uid != $user->uid) { $this->_error = '该用户名已经存在。'; return false; } //敏感词 if (filter_keyword($name) !== $name) { $this->_error = '抱歉,该昵称包含敏感词不允许被使用'; return false; } return true; }