2011-05-13 108 views
1

Recaptcha: 我想使用recaptcha作爲構建於jQuery和ASP.net上的我的網站的登錄頁面。在發佈這個問題之前,我搜索了關於recaptcha和研究... 使用recaptcha與ASP.NET做服務器端驗證,我需要包括dll的reCaptcha並將其用作服務器控件,然後驗證它使用頁面的isValid屬性。用於客戶端驗證的Recaptcha理想解決方案

我想要的是使用jquery的recaptcha客戶端驗證,我該如何做?

有沒有什麼好的教程來做到這一點或理想的解決方案?

+2

與客戶端驗證的問題是,用戶可以將其關閉,和機器人甚至可能不會想運行它... – cjk

+0

良好的閱讀HTTP: //bit.ly/1hsTyyz – Coder

回答

3

你不能做到這一點在客戶端。如果沒有服務器的幫助,你無法做到這一點,因爲recaptcha歸谷歌(不是你的域名)所有,你不能直接提出請求來驗證它。

由於安全原因,禁止跨域XMLHttpRequests。您也可以在recaptcha填寫完畢(recaptcha_response_fieldonblur)並驗證它時向您的服務器發出AJAX呼叫。

+0

你可以詳細說明如何做到這一點? 這樣的: $就 ({ 類型: 'POST', URL: '的WebMethod', 數據:JSON.stringify(captchaInfo) 的contentType:「應用/ JSON;字符集= utf-8的」, 數據類型: 'JSON', 成功:函數(MSG) { 警報(msg.d); //或者是O假真,true表示CAPTCHA驗證成功 。} }); – abhijit

+1

看看這是否會幫助你 - http://code.google.com/apis/recaptcha/docs/display.html#AJAX –

+0

那個我已經看到 – abhijit

0

我建議使用谷歌的reCaptcha(是它的服務器端),因爲客戶端可以隨時打開客戶端驗證碼。

但無論如何這裏是8個使用jQuery的Cpatchas,包括教程。

8 jQuery CAPTCHA Plugin with Tutorial

希望它能幫助:)

2

爲什麼在世界上,你會要處理在客戶端驗證碼?也許你就幫您的表單提交函數裏面是這樣的:

$("#form1").submit(function(){ 
    // other validation 
    if(reCaptchaValidated()==false){ 
     return false; 
    } 
}); 

您能防止有人這樣做:

$('#form1').unbind("submit").submit(); 
1

這裏是我的解決方案

添加引用谷歌AJAX recapcha和生成capcha。

<script src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js" ></script> 

<script type="text/javascript"> 
    function showRecaptcha() { 
    Recaptcha.create("6LfLrusSAAAAAIoi3XkbGvm2fLao3VjsNTjRoK-K", 'captchadiv', { 
          tabindex: 1, 
          theme: "white", 
          callback: Recaptcha.focus_response_field 
    }); 
    } 
    window.onload = function() { showRecaptcha(); } 
</script> 

HTML入門

<form id="myform"> 
    <div id="captchadiv"> 
    </div> 
<input type="submit" value="Submit" /> 
</form> 

創建一個JavaScript調用

<script type="text/javascript"> 
$('myform').submit(function() { 

    $.getJSON("someurl/api/ValidateRecapcha", param).done(function (ret) { 
        if(ret) alert('recacha matched'); 
        else alert('mismatched'); 
    }) 
}) 
</script> 

進出口使用ASP.net的WebAPI的服務,並從這裏下載的Recaptcha.dll。https://developers.google.com/recaptcha/docs/aspnet

[HttpGet] 
public bool ValidateRecapcha(string challengetKey, string input) 
{ 
    var r = new Recaptcha.RecaptchaValidator(); 
    r.PrivateKey = "Recapcha Private Key" 
    r.Challenge = challengetKey; 
    r.Response = input; 
    r.RemoteIP = "REMOTE_ADDR".ToServerVariables(); 
    var response = r.Validate(); 
    return response.IsValid; 
} 

希望這有助於

相關問題