Discuz3.2版本 修改注册用户名长度限制

Discuz默认的15个字符太短了,从别的系统同步过来用户名都无法插入到数据库啊,下面是修改的记录,把15的地方改成需要的就行了,这里改成45。

⚠️:下面的文件名,可能大小写不一样,如果找不到就去那个目录下搜搜类似的文件看看,汉字和字符的区别注意下

主要分为代码和数据2个部分,小小的需求改动还蛮大的。

代码部分

1、 source/class/class_member.php 输入验证修改,搜索关键词 usernamelen

} elseif($usernamelen > 15) {                                   showmessage('profile_username_toolong');
}

把15修改成45

2、 source/language/lang_message.php 提示语的验证部分,搜索关键词 profile_username_toolong, 然后根据需要修改

'profile_username_toolong' => '抱歉,您的用户名超过 15 个字符,请输入一个较短的用户名',

3、 source/language/mobile/lang_template.php 修改页面模版, 搜索关键词 reg_usernameregisterinputtip 修改对应的文字

'registerinputtip' => '用户名:3-15位',

4、source/module/forum/forum_ajax.php(Forum_ajax.php) 修改ajax表单验证,搜索关键词 usernamelen

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

5、uc_client/model/user.php 搜索关键词 check_username

 function check_username($username) {
                $guestexp = '\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
                $len = $this->dstrlen($username);
                if($len > 15 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is", $username)) {
                        return FALSE;
                } else {
                        return TRUE;
                }
        }

6、static/js/register.js 搜索关键词 unlen

 var unlen = username.replace(/[^\x00-\xff]/g, "**").length;
        if(unlen < 3 || unlen > 15) {
                errormessage(id, unlen < 3 ? '用户名不得小于 3 个字符' : '用户名不得超过 15 个字符');
                return;
        }

判断和错误提示都要改

7、template/default/member/register.htm 125行左右

setting['reginput']['username']}" name="" class="px" tabindex="1" value="{echo dhtmlspecialchars($_GET[defaultusername])}" autocomplete="off" size="25" maxlength="15" required="">

修改maxlength的值

数据库部分

代码改完了,还有数据库啊(看到论坛很多帖子都没提这事,也不知道他们自己做过没有),可以到数据库自行查询下,username字段的类型是 char(15)

DESC pre_ucenter_members;  
DESC pre_common_member;

要改的表比这多很多的哈,如果长度不同,只要放到文本编辑器中,使用编辑器进行全局替换就能得到想要的SQL喽

ALTER TABLE `pre_ucenter_members` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_common_member` MODIFY COLUMN `username`  VARCHAR(45);

ALTER TABLE `pre_common_adminnote` MODIFY COLUMN `admin`  VARCHAR(45);
ALTER TABLE `pre_common_banned` MODIFY COLUMN `admin`  VARCHAR(45);
ALTER TABLE `pre_common_diy_data` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_common_grouppm` MODIFY COLUMN `author`  VARCHAR(45);
ALTER TABLE `pre_common_member_crime` MODIFY COLUMN `operator`  VARCHAR(45);
ALTER TABLE `pre_common_member_validate` MODIFY COLUMN `admin`  VARCHAR(45);
ALTER TABLE `pre_common_mytask` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_common_report` MODIFY COLUMN `username`  VARCHAR(45), MODIFY COLUMN `opname`  VARCHAR(45);
ALTER TABLE `pre_common_session` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_common_word` MODIFY COLUMN `admin`  VARCHAR(45);
ALTER TABLE `pre_common_card_log` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_common_failedlogin` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_common_invite` MODIFY COLUMN `fusername`  VARCHAR(45);
ALTER TABLE `pre_common_member_verify_info` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_forum_announcement` MODIFY COLUMN `author`  VARCHAR(45);
ALTER TABLE `pre_forum_collection` MODIFY COLUMN `username`  VARCHAR(45),MODIFY COLUMN `lastposter`  VARCHAR(45);
ALTER TABLE `pre_forum_collectioncomment` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_forum_collectionfollow` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_forum_collectionteamworker` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_forum_creditslog` MODIFY COLUMN `fromto`  VARCHAR(45);
ALTER TABLE `pre_forum_forumrecommend` MODIFY COLUMN `author`  VARCHAR(45);
ALTER TABLE `pre_forum_groupuser` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_forum_order` MODIFY COLUMN `admin`  VARCHAR(45);
ALTER TABLE `pre_forum_pollvoter` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_forum_post` MODIFY COLUMN `author`  VARCHAR(45);
ALTER TABLE `pre_forum_postcomment` MODIFY COLUMN `author`  VARCHAR(45);
ALTER TABLE `pre_forum_promotion` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_forum_ratelog` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_forum_rsscache` MODIFY COLUMN `author`  VARCHAR(45);
ALTER TABLE `pre_forum_thread` MODIFY COLUMN `author`  VARCHAR(45),MODIFY COLUMN `lastposter`  VARCHAR(45);
ALTER TABLE `pre_forum_threadmod` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_forum_trade` MODIFY COLUMN `seller`  VARCHAR(45),MODIFY COLUMN `lastbuyer`  VARCHAR(45);
ALTER TABLE `pre_forum_tradecomment` MODIFY COLUMN `rater`  VARCHAR(45),MODIFY COLUMN `ratee`  VARCHAR(45);
ALTER TABLE `pre_forum_tradelog` MODIFY COLUMN `seller`  VARCHAR(45),MODIFY COLUMN `buyer`  VARCHAR(45);
ALTER TABLE `pre_forum_warning` MODIFY COLUMN `operator`  VARCHAR(45),MODIFY COLUMN `author`  VARCHAR(45);
ALTER TABLE `pre_home_album` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_home_blog` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_home_clickuser` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_home_comment` MODIFY COLUMN `author`  VARCHAR(45);
ALTER TABLE `pre_home_docomment` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_home_doing` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_home_feed` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_home_feed_app` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_home_follow` MODIFY COLUMN `username`  VARCHAR(45),MODIFY COLUMN `fusername`  VARCHAR(45);
ALTER TABLE `pre_home_follow_feed` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_home_follow_feed_archiver` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_home_friend` MODIFY COLUMN `fusername`  VARCHAR(45);
ALTER TABLE `pre_home_friend_request` MODIFY COLUMN `fusername`  VARCHAR(45);
ALTER TABLE `pre_home_notification` MODIFY COLUMN `author`  VARCHAR(45);
ALTER TABLE `pre_home_pic` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_home_poke` MODIFY COLUMN `fromusername`  VARCHAR(45);
ALTER TABLE `pre_home_share` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_home_show` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_home_specialuser` MODIFY COLUMN `username`  VARCHAR(45),MODIFY COLUMN `opusername`  VARCHAR(45);
ALTER TABLE `pre_home_visitor` MODIFY COLUMN `vusername`  VARCHAR(45);
ALTER TABLE `pre_portal_rsscache` MODIFY COLUMN `author`  VARCHAR(45);
ALTER TABLE `pre_portal_topic_pic` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_ucenter_admins` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_ucenter_badwords` MODIFY COLUMN `admin`  VARCHAR(45);
ALTER TABLE `pre_ucenter_feeds` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_ucenter_mergemembers` MODIFY COLUMN `username`  VARCHAR(45);
ALTER TABLE `pre_ucenter_protectedmembers` MODIFY COLUMN `username`  VARCHAR(45),MODIFY COLUMN `admin`  VARCHAR(45);

改完之后要清除缓存
参考 http://sell.moe/discuz最新修改注册用户名长度限制.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值