大家在玩论坛的时候,特别是长时间未登录的论坛,可能在输入错误密码达到一定次数后提示:“密码错误次数过多,请 15 分钟后重新登陆”,这下可头大了,等15分后,心都凉了,所以这个用户体验并不好!
在discuz!X1.5中,可以做如下修改来改善这个用户体验,这里尝试修改为30秒!
discuz!X1.5:依次打开 source - function目录下的 function_member.php文件,注:discuz!X1.0需要修改: function_login.php
搜索并替换其中的2处900为30,一处901为31即可!如下红色部分为修改后!
![](http://hiphotos.baidu.com/heartauberge/pic/item/0376e0521abd3e5c0df3e317.jpg)
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'] > 30)) ? 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'] > 30) {
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]- 31", 'UNBUFFERED');
}
return $return;
}
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'] > 30)) ? 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'] > 30) {
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]- 31", 'UNBUFFERED');
}
return $return;
}
然后就是修改下前台提示:
依次打开 source - language目录下的 lang_message.php文件,修改为 'login_strike' => '密码错误次数过多,请 30 秒后重新登录'!
如果已经被锁定,可以用phpmyadmin删除数据表'pre_common_failedlogin'中的参数,然后重新登录即可!
在内网架设论坛的你一定知道这个修改是多么的人性!
转载于:https://blog.51cto.com/jerrybear/743358