好吧,基本上我有一个用户提交的表单,但我需要一个'冷却计时器',这样用户就无法在给定的时间内再次提交。 我无法在php中找到如何做到这一点,如果可能的话,这将是首选。
提前致谢。
答案 0 :(得分:1)
您可以在数据库(例如:MySQL)中存储上次成功提交的时间戳,并在每次提交时检查数据库中的值+冷却时间是否小于或等于当前时间戳。
您可以使用time()
在PHP中获取当前时间戳。
答案 1 :(得分:0)
你必须使用会话!
当用户提交表单时,您必须将时间戳添加到其会话中:
$_SESSION['last_submit'] = time();
现在,当他再次提交表单时,只需比较时间戳,e。 G。 :
if(isset($_SESSION['last_submit']) && ((time() - $_SESSION['last_submit']) < 60 * 5)) { //time in seconds! 60 seconds = 1 Minute and 1 minute * 5 = 5 minutes!
die('Wait a few');
}
$_SESSION['last_submit'] = time();
// regular form processing here!
我们在这里做的是首先检查:是先前的时间戳集吗?如果time() - lastsubmit
小于5分钟。
如果这些都返回true,那么表单就会提交给“早期”,我们就会死掉。如果不是,我们刷新会话的时间戳,然后继续。
当然不要忘记开始会议!
session_start();
在页面的最顶部!
正如我在评论中所读到的(再次感谢!),用户可以使用其他浏览器或清除cookie。为了防止这种情况(尽可能好),您还必须考虑IP。
为此你必须使用服务器端数据库!将客户端的IP存储到具有时间戳的数据库中,然后在if语句中,您不需要从会话中获取时间戳,而是从数据库中获取时间戳。使用客户端的IP来获取关联。时间戳。