业务经理

微信扫描以上二维码

028-61286886

技术咨询

最新版本在后台添加用户的时候一直提示账号名不允许注册请问大家

迅睿框架 更新 2021-01-18 14:24:32 易享网络

最新版本(4.3.13)在后台添加用户的时候一直提示"账号名不允许注册"。请问大家有这个问题吗?


{xunruicms_img_title}


后台用户设置这都是默认设置:

{xunruicms_img_title}

方案

  • 迅睿框架技术-景攸 #1 · 2021-01-18 10:26:38
    是win服务器吗
  • 初次使用 #2 · 2021-01-18 10:30:25
    你是不是设置错了账号的正则表达式
  • 易享网络 #3 · 2021-01-18 10:32:27
    迅睿框架技术-景攸 Linux8.2 PHP8.0
  • 易享网络 #4 · 2021-01-18 10:32:58
    初次使用 正则这里也是留空的

  • 迅睿框架技术-景攸 #5 · 2021-01-18 10:37:56
    不允许账号的字符串,看看是否存在回车空白等
  • 易享网络 #6 · 2021-01-18 10:42:34
    迅睿框架技术-景攸 试过很多了组合了都不行,简单的复杂的,长的短的都不行,奇了怪了
  • 迅睿框架技术-景攸 #7 · 2021-01-18 10:49:01
    不允许账号的字符串,看看是否存在回车空白等,或者输入admin,然后保存再注册
  • 易享网络 #8 · 2021-01-18 12:16:41
    满意答案

    迅睿框架技术-景攸 感谢回复,自己排查了一下,发现/dayrui/Fcms/Library/Form.php存在一处bug:

    public function check_username($value) {
            exong_test(0,$value,\Phpcmf\Service::C()->member_cache['register'],\Phpcmf\Service::C()->member_cache['register']['notallow']);
            if (!$value) {
                return dr_return_data(0, dr_lang('账号不能为空'), ['field' => 'username']);
            } elseif (\Phpcmf\Service::C()->member_cache['register']['preg']
                && !preg_match(\Phpcmf\Service::C()->member_cache['register']['preg'], $value)) {
                return dr_return_data(0, dr_lang('账号格式不正确'), ['field' => 'username']);
            } elseif (strpos($value, '"') !== false || strpos($value, '\'') !== false) {
                return dr_return_data(0, dr_lang('账号名存在非法字符'), ['field' => 'username']);
            } elseif (\Phpcmf\Service::C()->member_cache['config']['userlen']
                && mb_strlen($value) < \Phpcmf\Service::C()->member_cache['config']['userlen']) {
                return dr_return_data(0, dr_lang('账号长度不能小于%s位,当前%s位', \Phpcmf\Service::C()->member_cache['config']['userlen'], mb_strlen($value)), ['field' => 'username']);
            } elseif (\Phpcmf\Service::C()->member_cache['register']['notallow']) {
                // 放在最后一次比较
                foreach (\Phpcmf\Service::C()->member_cache['register']['notallow'] as $a) {
                    if (strpos($value, $a) !== false) {
                        return dr_return_data(0, dr_lang('账号名不允许注册'), ['field' => 'username']);
                    }
                }
            }
    
            return dr_return_data(1, 'ok');
        }

    其中的

     } elseif (\Phpcmf\Service::C()->member_cache['register']['notallow']) {

    一直为true。

    说明如下:

    查看数据库发现member_cache['register']['notallow']默认为[""],在php8里,if([""])一直为true,所以这里不管怎么设置都会进入下面的判断体,导致在后台增加用户名时,如果没有设置禁止注册的用户名,会一直提示“账号名不允许注册”。请老大修复一下。




    最近服务器更新了php8,感觉迅睿框架在php8的兼容性上还有很多的小bug,还是希望老大能仔细排查一下程序,避免因为这些小毛病影响了咱们迅睿框架的感知。辛苦了。

  • 黄老邪 #9 · 2021-01-18 12:18:38
    楼主不太了解php啊,if([""])本身就是正确的代码啊
  • 易享网络 #10 · 2021-01-18 12:23:08
    黄老邪 我知道if([""])是正确的代码,只是这个判断永远都为true,那还加这个判断干什么,直接执行if里边的foreach循环体就行了啊。不纠结了,老大刚刚已经修复这个bug了
  • 易享网络 #11 · 2021-01-18 14:24:32
    @易享网络:本帖已结束

迅睿系统漏洞

注册赠送
注册赠送(2026-10-10)
增加安装前判断是否安装了用户系统
自动收集404死链
自动收集404死链(2026-10-10)
自动收集404死链+曝光有效文档url,并生成按更新时间生成死链tx...
定时发布-草稿箱
定时发布-草稿箱(2026-10-10)
调用代码显示修正
免备案镜像加速
免备案镜像加速(2026-10-10)
自动抓取源站的附件到国内加速站。速度嘎嘎快,安全又省钱,双重备份。
防伪查询
防伪查询(2026-10-10)
防伪码扫码查询,包含uniapp(h5)端,跟微信小程序端,因为扫码...
广告转化归因回传
广告转化归因回传(2026-10-10)
对接广告平台转化归因
数据重复筛查
数据重复筛查(2026-10-10)
采用auth缓存方法