本帖最后由 viswow 于 2011-4-26 17:26 编辑
修改前提:
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)) {
复制代码
|