我在我的论坛中添加了一个评论部分,我想添加一个延迟,可能是 30 秒左右,以阻止人们与验证码一起发送垃圾邮件。
最好的方法是什么?我能想到的唯一方法是使用 cookie,还有其他建议吗?
你可以使用 PHP 会话来做这样的事情,但不确定它有多“傻瓜”证明。
这个想法是做一些事情:
if(isset($_POST['cmdComment'])){
$_SESSION['comment_posted'] = time();
}
然后你可以有一个函数说checkTime()
你可以把它放在那里从现在的时间中减去会话值。如果差为>= 30
秒,则继续发布并将 设置$_SESSION['comment_posted']
为新时间,否则忽略发布请求。
一个论坛通常有成员,至少我不知道任何没有它的人。
现在,如果您发表评论,我假设您将其放在名为 Comment 之类的表中,其中包含 ID、POST_ID、USER_ID、MESSAGE、POST_DATETIME
至少我会这样做。
现在您有了用户上次评论某个帖子的日期时间。现在您可以查询您的数据库,他或她是否可以再次发表评论
当用户发表评论时,在会话中写入当前时间戳并将其添加额外的 30 秒:
$_SESSION['postedTime'] = time() + 30;
当您想检查是否超过 30 秒时,获取当前时间戳并比较它们:如果当前时间戳大于会话中的 1,则通过 30 秒:
$timestamp = time();
if($timestamp > $_SESSION['postedTime'])
{
// allow posting
}
else
{
// decline
}
为了更安全,您可以在数据库中插入用户的 IP + 发布时间戳。