Discuz_X3.4注册会员含“衡”、“欣”字时用户名包含敏感字...

[复制链接]
查看238 | 回复0 | 2019-3-10 21:15:31 | 显示全部楼层 |阅读模式
Discuz_X3.4注册会员发现BUG,含“衡”、“欣”字无法注册,并提示用户名包含敏感字符或被系统屏蔽,解决方法如下:
1、在uc_client/model/user.php和uc_server/model/user.php文件中(第41-49行)找到以下代码:
  1. <font face="monospace, monospace">function check_username($username) {</font>
  2. $guestexp = '\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
  3. $len = $this->dstrlen($username);
  4. if($len > 15 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*"\s\<\>\&]|$guestexp/is", $username)) {
  5. return FALSE;
  6. } else {
  7. return TRUE;
  8. }
  9. }
复制代码

2、将上述代码修改为:
  1. <font face="monospace, monospace">function check_username($username) {</font>
  2. $guestexp = '^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
  3. $len = $this->dstrlen($username);
  4. if($len > 15 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*"\s\<\>\&]|$guestexp/is", $username)) {
  5. return FALSE;
  6. } else {
  7. return TRUE;
  8. }
  9. }
复制代码

3、这样就成功解决Discuz_X3.4含“衡”、“欣”字无法注册,并提示用户名包含敏感字符或被系统屏蔽问题啦。
相关内容详解:
过滤代码:
  1. $guestexp = '\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
复制代码

“欣”汉字的utf8编码是:
  1. 0xE60xAC0xA3
复制代码

被当成了被屏蔽的字符,\xA1\xA1衡 \xAC\xA3欣,所以删掉\xA1\xA1|\xAC\xA3|就可以了。
欢迎访问[color=Red]站长帮[/color],记住我们的域名[color=Red]www.yunxunwl.com[/color]
版权申明:此文如未标注转载均为本站原创,自由转载请注明 本贴地址:https://www.yunxunwl.com/content-1707-1-1.html 上篇帖子: discuz插件操作数据库实例 下篇帖子: Discuz!写入数据库 注册 会员 时用 用户 用户名
您需要登录后才可以回帖 登录 | 注册  

本版积分规则