איך אני יכול לאמת את Google reCAPTCHA v2 באמצעות JavaScript/jQuery?
יש לי טופס צור קשר פשוט ב-ASPX. אני רוצה לאמת את ה-reCaptcha (בצד הלקוח) לפני שליחת הטופס. בבקשה עזור.
דוגמת קוד:
<%@ 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>
אני רוצה לאמת את הקפצ'ה בלחיצה על cmdSubmit.
בבקשה עזור.
תשובה #1
אימות בצד הלקוח של reCaptcha - מה שעבד לי היה הבא:
אם reCaptcha אינו מאומת בצד הלקוח grecaptcha.getResponse(); מחזיר null, אחרת הוא מחזיר ערך שאינו null.
קוד Javascript:
var response = grecaptcha.getResponse();
if(response.length == 0)
//reCaptcha not verified
else
//reCaptch verified
תשובה #2
השתמש בזה כדי לאמת קפטצ'ה של גוגל עם ג'אווהסקריפט פשוט.
הקוד הזה בגוף ה-HTML:
<div class="g-recaptcha" id="rcaptcha" style="margin-left: 90px;" data-sitekey="my_key"></div>
<span id="captcha" style="margin-left:100px;color:red" />
קוד זה יש למקם בסעיף הראשי כדי לקרוא למתודה get_action(this) מהכפתור:
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;
}
}
תשובה #3
אם אתה מציג את ה-Recaptcha בקריאת חזרה
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
שימוש ב-DIV ריק כתחליף
<div id='html_element'></div>
אז אתה יכול לציין קריאת פונקציה אופציונלית בתגובה מוצלחת ל-CAPTCHA
var onloadCallback = function() {
grecaptcha.render('html_element', {
'sitekey' : 'your_site_key',
'callback' : correctCaptcha
});
};
תגובת ה-recaptcha תישלח אז לפונקציה 'correctCaptcha'.
var correctCaptcha = function(response) {
alert(response);
};
כל זה היה מההערות של ממשק התכנות של גוגל:
הערות API של Google Recaptcha v2
אני קצת לא בטוח למה אתה רוצה לעשות את זה. בדרך כלל היית שולח את השדה g-recaptcha-response יחד עם המפתח הפרטי שלך כדי לאמת בצורה בטוחה בצד השרת. אלא אם כן רצית להשבית את כפתור השליחה עד שה-recaptcha תהיה מוצלחת או משהו כזה - במצב כזה מה שכתוב למעלה אמור לעבוד.
מקווה שזה עוזר.
פול
תשובה #4
תשובתו המפושטת של פול:
מקור :
<script src="https://www.google.com/recaptcha/api.js"></script>
HTML :
<div class="g-recaptcha" data-sitekey="YOUR_KEY" data-callback="correctCaptcha"></div>
JS :
var correctCaptcha = function(response) {
alert(response);
};
