Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

X2登陆错误机制的调整

[复制链接]
零风 发表于 2011-2-28 10:01:58 | 显示全部楼层 |阅读模式
*************************************************
** 本教程基于版本:Discuz! X 2.0                                         **
*************************************************

在Discuz! / Discuz! X 之前的版本中,大家总是能碰到一个提示,就是密码错误次数过多,需要等 15 分钟才能登陆的情况。

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

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

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

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

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

在该方法中会做登陆相关的处理,在这个方法的后面,有一行代码:
  1. loginfailed($_G['gp_username']);
复制代码

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

我们看到这个函数是:
  1. function loginfailed($username) {
  2.         global $_G;
  3.         $username = addslashes(trim(stripslashes($username)));
  4.         DB::query("UPDATE ".DB::table('common_failedlogin')." SET count=count+1, lastupdate='$_G[timestamp]' WHERE ip='$_G[clientip]' AND username='$username'");
  5. }
复制代码

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


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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-24 00:39 , Processed in 0.021541 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表