PHP 如何记录网站后台数据的修改记录?比如谁登录了修改了某模块的其中几个字段数据

2019-08-09 15:09:07 +08:00
 frozenway

现在是用最原始的办法,每更新一个数据表前,都把表单提交过来的数据保存到一个日志表。但是这样做的话,每次表单提交过来十几个字段。每次查日志分析用户改了那些数据时,都要肉眼一个个字段去对比,好辛苦。直接两个字段用程序“==”对比,字段值太长,怕程序崩溃,想问一下,这应该怎么办?

6154 次点击
所在节点    PHP
22 条回复
neetrorschach
2019-08-15 05:23:27 +08:00
正在做类似的功能,用的 java。
想要达到的效果是记录每次保存操作修改了哪些字段,修改前的值和修改后的值,并区分出操作类型是增加、删除或修改。同时增加一个对比按钮,点击后在页面高亮显示最后一次被修改的字段,鼠标悬浮显示历史值。
我的实现方法是保存时先根据 id 取出数据库内已有的记录,然后比对,最后将比对结果写入日志表。
开发过程中被一个问题卡了很久。是关于日志 id 怎么生成的逻辑。由于页面表单数据其实是分 3 部分内容,所以是触发了 3 个请求到后端。如果第 1 部分数据有修改,那么应当生成一个新的日志 id。第 2 个请求触发时如果也查出有修改,那么记录日志时应当沿用第一个请求的日志 id。第 3 个请求也是一样。这个 id 的传递方法卡了好几天。最后是把它存到了 session 里,第 2、3 请求触发时先获取 session 内的 id,如果获取不到就新建一个。
现在又被另一个问题卡住了。由于第 3 部分数据是一个 list,里面是 1 个或多个 model 实体对象。在比对差异的时候感觉很复杂。假设页面新增了一组数据,也就是 list 里多了一个对象。那么比对时的循环应该是用新的 list 做外循环,里面嵌套数据库内的实体 list 做比对。如果是删除操作,那么就要反过来。目前只做了第一种情况已经写了 200 行了,感觉再要写一遍 200 行,但其实逻辑基本一样,只是哪个 list 作为外循环的差异。
非常讨厌写这种臃肿的代码。
2kCS5c0b0ITXE5k2
2019-08-15 11:03:07 +08:00
写日志 每天跑个 Python 脚本去持久化到数据库

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/590480

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX