优化Discuz! X1.5用户登录失败5次后显示验证码框
准备对Discuz! X1.5的用户登录部分做一点小优化,实现当用户登录失败5次,或相应次数后,显示验证码输入框,而不是discuz默认的需要等待15分钟后再次登录。这样一来,不仅能起到防灌水的效果,而且也不会对用户造成一种无形的压力!
首先修改用户登录错误次数的记录,找到文件 source/function/function_member.php 中的logincheck()函数,代码如下:
function logincheck() { global $_G; $return = 0; $login = DB::fetch_first("SELECT count, lastupdate FROM ".DB::table('common_failedlogin')." WHERE ip='$_G[clientip]'"); $return = (!$login || (TIMESTAMP - $login['lastupdate'] > 900)) ? 4 : max(0, 5 - $login['count']); if(!$login) { DB::query("REPLACE INTO ".DB::table('common_failedlogin')." (ip, count, lastupdate) VALUES ('$_G[clientip]', '1', '$_G[timestamp]')"); } elseif(TIMESTAMP - $login['lastupdate'] > 900) { DB::query("REPLACE INTO ".DB::table('common_failedlogin')." (ip, count, lastupdate) VALUES ('$_G[clientip]', '1', '$_G[timestamp]')"); DB::query("DELETE FROM ".DB::table('common_failedlogin')." WHERE lastupdate<$_G[timestamp]-901", 'UNBUFFERED'); } return $return; }
持续修改ing