php - 如何将点击的验证码的响应作为变量获取

标签 php ajax recaptcha

我想在我的登录页面中包含 google recaptcha。

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

但不知道如何获取点击验证码的响应,可能的响应类型(truefalse,或。 ..什么?),也处理它们。

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

有什么帮助吗?

最佳答案

您必须使用grecaptcha.getResponse()来获取用户的响应。作为旁注,使用 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
        }
    }
?>

关于php - 如何将点击的验证码的响应作为变量获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45662242/

相关文章:

php-fpm 重启后 PHP kill exec() 后台进程

php - 我应该如何命名包含两个单词表的数据透视表?

php - JSON、AJAX 在 Firefox 上有效,但在 Chrome 上无效

javascript - 使用 ajax 中的值填充下拉列表

python - 如何使用 Python 验证 ReCaptcha 响应服务器端?

javascript - 由于某种原因,reCaptcha 呈现在最右下角

php - CakePHP 中 SSL 的最佳实践

php - jquery 整数 post ajax php -> 无法识别的表达式 0

javascript - 向 ASP MVC 结果注入(inject)一些内容

asp.net - 阻止自动化工具访问网站