如何为php网页和mysql数据库进行审核日志?

时间:2018-10-01 08:43:07

标签: php mysql

我的网页用PHP编码,并链接到MySQL Server Management Studio数据库。该网页的主要功能是允许用户通过该网页搜索数据库中的数据。我想创建一个搜索日志来跟踪用户的活动(谁,什么,他们何时搜索以及他们得到了什么结果)。我该怎么办?

对于管理员,他们具有添加,删除,编辑数据库表中数据的权限。我想创建一个审核日志以捕获添加,删除或编辑的日期时间,用户ID,旧值,新值和字段等。

由于我是新手,请感谢所有人的所有帮助。预先谢谢你。

1 个答案:

答案 0 :(得分:1)

建立自己的审核跟踪可能会存在隐藏的问题和警告

  1. 记录有关新值和/或旧值的详细信息可能会对数据库和服务器产生负面影响-表示您试图在第二秒保存数十个审核记录,而更新的字段是巨大的Blob或文本字段。因此,请考虑为了审计目的而截断数据或仅将其审计。
  2. 考虑审核比您现在想要更多的详细信息。可能的其他审核字段可以包括例如IP地址。
  3. 还要考虑审核搜索/查看-用户是否只是搜索内容也有帮助。

假设此结构可以解决问题:

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的原因)