我有我建立的PHP AJAX json登錄表單。 我已經有功能,如果你已經超過5次失敗的嘗試,登錄表單將被阻止。拒絕快速點擊登錄帖子
但如何拒絕沒有進入用戶或通過快速登錄企圖?
我的意思是,在點擊登錄按鈕上的快速按鈕時,在stackoverflow的登錄系統中,70%的帖子到服務器被拒絕。
而且我不想在帖子之間拖延,只是在其他帖子完成之前否認帖子。
那麼拒絕快速點擊登錄帖子的最好方法是什麼?
我有我建立的PHP AJAX json登錄表單。 我已經有功能,如果你已經超過5次失敗的嘗試,登錄表單將被阻止。拒絕快速點擊登錄帖子
但如何拒絕沒有進入用戶或通過快速登錄企圖?
我的意思是,在點擊登錄按鈕上的快速按鈕時,在stackoverflow的登錄系統中,70%的帖子到服務器被拒絕。
而且我不想在帖子之間拖延,只是在其他帖子完成之前否認帖子。
那麼拒絕快速點擊登錄帖子的最好方法是什麼?
您可以使用以下(示例)方法,它可以在服務器端與會話一起使用,以防止人們點擊太快。
現在的代碼至少設置爲3秒。
您可以將您用於成功發佈的代碼放入else
條件中。
重要提示:如果您正在使用多個頁面,則session_start();
需要位於每個頁面內,對於包含的文件也是如此。
目前設置爲內部的一個文件時,使用action=""
<?php
session_start();
$_SESSION['start_time'] = time();
if (isset($_POST['submit'])) {
$current_time = time();
if (!empty($_POST['start_time'])) {
if (($current_time - $_POST['start_time']) < 3) { // 5 is number of seconds differential; change as you sit fit
// someone/something has submitted this form in under 5 seconds from reaching the page
// probably a bot
echo "Sorry, too fast";
exit;
}
else {
$fname = $_POST['fname'];
$fname = ucwords($fname);
echo "Thank you $fname";
}
}
}
?>
<form action="" method="post">
<input type="hidden" name="start_time" value="<?php echo $_SESSION['start_time']; ?>"/>
<!-- other form fields -->
<input type="text" name="fname">
<input type="submit" name="submit" value="Submit" />
</form>
如果你要拒絕的職位上一個已經完成
我建議在會議
存儲後狀態值之前因此,當發佈帖子時,此狀態將改變爲表示正在忙碌的值
並且如果有人嘗試p在完成之前,他們會從服務器收到一條消息,表明它正忙。
我不知道你是如何實現這個,但這更像是解釋這個想法的僞代碼。
<?
if($_SESSION['busy'] == true){
$_SESSION['busy'] = true;
//PHP POST HANDLER CODE HERE
$_SESSION['busy'] = false;
//RETURN JSON FOR RESULT OF LOGIN ATTEMPT
}
else
{
//RETURN JSON FOR BUSY STATUS
}
?>
你可以使用蜜罐實際上,或睡眠功能。加會議也不是一個壞選擇。 –
睡眠會很糟糕,它會需要時間之間的嘗試,我不想要heppen .. –
然後使用蜜罐即使他們主要是反對垃圾郵件發送者,它會工作。加會話/ cookies。 –