系统原本的意图是限制某些特定用户名的注册,然而,这一改动却导致了一个意想不到的问题——已经注册过的用户名也无法正常登录,甚至连管理员也无法从前台登录。这种情况让人怀疑可能是程序存在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 . "已经存在!";
}
完成以上修改后,当管理员尝试从前台登录时,系统会正确提示“管理员帐号不能从前台登录”。这一改动不仅解决了已注册用户无法登录的问题,还确保了系统的安全性与逻辑一致性。
通过这样的调整,我们成功修复了因逻辑问题导致的功能异常,同时为未来的系统维护提供了更清晰的代码结构和逻辑支持。如果您在操作过程中遇到任何疑问,可以随时查阅相关文档或联系技术支持团队。