我们在开发系统的时候,会考虑到安全问题,赋予不用管理员不用权限,同时,记录每个管理员的操作记录,达到监控管理员的每一步操作和防止数据误删保障系统安全。
一、如何写记录管理员操作日志呢?
方法思路:
1、创建一张操作日志表 admin_log。
2、哪些数据要记录操作日志,数据增加操作、编辑操作、删除操作。
3、编写公共方法,用于写入数据到数据库。
4、在每一步操作成功后,调用该方法,记录改管理员的搞作日志。
二、编写代码
2.1、创建 admin_log 日志表
CREATE TABLE `tp_admin_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`admin_name` varchar(255) DEFAULT NULL COMMENT '账号',
`created_at` varchar(12) DEFAULT NULL COMMENT '操作时间',
`ip` varchar(200) DEFAULT NULL COMMENT 'ip',
`content` text COMMENT '日志',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='管理员操作日志表';
2.2、common.php文件下编写公共写入数据方法
<?php
/*
* 系统日志写入
* @parm admin_name 管理员账号
* @parm ip 当前客户端ip
* @parm content 操作内容
* @parm created_at 操作时间
* */
function insertLog($admin_name,$content){
$data=[
'admin_name'=>$admin_name,
'ip'=>$_SERVER["REMOTE_ADDR"],
'content'=>$content,
'created_at'=>time(),
];
$data=\app\union\model\Defendlist::insert($data);
}
?>
2.3、在一步操作成功出调用方法写入操作数据日志(调用insertLog()方法,传递账号,操作内容信息等。)
<?php
public function destroy($id){
$res=Roles::destroy($id);
if($res){
insertLog(Cookie::get('admin_name'),'删除角色 ID:'.$id);
return returnJson('200','删除成功');
}else{
return returnJson('500','删除失败');
}
}
?>
以上是作者的一点思路,如果有更好的方法,欢迎留言!集百家之最,编写更好的代码!