ucenter用户中心提示用户名不合法的问题
[文章作者:磨延城 转载请注明原文出处: https://mo2g.com/view/116/ ]
最近给网站引入了UCenter用户中心,在测试的时候就发现,有些会员名无法注册,UCenter会返回-1,然后提示“用户名不合法!”.例如当用户注册“永衡互联”的时候,就会出现提示“用户名不合法!”.一开始我以为腾讯把“互联”这两个字给禁用了,后来发现不是,而是UCenter误判了“衡”这个字.
最近给网站引入了UCenter用户中心,在测试的时候就发现,有些会员名无法注册,UCenter会返回-1,然后提示“用户名不合法!”。例如当用户注册“永衡互联”的时候,就会出现提示“用户名不合法!”。一开始我以为腾讯把“互联”这两个字给禁用了,后来发现不是,而是UCenter误判了“衡”这个字。
经过调试定位,找到PHP文件uc_client\model\user.php,其中定义了一个方法check_username($username){}检测用户名的合法性,代码如下:
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; } }
有网友反映,很多中文英文都被判定不合法。测试过程中我发现, \xA1\xA1 导致了有些中文被判定为 不合法,这里“衡”字就被识别为不合法,如果经常提示不合法,可以考虑删掉\xA1\xA1。
把这$guestexp输出得到如下内容:
<?php echo "\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8"; // ||^Guest|^游客|笴
有资料显示,“\xA1\xA1”指代全角,但我不明白其中的奥妙,等待高人指点,并希望Discuz官方能早点解决这一问题。
上一篇:广西南宁互联网行业的现状
下一篇:那一年我就正在想
我来说两句: