请选择 进入手机版 | 继续访问电脑版
开启辅助访问
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

点击进入授权页面

只需一步,快速开始

[Discuz教程] discuzX2登陆错误机制的调整

回复:0 | 查看:914 | bhunji 发表于 2018-1-17 00:01:17 |阅读模式 |复制链接
在Discuz! / Discuz! X 之前的版本中,大家总是能碰到一个提示,就是密码错误次数过多,需要等 15 分钟才能登陆的情况。

如果是在局域网内有很多人去登陆论坛,因为出口 IP 是一个,这种情况会更多的发生。

因为在之前的版本中,这里的记录是会记录某个 IP 登陆错误的次数,超过 15 分钟后就会导致这个情况发生。

在 X2.0 版本中,这里做了调整,不在只针对 IP 做错误限制,会同时记录输入错误密码时所使用的用户名。

X2.0 的用户登陆相关的处理在 /soucr/class/class_member.php 文件中

登陆时候,我们调用的是该类中的 on_login 方法:

在该方法中会做登陆相关的处理,在这个方法的后面,有一行代码:

  • loginfailed($_G['gp_username']);

复制代码

其中 loginfailed 函数在 /source/function/function_member.php 中

我们看到这个函数是:

  • function loginfailed($username) {
  • global $_G;
  • $username = addslashes(trim(stripslashes($username)));
  • DB::query("UPDATE ".DB::table('common_failedlogin')."SET count=count+1, lastupdate='$_G[timestamp]' WHERE ip='$_G[clientip]'AND username='$username'");
  • }



这个函数会把错误记录到表 pre_common_failedlogin 中,如果我们再次遇到某个用户登陆错误次数过多导致需要等 15分钟才能登陆时,需要手动清表信息的时候,可以在这里根据 username 字段删除其登陆错误记录即可,而不在需要之前直接清空 整个 IP的操作了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

快速回复 返回列表 客服中心





企业站定制,我们更专业!

联系我们
快速回复 返回顶部 返回列表