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_username
和 registerinputtip
修改对应的文字
'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