帝国cms 会员登录、退出日志插件
2018-11-28 站长 站长日志
7.0、7.2已经可以使用(7.5应该放到对应代码应该也可以用),更多判断限制可以自行添加上去,如果有不足之处,还请大神多多指点。
1、后台-系统设置-执行SQL语句,执行以下sql语句即可
CREATE TABLE IF NOT EXISTS `phome_member_log` (
`id` int(11) NOT NULL auto_increment,
`userid` int(11) NOT NULL,
`username` varchar(255) NOT NULL,
`logintime` int(10) NOT NULL,
`loginip` varchar(32) NOT NULL,
`status` smallint(1) NOT NULL,
`password` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
2、在/e/class/connect.php函数表中加入函数
//用户登录日志(包含第一次注册时候的默认登录、成功登录、退出、账号不存在、密码错误、账号为空、密码为空、账号未通过审核),1成功登录、2退出网站、3注册登录、4账号密码错误、5账号不存在、6账号未通过审核、7账号或密码为空、8验证码错误
function insert_member_log($userid,$username,$logintime,$loginip,$status,$password){
global $empire,$dbtbpre;
$password=RepPostVar($password);
if($status=='1' || $status=='3')
{
$password='';
}else if($status=='4' || $status=='5'){
$password=md5($password);
}
$userid=RepPostVar($userid);
$username=RepPostVar($username);
$logintime=RepPostVar($logintime);
$loginip=RepPostVar($loginip);
$status=RepPostVar($status);
$password=RepPostVar($password);
$sql=$empire->query("insert into {$dbtbpre}member_log(userid,username,logintime,loginip,status,password) values('$userid','$username','$logintime','$loginip','$status','$password');");
}
//用户登录次数错误限制
function member_login_error($username,$loginip){
global $empire,$dbtbpre;
$username=RepPostVar($username);
$loginip=RepPostVar($loginip);
$start_time=strtotime(date("Y-m-d H:i:s", strtotime("-10 minute")));
$end_time=time();
$username_login=$empire->fetch1("select count(*) as total from {$dbtbpre}member_log where username='$username' and status in (4,5,6,7) and logintime between '$start_time' and '$end_time' limit 1");
$ip_login=$empire->fetch1("select count(*) as total from {$dbtbpre}member_log where loginip='$loginip' and status in (4,5,6,7) and logintime between '$start_time' and '$end_time' limit 1");
$bankurl = 'http://www.baidu.com';
if($username_login['total']>='5'){
printerror2('亲,你在10分钟内账号或密码错误达到5次,请稍后再来尝试登录!',$bankurl);
}
if($ip_login['total']>='5'){
printerror2('亲,你的ip('.$loginip.')在10分钟内输入账号或密码错误达到5次,请稍后再来尝试登录!',$bankurl);
}
}
3、找到用户登录文件:/e/member/class/member_loginfun.php
1)在第6行加入代码:
//获取当前时间和IP
$loginip=egetip();
$logintime=time();
2)在第22行用户账号或密码为空的判断中加入以下代码(加到第23行下面):
//用户账号或密码为空在写入日志
insert_member_log($userid,$username,$logintime,$loginip,'7',$password);
3)在第39行用户userid不存在的判断中加入以下代码(加到第40行下面):
//用户账号不存在写入日志
insert_member_log($r['userid'],$username,$logintime,$loginip,'5',$password);
4)在第45行用户密码错误的判断中加入以下代码(加到第46行下面):
//用户账号密码错误写入日志
insert_member_log($r['userid'],$username,$logintime,$loginip,'4',$password);
5)在第51行用户账号未通过审核的判断中加入以下代码(加到第52行下面):
//用户账号未通过审核写入日志
insert_member_log($r['userid'],$username,$logintime,$loginip,'6',$password);
6)在第95行用户成功登录后加入以下代码:
//用户账号登录成功写入日志
insert_member_log($r['userid'],$username,$logintime,$loginip,'1',$password);
7)在第132行用户退出登录加入以下代码:
//用户账号退出网站写入日志
//获取当前时间和IP
$loginip=egetip();
$logintime=time();
$userid=getcvar('mluserid');//会员ID
$username=getcvar('mlusername');//会员用户名
insert_member_log($userid,$username,$logintime,$loginip,'2',$password);
至此登录文件修改完毕。
3、找到用户注册文件:/e/member/class/member_registerfun.php
1)在第194行后面用户账号注册成功即将转入会员中心前加入以下代码:
//获取当前时间和IP
$loginip=egetip();
$logintime=time();
//用户成功注册账号后的第一次登录写入日志
insert_member_log($userid,$username,$logintime,$loginip,'3',$password);
//登录成功转入会员中心
4、在/e/member/class/member_loginfun.php,加入以下判断但是不写入数据库。
1)加入一定时间内密码错误多少次无法登录判断。
在第38行后面加入以下代码:
//10分钟内登录错误达到5次,请稍后再来登录
member_login_error($username,$loginip);
2)异常IP登陆,常用IP登陆判断。
上传以下图片:
1、后台-系统设置-执行SQL语句,执行以下sql语句即可
CREATE TABLE IF NOT EXISTS `phome_member_log` (
`id` int(11) NOT NULL auto_increment,
`userid` int(11) NOT NULL,
`username` varchar(255) NOT NULL,
`logintime` int(10) NOT NULL,
`loginip` varchar(32) NOT NULL,
`status` smallint(1) NOT NULL,
`password` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
2、在/e/class/connect.php函数表中加入函数
//用户登录日志(包含第一次注册时候的默认登录、成功登录、退出、账号不存在、密码错误、账号为空、密码为空、账号未通过审核),1成功登录、2退出网站、3注册登录、4账号密码错误、5账号不存在、6账号未通过审核、7账号或密码为空、8验证码错误
function insert_member_log($userid,$username,$logintime,$loginip,$status,$password){
global $empire,$dbtbpre;
$password=RepPostVar($password);
if($status=='1' || $status=='3')
{
$password='';
}else if($status=='4' || $status=='5'){
$password=md5($password);
}
$userid=RepPostVar($userid);
$username=RepPostVar($username);
$logintime=RepPostVar($logintime);
$loginip=RepPostVar($loginip);
$status=RepPostVar($status);
$password=RepPostVar($password);
$sql=$empire->query("insert into {$dbtbpre}member_log(userid,username,logintime,loginip,status,password) values('$userid','$username','$logintime','$loginip','$status','$password');");
}
//用户登录次数错误限制
function member_login_error($username,$loginip){
global $empire,$dbtbpre;
$username=RepPostVar($username);
$loginip=RepPostVar($loginip);
$start_time=strtotime(date("Y-m-d H:i:s", strtotime("-10 minute")));
$end_time=time();
$username_login=$empire->fetch1("select count(*) as total from {$dbtbpre}member_log where username='$username' and status in (4,5,6,7) and logintime between '$start_time' and '$end_time' limit 1");
$ip_login=$empire->fetch1("select count(*) as total from {$dbtbpre}member_log where loginip='$loginip' and status in (4,5,6,7) and logintime between '$start_time' and '$end_time' limit 1");
$bankurl = 'http://www.baidu.com';
if($username_login['total']>='5'){
printerror2('亲,你在10分钟内账号或密码错误达到5次,请稍后再来尝试登录!',$bankurl);
}
if($ip_login['total']>='5'){
printerror2('亲,你的ip('.$loginip.')在10分钟内输入账号或密码错误达到5次,请稍后再来尝试登录!',$bankurl);
}
}
3、找到用户登录文件:/e/member/class/member_loginfun.php
1)在第6行加入代码:
//获取当前时间和IP
$loginip=egetip();
$logintime=time();
2)在第22行用户账号或密码为空的判断中加入以下代码(加到第23行下面):
//用户账号或密码为空在写入日志
insert_member_log($userid,$username,$logintime,$loginip,'7',$password);
3)在第39行用户userid不存在的判断中加入以下代码(加到第40行下面):
//用户账号不存在写入日志
insert_member_log($r['userid'],$username,$logintime,$loginip,'5',$password);
4)在第45行用户密码错误的判断中加入以下代码(加到第46行下面):
//用户账号密码错误写入日志
insert_member_log($r['userid'],$username,$logintime,$loginip,'4',$password);
5)在第51行用户账号未通过审核的判断中加入以下代码(加到第52行下面):
//用户账号未通过审核写入日志
insert_member_log($r['userid'],$username,$logintime,$loginip,'6',$password);
6)在第95行用户成功登录后加入以下代码:
//用户账号登录成功写入日志
insert_member_log($r['userid'],$username,$logintime,$loginip,'1',$password);
7)在第132行用户退出登录加入以下代码:
//用户账号退出网站写入日志
//获取当前时间和IP
$loginip=egetip();
$logintime=time();
$userid=getcvar('mluserid');//会员ID
$username=getcvar('mlusername');//会员用户名
insert_member_log($userid,$username,$logintime,$loginip,'2',$password);
至此登录文件修改完毕。
3、找到用户注册文件:/e/member/class/member_registerfun.php
1)在第194行后面用户账号注册成功即将转入会员中心前加入以下代码:
//获取当前时间和IP
$loginip=egetip();
$logintime=time();
//用户成功注册账号后的第一次登录写入日志
insert_member_log($userid,$username,$logintime,$loginip,'3',$password);
//登录成功转入会员中心
4、在/e/member/class/member_loginfun.php,加入以下判断但是不写入数据库。
1)加入一定时间内密码错误多少次无法登录判断。
在第38行后面加入以下代码:
//10分钟内登录错误达到5次,请稍后再来登录
member_login_error($username,$loginip);
2)异常IP登陆,常用IP登陆判断。
上传以下图片:

上一篇:帝国cms多字段调用方法说明
下一篇:帝国CMS多字段搜索功能