我想限制表单提交到15分钟,所以用户必须在15分钟内完成表单提交。表格分为两页:细节和付款,所以我猜想限制必须在会话中设置。但我不知道从哪里开始。我试着搜索一切,但所有结果都说如何限制表单提交,所以用户每天只能提交5次。任何人都可以给我一个例子或链接如何实现这一目标?如何限制按时间段提交表单?
我正在使用laravel作为框架。
我想限制表单提交到15分钟,所以用户必须在15分钟内完成表单提交。表格分为两页:细节和付款,所以我猜想限制必须在会话中设置。但我不知道从哪里开始。我试着搜索一切,但所有结果都说如何限制表单提交,所以用户每天只能提交5次。任何人都可以给我一个例子或链接如何实现这一目标?如何限制按时间段提交表单?
我正在使用laravel作为框架。
您必须定义如何阻止提交IP? SessionID的? LoggedUser?
之后,你应该保存的唯一信息是最后一次后,每次验证信息发生时后
您可以通过使用AJAX使得submition使定时submition,当你打开网页,你可以在初始与当前时间变量,当你点击提交你可以比较该变量与当前时间,如果它少于15分钟,你可以让阿贾克斯提交或不你可以做另一件事
AJAX在这里几乎不需要。如果问题没有要求,引入它实际上增加了不必要的复杂性,并且可能使请求者感到困惑。 – David
你可以使用JavaScript(或jQuery的库)倒计时并禁用提交按钮
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
}
'“我想限制必须设置在会话中。” - 似乎是一个合理的方法。当表单首次发送给用户时,将当前时间戳记录到会话值中。当用户提交表单时,比较当前时间戳和会话存储时间戳。 – David
@David可以以某种方式显示计时器吗? – raqulka
当然。这部分将在JavaScript中完成,并且有很多可用的JavaScript定时器和倒计数的例子。 – David