我想限制表單提交到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