如何按时间段限制表单提交?

时间:2017-07-17 17:15:45

标签: php laravel

我正在尝试将表单提交限制为15分钟,因此用户必须在15分钟内完成表单提交。表单分为两页:详细信息和付款,所以我想必须在会话中设置限制。但我不知道从哪里开始。我尝试搜索所有内容,但所有结果都说明了如何限制表单提交,因此用户每天只能提交5次左右。任何人都可以给我一个例子或链接如何实现这个目标吗?

我使用laravel作为框架。

3 个答案:

答案 0 :(得分:0)

您必须定义阻止提交的方式,IP? SessionID的? LoggedUser?

之后,您应该保存最后一次发布的唯一信息,并在每次发布帖子时验证信息

答案 1 :(得分:0)

您可以通过使用ajax制作子目录来制作定时子目录,当您打开页面时,您可以使用当前时间初始变量,当您单击提交时,您可以将该变量与当前时间进行比较,如果它少于15分钟,您可以提交ajax或不提交其他内容

答案 2 :(得分:0)

您可以使用JavaScript(或jquery lib)倒计时并禁用提交按钮

function startTimer(duration, display) {
    var timer = duration, minutes, seconds;
    setInterval(function () {
        minutes = parseInt(timer / 60, 10)
        seconds = parseInt(timer % 60, 10);

        minutes = minutes < 10 ? "0" + minutes : minutes;
        seconds = seconds < 10 ? "0" + seconds : seconds;

        display.textContent = minutes + ":" + seconds;

        if (--timer < 0) {
            timer = duration;
        }
    }, 1000);
}

window.onload = function () {
    var fiveMinutes = 60 * 5,
        display = document.querySelector('#time');
    startTimer(fiveMinutes, display);
};

<body>
    <div>Registration closes in <span id="time">05:00</span> minutes!</div>
</body>

禁用提交按钮更改startTimer功能,如下所示:

if (--timer < 0) {
    timer = duration;
}else{
    // get button id and disable it or redirect page
}

将计时器传递到第二页,您可以向表单添加隐藏的输入,并在每次执行时更新它:

if (--timer < 0) {
    timer = duration;
    // here get hidden input id and update value
}else{
    // get button id and disable it or redirect page
}

此处的倒计时功能:The simplest possible JavaScript countdown timer?