IT618发布 发表于 2020-7-7 09:46:07

Discuz!注册会员时用户名长度限制的解决方法

以下代码中的数值3改成自己想要的最小长度如1,15改成自己想要的最大长度如40

1、uc_client\model\user.php

if($len > 15 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is", $username))

2、template\default\member\register.htm

<input type="text" id="{$this->setting['reginput']['username']}" name="" class="px" tabindex="1" autocomplete="off" size="25" maxlength="15" required />

3、source\language\member\lang_template.php

'register_username_tips' => '用户名由 3 到 15 个字符组成',

4、static\js\register.js

if(unlen < 3 || unlen > 15) {
errormessage(id, unlen < 3 ? '用户名不得小于 3 个字符' : '用户名不得超过 15 个字符');

5、source\class\class_member.php

if($usernamelen < 3) {
   showmessage('profile_username_tooshort');
} elseif($usernamelen > 15) {

6、source/module/forum/forum_ajax.php

if($usernamelen < 3) {
showmessage('profile_username_tooshort', '', array(), array('handle' => false));
} elseif($usernamelen > 15) {

7、升级数据库(只对关键字段进行升级,基本满足正常使用了),本例中最大长度修改为40

ALTER TABLE`pre_common_member` CHANGE`username``username` CHAR( 40 ) ;
ALTER TABLE`pre_home_blog` CHANGE`username``username` CHAR( 40 ) ;
ALTER TABLE`pre_ucenter_members` CHANGE`username``username` CHAR( 40 ) ;
ALTER TABLE`pre_ucenter_mergemembers` CHANGE`username``username` CHAR( 40 ) ;
ALTER TABLE`pre_ucenter_feeds` CHANGE`username``username` CHAR( 40 ) ;
ALTER TABLE`pre_forum_post` CHANGE`author``author` CHAR( 40 ) ;
ALTER TABLE`pre_forum_thread` CHANGE`author``author` CHAR( 40 ) ;
ALTER TABLE`pre_home_album` CHANGE`username``username` CHAR( 40 ) ;
ALTER TABLE`pre_forum_announcement` CHANGE`author``author` CHAR( 40 ) ;
ALTER TABLE`pre_forum_groupuser` CHANGE`username``username` CHAR( 40 ) ;

Discuz智能体 发表于 2025-3-20 04:43:49

要修改Discuz!注册会员时用户名的长度限制,您需要按照以下步骤进行操作。假设您希望将用户名的最小长度设置为1,最大长度设置为40。

### 1. 修改 `uc_client/model/user.php`
找到以下代码:
if($len > 15 || $len < 3 || preg_match("/\s+|^c:\\con\\con||$guestexp/is", $username))
将 `15` 改为 `40`,将 `3` 改为 `1`:
if($len > 40 || $len < 1 || preg_match("/\s+|^c:\\con\\con||$guestexp/is", $username))

### 2. 修改 `template/default/member/register.htm`
在模板文件中找到相关的JavaScript验证代码,通常会有类似以下的代码:
if(unlen < 3 || unlen > 15) {
    errormessage(id, unlen < 3 ? '用户名不得小于 3 个字符' : '用户名不得超过 15 个字符');
}
将 `3` 改为 `1`,将 `15` 改为 `40`:
if(unlen < 1 || unlen > 40) {
    errormessage(id, unlen < 1 ? '用户名不得小于 1 个字符' : '用户名不得超过 40 个字符');
}

### 3. 修改 `source/language/member/lang_template.php`
找到以下代码:
'register_username_tips' => '用户名由 3 到 15 个字符组成',
将 `3` 改为 `1`,将 `15` 改为 `40`:
'register_username_tips' => '用户名由 1 到 40 个字符组成',

### 4. 修改 `static/js/register.js`
找到以下代码:
if(unlen < 3 || unlen > 15) {
    errormessage(id, unlen < 3 ? '用户名不得小于 3 个字符' : '用户名不得超过 15 个字符');
}
将 `3` 改为 `1`,将 `15` 改为 `40`:
if(unlen < 1 || unlen > 40) {
    errormessage(id, unlen < 1 ? '用户名不得小于 1 个字符' : '用户名不得超过 40 个字符');
}

### 5. 修改 `source/class/class_member.php`
找到以下代码:
if($usernamelen < 3) {
    showmessage('profile_username_tooshort');
} elseif($usernamelen > 15) {
将 `3` 改为 `1`,将 `15` 改为 `40`:
if($usernamelen < 1) {
    showmessage('profile_username_tooshort');
} elseif($usernamelen > 40) {

### 6. 修改 `source/module/forum/forum_ajax.php`
找到以下代码:
if($usernamelen < 3) {
    showmessage('profile_username_tooshort', '', array(), array('handle' => false));
} elseif($usernamelen > 15) {
将 `3` 改为 `1`,将 `15` 改为 `40`:
if($usernamelen < 1) {
    showmessage('profile_username_tooshort', '', array(), array('handle' => false));
} elseif($usernamelen > 40) {

### 7. 升级数据库
为了确保数据库能够存储更长的用户名,您需要修改相关表的字段长度。执行以下SQL语句:
ALTER TABLE `pre_common_member` CHANGE `username` `username` CHAR(40);
ALTER TABLE `pre_home_blog` CHANGE `username` `username` CHAR(40);
ALTER TABLE `pre_ucenter_members` CHANGE `username` `username` CHAR(40);
ALTER TABLE `pre_ucenter_mergemembers` CHANGE `username` `username` CHAR(40);
ALTER TABLE `pre_ucenter_feeds` CHANGE `username` `username` CHAR(40);
ALTER TABLE `pre_forum_post` CHANGE `author` `author` CHAR(40);
ALTER TABLE `pre_forum_thread` CHANGE `author` `author` CHAR(40);
ALTER TABLE `pre_home_album` CHANGE `username` `username` CHAR(40);
ALTER TABLE `pre_forum_announcement` CHANGE `author` `author` CHAR(40);
ALTER TABLE `pre_forum_groupuser` CHANGE `username` `username` CHAR(40);

### 8. 清除缓存
修改完成后,请务必在Discuz!后台清除缓存,以确保修改生效。

### 注意事项
- 修改数据库字段长度时,请确保备份数据库,以防出现意外情况。
- 修改代码时,请确保代码的语法正确,避免引入新的错误。
- 如果您的站点有自定义模板或插件,可能需要额外检查这些地方是否也需要修改。

通过以上步骤,您应该能够成功修改Discuz!注册会员时用户名的长度限制。如果有任何问题,欢迎继续咨询。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-20 04:46:42

要修改Discuz!注册会员时用户名的长度限制,您需要按照以下步骤进行操作。假设您希望将用户名的最小长度设置为1,最大长度设置为40,以下是具体的修改步骤:

### 1. 修改 `uc_client/model/user.php`
找到以下代码:
if($len > 15 || $len < 3 || preg_match("/\s+|^c:\\con\\con||$guestexp/is", $username))
将 `15` 改为 `40`,将 `3` 改为 `1`:
if($len > 40 || $len < 1 || preg_match("/\s+|^c:\\con\\con||$guestexp/is", $username))

### 2. 修改 `template/default/member/register.htm`
在模板文件中找到用户名输入框的相关代码,通常会有一些提示信息。您可以根据需要修改提示信息,确保提示信息与新的长度限制一致。

### 3. 修改 `source/language/member/lang_template.php`
找到以下代码:
'register_username_tips' => '用户名由 3 到 15 个字符组成',
将其修改为:
'register_username_tips' => '用户名由 1 到 40 个字符组成',

### 4. 修改 `static/js/register.js`
找到以下代码:
if(unlen < 3 || unlen > 15) {
    errormessage(id, unlen < 3 ? '用户名不得小于 3 个字符' : '用户名不得超过 15 个字符');
}
将 `3` 改为 `1`,将 `15` 改为 `40`:
if(unlen < 1 || unlen > 40) {
    errormessage(id, unlen < 1 ? '用户名不得小于 1 个字符' : '用户名不得超过 40 个字符');
}

### 5. 修改 `source/class/class_member.php`
找到以下代码:
if($usernamelen < 3) {
    showmessage('profile_username_tooshort');
} elseif($usernamelen > 15) {
将 `3` 改为 `1`,将 `15` 改为 `40`:
if($usernamelen < 1) {
    showmessage('profile_username_tooshort');
} elseif($usernamelen > 40) {

### 6. 修改 `source/module/forum/forum_ajax.php`
找到以下代码:
if($usernamelen < 3) {
    showmessage('profile_username_tooshort', '', array(), array('handle' => false));
} elseif($usernamelen > 15) {
将 `3` 改为 `1`,将 `15` 改为 `40`:
if($usernamelen < 1) {
    showmessage('profile_username_tooshort', '', array(), array('handle' => false));
} elseif($usernamelen > 40) {

### 7. 升级数据库
为了确保数据库能够存储更长的用户名,您需要修改相关表的字段长度。以下是SQL语句示例:
ALTER TABLE `pre_common_member` CHANGE `username` `username` CHAR(40);
ALTER TABLE `pre_home_blog` CHANGE `username` `username` CHAR(40);
ALTER TABLE `pre_ucenter_members` CHANGE `username` `username` CHAR(40);
ALTER TABLE `pre_ucenter_mergemembers` CHANGE `username` `username` CHAR(40);
ALTER TABLE `pre_ucenter_feeds` CHANGE `username` `username` CHAR(40);
ALTER TABLE `pre_forum_post` CHANGE `author` `author` CHAR(40);
ALTER TABLE `pre_forum_thread` CHANGE `author` `author` CHAR(40);
ALTER TABLE `pre_home_album` CHANGE `username` `username` CHAR(40);
ALTER TABLE `pre_forum_announcement` CHANGE `author` `author` CHAR(40);
ALTER TABLE `pre_forum_groupuser` CHANGE `username` `username` CHAR(40);

### 8. 清除缓存
修改完成后,请务必在Discuz!后台清除缓存,以确保修改生效。

### 注意事项
- 在修改数据库字段长度时,请确保备份数据库,以防出现意外情况。
- 修改代码时,请确保代码的语法正确,避免引入新的错误。
- 如果您使用的是第三方模板或插件,可能需要额外检查这些模板或插件是否对用户名长度有额外的限制。

通过以上步骤,您应该能够成功修改Discuz!注册会员时用户名的长度限制。如果有任何问题,欢迎随时在DZ插件网(https://www.dz-x.net/)寻求帮助。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: Discuz!注册会员时用户名长度限制的解决方法