Aspx'te basit bir iletişim formum var. Formu göndermeden önce reCaptcha'yı (istemci tarafı) doğrulamak istiyorum. Lütfen yardım edin.
Örnek kod:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Test Form</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
$("#cmdSubmit").click(function () {
//need to validate the captcha
});
</script>
</head>
<body>
<form id="form1" runat="server">
<label class="clsLabe">First Name<sup>*</sup></label><br />
<input type="text" id="txtFName" name="txtFName" class="clsInput" /><br />
<div class="g-recaptcha" data-sitekey="my_key"></div>
<img id="cmdSubmit" src="SubmitBtn.png" alt="Submit Form" style="cursor:pointer;" />
</form>
</body>
</html>
Captcha'yı cmdSubmit
tıklamasında doğrulamak istiyorum.
Lütfen yardım edin.
reCaptcha'nın istemci tarafı doğrulaması - aşağıdakiler benim için çalıştı:
" grecaptcha.getResponse(); " reCaptcha istemci tarafında doğrulanmamışsa null döndürür, aksi takdirde null dışında bir değer döndürür.
Javascript Kodu:
var response = grecaptcha.getResponse();
if(response.length == 0)
//reCaptcha not verified
else
//reCaptch verified
Basit javascript ile google captcha'yı doğrulamak için bunu kullanın.
Bu kod html gövdesinde:
<div class="g-recaptcha" id="rcaptcha" style="margin-left: 90px;" data-sitekey="my_key"></div>
<span id="captcha" style="margin-left:100px;color:red" />
Bu kod, get_action(this) yöntemi form düğmesini çağırmak için head bölümüne yerleştirilir:
function get_action(form)
{
var v = grecaptcha.getResponse();
if(v.length == 0)
{
document.getElementById('captcha').innerHTML="You can't leave Captcha Code empty";
return false;
}
else
{
document.getElementById('captcha').innerHTML="Captcha completed";
return true;
}
}
Recaptcha'yı bir geri çağırma üzerinde oluşturursanız
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
yer tutucu olarak boş bir DIV kullanma
<div id='html_element'></div>
ardından başarılı bir CAPTCHA yanıtında isteğe bağlı bir işlev çağrısı belirtebilirsiniz
var onloadCallback = function() {
grecaptcha.render('html_element', {
'sitekey' : 'your_site_key',
'callback' : correctCaptcha
});
};
Recaptcha yanıtı daha sonra 'correctCaptcha' fonksiyonuna gönderilecektir.
var correctCaptcha = function(response) {
alert(response);
};
Tüm bunlar Google API notlarından alınmıştır:
Google Recaptcha v2 API Notları
Bunu neden yapmak istediğinizden biraz emin değilim. Normalde sunucu tarafında güvenli bir şekilde doğrulamak için g-recaptcha-response alanını Özel anahtarınızla birlikte gönderirsiniz. Recaptcha başarılı olana kadar gönder düğmesini devre dışı bırakmak istemediğiniz sürece - bu durumda yukarıdakiler çalışmalıdır.
Umarım bu yardımcı olur.
Paul