как получить ответ по нажатой капче как переменную

Я хочу включить Google Recaptcha на моей странице входа.

Обычно я собираю переменные из различных входных данных и отправляю их, используя ajax в prologin.php для обработки.

Но не знаю, как получить ответ clicked капча, какие ответы возможны (true, falseили … что?), чтобы обработать их также.

login.php

<script src='https://www.google.com/recaptcha/api.js'></script>
<input type='text'...>
<input type='checkbox'...>
<div class="g-recaptcha" data-sitekey="6Ld..."></div>
<div id='btnlogin'>LOGIN</div>

login.js

$('#btnlogin').click(function(){
var a = ...;
var b = ...;
var captchaResponse = ...;  // what ?
$.ajax({
url: 'prologin.php',
...
});

Любая помощь?

1

Решение

Вы должны использовать grecaptcha.getResponse() чтобы получить ответ пользователя. И в качестве sidenote, используйте grecaptcha.reset() попросить конечного пользователя снова подтвердить с помощью reCAPTCHA.

$('#btnlogin').click(function(){
var a = ...;
var b = ...;
var captchaResponse = grecaptcha.getResponse();
$.ajax({
url: 'prologin.php',
...
});
...
});

Вот ссылка: https://developers.google.com/recaptcha/docs/verify

Обновление (1):

Да, вы должны отправить ответ пользователя на страницу PHP prologin.php и проверить это там. Грубо говоря, ваш AJAX и бэкэнд-код PHP будет выглядеть так:

AJAX:

$('#btnlogin').click(function(){
var a = ...;
var b = ...;
var captchaResponse = grecaptcha.getResponse();
$.ajax({
type: 'POST',
url: 'prologin.php',
data: {a: a, b: b, captchaResponse: captchaResponse};
success: function(data) {
// reset the reCaptcha
grecaptcha.reset();
},
error: function(jqXHR, textStatus, errorThrown){
// error
}
});
...
});

prologin.php

<?php
//your site secret key
$secret = 'YOUR_SECRET_KEY';

if(isset($_POST['captchaResponse']) && !empty($_POST['captchaResponse'])){
//get verified response data
$param = "https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$_POST['captchaResponse'];
$verifyResponse = file_get_contents($param);
$responseData = json_decode($verifyResponse);

if($responseData->success){
// success
}else{
// failure
}
}
?>
2

Другие решения

Ответ Google recaptcha отправляется с именем g-recaptcha-response, Это также имя класса и идентификатор для ввода (textarea). Таким образом, вы можете попробовать любой из них:

$('#g-recaptcha-response').val();
$('form .g-recaptcha-response').val();
$('form [name="g-recaptcha-response"]').val();
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector