按时间限制表单提交

时间:2016-09-06 05:09:41

标签: php

我想限制用户在特定时间限制内提交表单的次数。我了解用户可以拒绝cookie或删除会话,但这并不会让我感到烦恼。

我有以下代码,来自this thread几乎是完美的:

session_start();

if (isset($_SESSION['last_submit']) && time()-$_SESSION['last_submit'] < 60)
    die('Post limit exceeded. Please wait at least 60 seconds');
else
$_SESSION['last_submit'] = time();

我遇到的问题是它似乎是在页面加载时运行,而不是在提交表单时运行。

  • 它工作的地方 - 如果我只加载页面form.php一次,然后提交并返回到form.php它正常工作并提供超出限制的消息。
  • 它不工作的地方 - 如果我加载form.php,然后刷新页面或再次加载页面它告诉我超出了帖子限制。情况并非如此,因为用户尚未提交表单,只刷新了页面。

是否可以将代码与表单提交链接起来,以便用户可以根据自己的喜好重新加载页面,并且只有在实际提交表单后才会返回超出帖子限制的消息?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在if语句中,您可以检查所需的帖子值。如果它存在,那么它是一个提交而不是重新加载。

类似的东西:

if (isset($_SESSION['last_submit']) && time()-$_SESSION['last_submit'] < 60 
    && $_POST['foo'] != ''){
//....