我有以下的jQuery代碼監聽到的驗證碼,用戶輸入併發送每個KEYUP一個Ajax請求,看是否正確的代碼已經被鍵入:jQuery的KeyUp事件與AJAX導致不正確的結果
$('#joinCaptchaTextBox').keyup(function() {
$.get('scripts/ajax/script.php', {
'join_captcha': '1',
'captcha': $('#joinCaptchaTextBox').val()},
function(data) {
var obj = JSON.parse(data);
if(obj.ajaxResponse.status) {
$('#joinCaptchaNotAcceptable').hide();
$('#joinCaptchaAcceptable').show();
}else{
$('#joinCaptchaAcceptable').hide();
$('#joinCaptchaNotAcceptable').show();
}
});
});
在另一端的PHP腳本只是檢查了會議,並回答說:
if($siteCaptcha == $_SESSION['secretword']) {
$this->captchaCompare = TRUE;
}else{
$this->captchaCompare = FALSE;
}
這工作的時間細95%,但我發現有時報告輸入驗證碼是即使其正確不正確。我認爲這可能是因爲當快速輸入時,很多請求被髮送到服務器,並且返回的訂單或請求不是發送的訂單,因此(因爲只有一個將是正確的)之前的一個會最後收到並顯示不正確。
有沒有更好的方法來做到這一點?有沒有辦法確保上次發送的請求最後收到?有什麼我在這裏失蹤。我可以提供更多信息。
三江源
這將幫助,因爲它會引入等待/延遲https://開頭的github .com/dennyferra/TypeWatch –
這是一個壞主意;這意味着一個腳本只需要發送大約25 *個字符*最多*來強制你的驗證碼。換句話說,你會收到垃圾郵件。 – Dave
好吧不是那麼糟糕;我以爲你正在檢查文字*到目前爲止*。但這仍然非常糟糕。如果你弄錯了,每個你所見過的CAPTCHA都會有新的改變。計算機視覺能夠縮小可能的字母,並且如果允許多次猜測(可以這樣做),那麼強力可以應用於其餘的可能性。 – Dave