-1

我在我的论坛中添加了一个评论部分,我想添加一个延迟,可能是 30 秒左右,以阻止人们与验证码一起发送垃圾邮件。

最好的方法是什么?我能想到的唯一方法是使用 cookie,还有其他建议吗?

4

4 回答 4

1

你可以使用 PHP 会话来做这样的事情,但不确定它有多“傻瓜”证明。

这个想法是做一些事情:

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

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

于 2012-08-03T12:34:02.343 回答
0
  1. 将评论插入数据库时​​,请确保跟踪用户和时间戳。
  2. 当用户再次发帖时,检查他发表的最后一条评论是否是在 30 秒之前。
  3. 相应地处理这个
于 2012-08-03T12:36:36.340 回答
0

一个论坛通常有成员,至少我不知道任何没有它的人。

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

至少我会这样做。

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

于 2012-08-03T12:37:50.273 回答
0

当用户发表评论时,在会话中写入当前时间戳并将其添加额外的 30 秒:

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

当您想检查是否超过 30 秒时,获取当前时间戳并比较它们:如果当前时间戳大于会话中的 1,则通过 30 秒:

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

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

于 2012-08-03T12:38:37.200 回答