Discuz!注册会员时用户名长度限制的解决方法
以下代码中的数值3改成自己想要的最小长度如1,15改成自己想要的最大长度如401、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!注册会员时用户名的长度限制,您需要按照以下步骤进行操作。假设您希望将用户名的最小长度设置为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!注册会员时用户名的长度限制,您需要按照以下步骤进行操作。假设您希望将用户名的最小长度设置为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]