Discuz_X3.4注册会员发现BUG,含“衡”、“欣”字无法注册,并提示用户名包含敏感字符或被系统屏蔽,解决方法如下:
1、在uc_client/model/user.php和uc_server/model/user.php文件中(第41-49行)找到以下代码:
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;
}
}
2、将上述代码修改为:
function check_username($username) {
$guestexp = '^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;
}
}
3、这样就成功解决Discuz_X3.4含“衡”、“欣”字无法注册,并提示用户名包含敏感字符或被系统屏蔽问题啦。
相关内容详解:
过滤代码:
$guestexp = '\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
“欣”汉字的utf8编码是:
0xE60xAC0xA3
被当成了被屏蔽的字符,\xA1\xA1衡 \xAC\xA3欣,所以删掉\xA1\xA1|\xAC\xA3|就可以了。