RegisterModel::isValidName PHP Method

isValidName() public method

验证昵称内容的正确性
public isValidName ( string $name, string $old_name = null ) : boolean
$name string 输入昵称的信息
$old_name string 原始昵称的信息
return boolean 是否验证成功
    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;
        }
        $user = \Ts\Models\User::existent()->byUserName($name)->first();
        if (!$old_name && $user) {
            $this->_error = '该用户名已经存在';
            return false;
        } elseif ($old_name) {
            $old_user = \Ts\Models\User::existent()->byUserName($old_name)->first();
            if ($name != $old_name && $old_user && $user && $old_user->uid != $user->uid) {
                $this->_error = '该用户名已经存在';
                return false;
            }
        }
        //敏感词
        if (filter_keyword($name) !== $name) {
            $this->_error = '抱歉,该昵称包含敏感词不允许被使用';
            return false;
        }
        return true;
    }