I made a comment section for my project. But it lacks some 'security' I guess?
1) I can comment as many as I want.
2) Similar comment is not disabled.
I'm wondering if there is such a thing in PHP.
1)如果您在数据库中保存了日期/时间值,您可以验证“您上次评论的时间”和用户尝试添加新评论的实际时间。
但是,如果您想在演示文稿中添加此验证,您可以暂时隐藏/禁用该部分并显示/启用该部分。
2)如果您想避免评论部分中的重复条目,请验证内容或标题是否与数据库不同。
我认为当您进行第一次验证时(例如,如果时间为 5 秒)并且再次发表评论是正确的,那么您验证评论是否相同。
您必须在数据库中保存评论。如果行重复,您可以像这样添加唯一索引
ALTER IGNORE TABLE comments ADD UNIQUE INDEX comment_name (id, name );
对于处理评论并将其插入数据库的代码,您应该添加检查以 (a) 查看同一个人是否在最后 X 分钟内发表评论,或 (b) 查看是否有类似的评论。
(a) 很容易实现。我在这里假设您将评论存储在数据库中,其中有一列 foruser_id
和一列 for timestamp
。然后,您可以运行查询以查看该用户是否已在时间限制内发表评论(在此示例中,我们将其设置为两分钟。)
SELECT * FROM `comments` WHERE `user_id`='{$user_id}' AND DATE_SUB(NOW(), INTERVAL 2 MINUTE) < `timestamp`
如果您运行该查询并返回一行,那么您知道该用户在不到两分钟前发表了评论。
(b) 更难,如果只是因为您没有真正指定评论“相似”的含义是什么。您可以使用关键字或 Levenshtein 等字符串比较功能检查文本中的相似性。您将遵循与 (a) 中相同的逻辑,只需运行数据库查询以检查相似性并在必要时报告错误。
如果您没有找到任何符合上述检查的行,那么您可以安全地将评论插入到您的数据库中。否则,您可以向用户报告错误,或者您想要处理它。
如果你进入更多细节,我相信有人可以进一步帮助你。
你需要自己实现这样的事情。您可能希望为此使用 PHP 会话。