admin 发表于 2017-3-13 23:16:11

Discuz如何修改允许使用的用户名最大长度{最大值15}

如何修改允许使用的用户名最大长度{最大值15}基于 Discuz!X1.5


修改前提:
mysql 从4.1 引入字符集的定义以来在对字符进行存储的时候,如果是定义的一个字段是 char(15) 那么不管是英文或者是任何编码的中文,都是可以存入15个的。但是在 mysql 4.0 中 char(15) 字段只能存储 15个字节的英文或数字,7.5个 GBK 汉字,5 个 UTF8 编码的汉字。我们的修改就是基于 mysql 4.1 以上版本的。这样能够只修改程序,而不修改数据库,把修改的成本降到最低。由于标准数据库中用户名的字段长度为 15 那么我们修改的上限也就是 15 个汉字的用户名,如果再多的话,入库的时候就要报错了。一般来说 15 个汉字的用户名也足够用了。

修改方法:
注:此修改方法针修改为最大上限,官方不建议大家修改为这么大,会造成风格问题,一下代码中的 30 推荐替换为 24。也就是 12 个 GBK 汉字。

1.前台 JS 的修改方法
打开 template\default\member\register.htm 文件:
找到:

[*]if(unlen < 3 || unlen > 15) {




修改为

[*]if(unlen < 3 || unlen > 30) {




保存

2.Discuz! php 代码修改
打开source\module\forum\forum_ajax.php
找到:

[*]} elseif($usernamelen > 15) {




修改为:

[*]} elseif($usernamelen > 30) {




打开source\module\member\member_register.php

找到:

[*]} elseif($usernamelen > 15) {




修改为:

[*]} elseif($usernamelen > 30) {






3.UCenter client php 代码修改
打开 uc_client\model\user.php
找到

[*]if($len > 15 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is", $username)) {




修改为

[*]if($len > 30 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is", $username)) {




4.UCenter uc_server php 代码修改
比如当前我使用的 UCenter 在 uc_server 目录中,修改正在使用的 UCenter 的 uc_server\model\user.php 文件
找到

[*]if($len > 15 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is", $username)) {



修改为:

[*]if($len > 30 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is", $username)) {



页: [1]
查看完整版本: Discuz如何修改允许使用的用户名最大长度{最大值15}