ThinkPHP6实现简单的记录网站后台管理操作日志方法

2024-11-03 48 0

我们在开发系统的时候,会考虑到安全问题,赋予不用管理员不用权限,同时,记录每个管理员的操作记录,达到监控管理员的每一步操作和防止数据误删保障系统安全。

20241103111616138

一、如何写记录管理员操作日志呢?

方法思路:

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','删除失败');
    }
}
?>

以上是作者的一点思路,如果有更好的方法,欢迎留言!集百家之最,编写更好的代码!

    相关文章

    PHP常用时间日期处理总结
    使用PHP获取文件夹中所有文件
    thinkphp8中,数据库的字段是 api_node_id ,值是:多个用英文逗号区分,这种应如何来查询准确的数据取出唯一的主键ID?
    tp(thinkphp6)记录后台操作日志
    ThinkPHP6实现上传图片带水印方法
    PHP远程代码执行漏洞(CVE-2024-4577)解决方案(不升级PHP版本)

    发布评论