如何获得clicked captcha作为变量的响应

时间:2017-08-13 15:57:56

标签: php ajax recaptcha

我想在登录页面中加入google recaptcha。

通常情况下,我从各种输入中收集变量,并使用ajax将其发送到prologin.php以进行处理。

但是我不知道如何获得clicked验证码的回复,可能会有哪些回复(truefalse或......什么?),他们也接受了他们。

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',
    ...
});

任何帮助?

2 个答案:

答案 0 :(得分:2)

您必须使用grecaptcha.reset()来获取用户的回复。作为旁注,使用$('#btnlogin').click(function(){ var a = ...; var b = ...; var captchaResponse = grecaptcha.getResponse(); $.ajax({ url: 'prologin.php', ... }); ... }); 要求最终用户再次使用reCAPTCHA进行验证。

$('#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
        }
    });
    ...
});

以下是参考:https://developers.google.com/recaptcha/docs/verify

更新(1):

是的,您必须将用户的响应发送到后端PHP页面 prologin.php 并在那里验证。粗略地说,您的AJAX和后端PHP代码将是这样的:

<强> AJAX:

<?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
        }
    }
?>

<强> prologin.php

number_of_records

答案 1 :(得分:1)

Google recaptcha的回复以名称g-recaptcha-response发送。这也是输入(textarea)的类名和ID。所以你可以试试其中任何一个:

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