我的网页是用 PHP 编码的,并链接到 MySQL Server Management Studio 数据库。该网页的主要功能是允许用户通过该网页搜索数据库中的数据。我想创建一个搜索日志来跟踪用户事件(谁、什么、他们搜索的时间以及他们得到的结果)。我该怎么做?
对于管理员来说,他们拥有从数据库表中添加、删除、编辑数据的权限。我想创建一个审计日志来捕获添加、删除或编辑的日期时间、用户 ID、旧值、新值和字段等。
由于我是新手,感谢大家的帮助。提前谢谢你。
最佳答案
构建您自己的审计跟踪可能存在隐藏的问题和注意事项
- 记录有关新值和/或旧值的详细信息可能会对您的数据库和服务器产生负面影响 - 假设您试图在一秒钟内保存数十条审计记录,而更新的字段是巨大的 blob 或文本字段。因此,考虑出于审计目的或仅在必要时进行审计而截断数据。
- 考虑审核比您现在想要的更多的细节。例如,可能的其他审计字段可以包括 IP 地址。
- 还要考虑审核搜索/查看 - 用户是否只是搜索了某些内容也很有帮助。
假设这个结构可以解决问题:
CREATE TABLE audit_trail (
id int not null primary key auto_increment,
user_id int not null,
action_time datetime not null,
action_performed enum ('view','add', 'edit', 'delete'),
table_affected varchar(50) not null, -- table of affected item
item_affected int not null, -- supposing every table has it's own id key
old_value varchar(1000),
new_value varchar(1000)
)
如何存储旧值和新值 - 由您决定。首先认为自定义审计日志不适合恢复返回值(mysqldump 和其他实用程序来救援)。但通常它足以存储旧值和新值的短字符串表示(这就是为什么使用 varchar)
关于php - 如何做php网页和mysql数据库的审计日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52587401/