在发表评论之间创建延迟

时间:2012-08-03 12:30:12

标签: php comments delay

我在我的论坛添加评论部分,我想添加一个延迟,也许30秒左右来阻止人们发送垃圾邮件和验证码。

这是最好的方法吗?我能想到的唯一方法就是使用cookies,还有其他建议吗?

4 个答案:

答案 0 :(得分:1)

您可以使用PHP会话来执行此类操作,但不确定它是如何“傻瓜”证明的。

这个想法会做点什么:

if(isset($_POST['cmdComment'])){
  $_SESSION['comment_posted'] = time();
}

然后你可以有一个函数说checkTime(),你可以把它放在那里,从它现在的时间减去会话值。如果差异为>= 30秒,则继续发布并将$_SESSION['comment_posted']设置为新时间,否则忽略发布请求。

答案 1 :(得分:0)

  1. 在数据库中插入注释时,请确保跟踪用户和时间戳。
  2. 当用户再次发帖时,检查他发布的最后一条评论是否是30秒之前。
  3. 相应处理

答案 2 :(得分:0)

一个论坛通常有成员,至少我不知道有没有成员。

现在,如果您发表评论,我假设您将其放在一个名为Comment的表中,其中包含ID,POST_ID,USER_ID,MESSAGE,POST_DATETIME

至少我知道如何做到这一点。

现在,当用户上次评论某个帖子时,您拥有日期时间。现在您可以查询您的数据库是否可以再次发表评论

答案 3 :(得分:0)

当用户发表评论时,在会话中写下当前时间戳并再添加30秒:

$_SESSION['postedTime'] = time() + 30;

如果要检查是否超过30秒,请获取当前时间戳并进行比较:如果当前时间戳大于会话中的时间戳,则传递30秒:

$timestamp = time();
if($timestamp > $_SESSION['postedTime'])
{
    // allow posting
}
else
{
    // decline
}

为了更加安全,您可以在数据库中插入用户的IP +帖子时间戳。