·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

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

537 2
发表于 2020-7-7 09:46:07 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
以下代码中的数值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 ) ;
我要说一句 收起回复

评论2

Discuz智能体Lv.8 发表于 2025-3-20 04:43:49 | 查看全部
要修改Discuz!注册会员时用户名的长度限制,您需要按照以下步骤进行操作。假设您希望将用户名的最小长度设置为1,最大长度设置为40。

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

将 `15` 改为 `40`,将 `3` 改为 `1`:
  1. if($len > 40 || $len < 1 || preg_match("/\s+|^c:\\con\\con||$guestexp/is", $username))
复制代码


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

将 `3` 改为 `1`,将 `15` 改为 `40`:
  1. if(unlen < 1 || unlen > 40) {
  2.     errormessage(id, unlen < 1 ? '用户名不得小于 1 个字符' : '用户名不得超过 40 个字符');
  3. }
复制代码


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

将 `3` 改为 `1`,将 `15` 改为 `40`:
  1. 'register_username_tips' => '用户名由 1 到 40 个字符组成',
复制代码


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

将 `3` 改为 `1`,将 `15` 改为 `40`:
  1. if(unlen < 1 || unlen > 40) {
  2.     errormessage(id, unlen < 1 ? '用户名不得小于 1 个字符' : '用户名不得超过 40 个字符');
  3. }
复制代码


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

将 `3` 改为 `1`,将 `15` 改为 `40`:
  1. if($usernamelen < 1) {
  2.     showmessage('profile_username_tooshort');
  3. } elseif($usernamelen > 40) {
复制代码


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

将 `3` 改为 `1`,将 `15` 改为 `40`:
  1. if($usernamelen < 1) {
  2.     showmessage('profile_username_tooshort', '', array(), array('handle' => false));
  3. } elseif($usernamelen > 40) {
复制代码


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


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

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

通过以上步骤,您应该能够成功修改Discuz!注册会员时用户名的长度限制。如果有任何问题,欢迎继续咨询。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-20 04:46:42 | 查看全部
要修改Discuz!注册会员时用户名的长度限制,您需要按照以下步骤进行操作。假设您希望将用户名的最小长度设置为1,最大长度设置为40,以下是具体的修改步骤:

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

将 `15` 改为 `40`,将 `3` 改为 `1`:
  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`
找到以下代码:
  1. 'register_username_tips' => '用户名由 3 到 15 个字符组成',
复制代码

将其修改为:
  1. 'register_username_tips' => '用户名由 1 到 40 个字符组成',
复制代码


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

将 `3` 改为 `1`,将 `15` 改为 `40`:
  1. if(unlen < 1 || unlen > 40) {
  2.     errormessage(id, unlen < 1 ? '用户名不得小于 1 个字符' : '用户名不得超过 40 个字符');
  3. }
复制代码


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

将 `3` 改为 `1`,将 `15` 改为 `40`:
  1. if($usernamelen < 1) {
  2.     showmessage('profile_username_tooshort');
  3. } elseif($usernamelen > 40) {
复制代码


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

将 `3` 改为 `1`,将 `15` 改为 `40`:
  1. if($usernamelen < 1) {
  2.     showmessage('profile_username_tooshort', '', array(), array('handle' => false));
  3. } elseif($usernamelen > 40) {
复制代码


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


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

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

通过以上步骤,您应该能够成功修改Discuz!注册会员时用户名的长度限制。如果有任何问题,欢迎随时在DZ插件网(https://www.dz-x.net/)寻求帮助。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.145.83.240,GMT+8, 2025-5-9 14:38 , Processed in 0.591107 second(s), 76 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表