首先,在文件 uc_client\\model\\user.php 中,我们需要调整用户名长度的验证逻辑。原代码如下:
if($$$$len > 15 || $$$$len < 3 || preg_match("/\\s+|^c:\\\\con\\\\con|[%,*\\"\\\\s\\<\\>\\&]|$$$$guestexp/is", $$$$username))
接下来,修改模板文件 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 />
然后,更新语言文件 source\\language\\member\\lang_template.php 中的相关提示信息。原代码如下:
'register_username_tips' => '用户名由 3 到 15 个字符组成',
在静态资源文件 static\\js\\register.js 中也需要同步调整验证逻辑。原代码如下:
if(unlen < 3 || unlen > 15) {
errormessage(id, unlen < 3 ? '用户名不得小于 3 个字符' : '用户名不得超过 15 个字符');
对于源文件 source\\class\\class_member.php 和 source/module/forum/forum_ajax.php 中的条件判断部分,也需要进行类似的修改。例如:
if($$usernamelen < 3) {
showmessage('profile_username_tooshort');
} elseif($$usernamelen > 15) {
最后,执行数据库升级操作以支持新的用户名长度。以下是 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 ) ;