登录注册
M.O.S.S
M.O.S.S 管理员 Lv4常客创始人
#2

可以修改源代码,一共三个文件,修改前务必备份,最好在本地搭建测试站点先测试:
1、# core/auth.php

修改前:

function username_valid(string $name): bool
{
    [$min, $max] = username_rule();
    return (bool)preg_match('/^[A-Za-z0-9][A-Za-z0-9_.-]{' . ($min - 1) . ',' . ($max - 1) . '}$/', $name);
}

修改后:

function username_valid(string $name): bool
{
    [$min, $max] = username_rule();
    return (bool)preg_match('/^[\p{Han}A-Za-z0-9][\p{Han}A-Za-z0-9_.-]{' . ($min - 1) . ',' . ($max - 1) . '}$/u', $name);
}

2、# core/auth.php
此段代码为注册页面文字说明,改完需同步修改lang/zh-cn.php语言包文件内t()字段
改前:

function username_rule_text(): string
{
    [$min, $max] = username_rule();
    return t('Username must be %1$d-%2$d characters: letters, numbers, dot, dash or underscore.', $min, $max);
}

改后:

function username_rule_text(): string
{
    [$min, $max] = username_rule();
    return t('Username must be %1$d-%2$d characters: Chinese characters, letters, numbers, dot, dash or underscore.', $min, $max);
}

3、# view/register.php
改前:

<input type="text" name="username" value="<?= h($values['username']) ?>" required autofocus minlength="<?= h((string)$umin) ?>" maxlength="<?= h((string)$umax) ?>" autocomplete="username" pattern="[A-Za-z0-9][A-Za-z0-9_.\-]{<?= h((string)($umin - 1)) ?>,<?= h((string)($umax - 1)) ?>}">

改后:

<input type="text" name="username" value="<?= h($values['username']) ?>" required autofocus minlength="<?= h((string)$umin) ?>" maxlength="<?= h((string)$umax) ?>" autocomplete="username">

4、# view/settings.php
改前:

<?= form_row(t('Username'), input('username', (string)$user['username'], ['maxlength' => 30, 'pattern' => '[A-Za-z0-9][A-Za-z0-9_.-]{1,29}']), user_rename_next($user) > now() ? t('You can change your username again on %s.', date('Y-m-d', user_rename_next($user))) : t('Letters, numbers, dot, dash or underscore. Links to your old profile name keep working.')) ?>

改后:

<?= form_row(t('Username'), input('username', (string)$user['username'], ['maxlength' => 30]), user_rename_next($user) > now() ? t('You can change your username again on %s.', date('Y-m-d', user_rename_next($user))) : t('Chinese characters, letters, numbers, dot, dash or underscore. Links to your old profile name keep working.')) ?>

5、# 确认数据库 username / username_lower 字符集为utf8mb4编码。

W
wfdaj Lv1新人
#3

建议开启论坛昵称功能,不然用户名链接不好处理。

发表回复

支持 Markdown。 ·
6 + 9 =
改为登录