我在我的论坛添加评论部分,我想添加一个延迟,也许30秒左右来阻止人们发送垃圾邮件和验证码。
这是最好的方法吗?我能想到的唯一方法就是使用cookies,还有其他建议吗?
答案 0 :(得分:1)
您可以使用PHP会话来执行此类操作,但不确定它是如何“傻瓜”证明的。
这个想法会做点什么:
if(isset($_POST['cmdComment'])){
$_SESSION['comment_posted'] = time();
}
然后你可以有一个函数说checkTime()
,你可以把它放在那里,从它现在的时间减去会话值。如果差异为>= 30
秒,则继续发布并将$_SESSION['comment_posted']
设置为新时间,否则忽略发布请求。
答案 1 :(得分:0)
答案 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 +帖子时间戳。