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官方能早点解决这一问题。

    评论:

    1. Charlieol 回复2015年06月02日 20时07分
      磨者
      Hello. And Bye.  Hello. And Bye. 
      <a href=>http://taramparam.com</a>

    2. 我来说两句:

        切换  

      磨途歌检测发现,您当前使用的浏览器版本过低,要想使用画板模式,请先更新浏览器

        切换  

      磨途歌随机验证码