我们在开发系统的时候,会考虑到安全问题,赋予不用管理员不用权限,同时,记录每个管理员的操作记录,达到监控管理员的每一步操作和防止数据误删保障系统安全。
一、如何写记录管理员操作日志呢?
方法思路:
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','删除失败'); } } ?>
以上是作者的一点思路,如果有更好的方法,欢迎留言!集百家之最,编写更好的代码!