2017-02-25 46 views
2

我正在使用Silex(不确定如果相关)来构建博客,并且我想添加用户报告评论的可能性。如何实施“报告/国旗评论”

起初我只是增加了一个布尔flagged列到我的comments表,默认情况下它设置为false,并切换到true每当用户在“报告的注释”按钮点击。我的计划是,然后能够轻松地向管理员显示所有标记的评论。但是我意识到,任何用户都可以随时报告每一条评论,并用它淹没管理面板。

所以我想尝试不同的方式。我想统计特定评论被标记了多少次,因此我可以在管理面板的“标记评论”部分反映这一点,这样管理员就可以快速查看哪些评论已被一个孤独的巨魔标记,哪些已被大量标记并值得关注。
我也想记住一个特定用户标记了自己的评论,所以我可以在他已经标记的评论中禁用他的“评论评论”按钮。这里

两个问题:

  • 它是一个很好的办法做到这一点?
  • 我该如何在db中实现这个功能?单个评论被标记的次数应该很容易存货,但是单个用户所标记的所有评论的日益增长的列表又如何呢?

谢谢!

+0

如果你担心巨魔而不是黑客,你可以在浏览器中使用cookie和一些javascript来实现它。如果你想做到防弹,你可以将标志存储在一个单独的表中,并存储标志日期,IP和用户标识。那么你有所有的数据做出正确的决定 –

+0

我应该把所有的东西都放在'flags'table吗?我可以看到一个具有'flag_id','flag_date','user_id'和'comment_id'列的列,这样我只需在该表中计算给定评论ID的标志数量,并且我可以轻松地获取给定的所有标志用户的ID。是吗?当我可以将它的ID存储在'flags'表中时,为什么我会存储用户IP? – yurden

+0

flag_id可能是主键,comment_id将FK添加到评论表中,然后如果用户在发表评论时记录日期,那么它的日期时间为user_id。如果用户不需要登录来标记评论,那么ip列可能是有用的。所以你可以在显示页面时过滤“可疑”评论 –

回答

1

做到这一点的一个好方法是创建一个新的表格,以保留在最低限度的用户标识和纪念。为用户标记评论时想要跟踪的任何其他信息添加其他列。

这种方法的好处是,它可以让你在你的sql中使用连接来提取用户及其标记的评论,或评论和所有标记它的用户。它还允许您通过直接查询该表进行快速计数。

随着表格的增长,您的用户标识和纪念柱上的索引将会保持快速。