系统原本的意图是限制某些特定用户名的注册,然而,这一改动却导致了一个意想不到的问题——已经注册过的用户名也无法正常登录,甚至连管理员也无法从前台登录。这种情况让人怀疑可能是程序存在BUG。

 

经过深入分析,发现这并非是之前修改的那一段代码所引发的问题,而是一个逻辑上的设计缺陷。问题的核心在于,当用户尝试登录时,系统错误地将管理员账户(如admin)也纳入了禁止登录的范围。

 

为了解决这个问题,我们需要对代码进行适当的调整。以下是具体的解决步骤:

 

首先,在include/memberlogin.class.php文件中找到以下代码,并将其删除:


if($cfg_mb_notallow != '') { 
    $nas = explode(',', $cfg_mb_notallow); 
    if(in_array($uid, $nas)) { 
        return $msgtitle . '为系统禁止的标识!'; 
    } 
}
    

 

接着,再找到以下代码:


if($ckhas) { 
    $row = $dsql->GetOne("Select * From `dede_member` where userid like '$uid' "); 
    if(is_array($row)) return $msgtitle . "已经存在!"; 
}
    

 

然后,将上述代码修改为如下内容:


if($ckhas) { 
    if($cfg_mb_notallow != '') { 
        $nas = explode(',', $cfg_mb_notallow); 
        if(in_array($uid, $nas)) { 
            return $msgtitle . '为系统禁止的标识!'; 
        } 
    } 
    $row = $dsql->GetOne("Select * From `dede_member` where userid like '$uid' "); 
    if(is_array($row)) return $msgtitle . "已经存在!"; 
}
    

 

完成以上修改后,当管理员尝试从前台登录时,系统会正确提示“管理员帐号不能从前台登录”。这一改动不仅解决了已注册用户无法登录的问题,还确保了系统的安全性与逻辑一致性。

 

通过这样的调整,我们成功修复了因逻辑问题导致的功能异常,同时为未来的系统维护提供了更清晰的代码结构和逻辑支持。如果您在操作过程中遇到任何疑问,可以随时查阅相关文档或联系技术支持团队。