PHP/MySQL中如何自动化记录用户操作日志,无需逐个编写REQUEST判断?
通用化PHP操作日志记录方案疑问
背景与需求
我正在开发一款内部自研的PHP应用,拥有多名员工用户,他们可执行各类操作,包括添加、修改或删除员工账户、课程、学生、试题、测试等。我的目标是编写函数,将用户的所有操作记录到MySQL的logs表中。
现有实现方式
目前我通过逐个判断请求参数来处理业务逻辑,比如新增员工账户的代码:
if(isset($_REQUEST['newemployee'])){ $db = new db(); $insertrow = $db ->insertRow("INSERT INTO employees (firstname, lastname, email, role, color) VALUES (?, ?, ?, ?, ?)", array($_REQUEST['firstname'],$_REQUEST['lastname'],$_REQUEST['email'],$_REQUEST['role'],$_REQUEST['colorpicker1'])); }
对应的日志记录也需要为每个请求单独编写if语句,示例如下:
// 已有一张名为`logs`的表,以下实现较为粗糙但可满足需求 if(isset($_REQUEST['newemployee'])){ $done_by = $_SESSION['loguser']['id']; // 通过此方式追踪用户ID $action = 'created new employee account, email: '.$_REQUEST['email']; $db = new db(); $insertrow = $db ->insertRow("INSERT INTO logs(user_id, action) VALUES (?, ?)", array($done_by, $action)); }
期望的通用化方案
我希望尽可能将日志记录流程通用化、自动化,避免为每个可触发的请求参数编写大量重复的if语句。理想的逻辑大概是这样:
if (ANY REQUEST is triggered){ # 告知触发的请求类型(例如'newemployee') # 在此将日志插入数据库,此时action字段无需太具体,我可以接受这一点。 }
但我无法直接实现这种通用的请求判断逻辑,想请教这种方案是否可行?
内容的提问来源于stack exchange,提问作者MMC
相关产品推荐
相关产品推荐

