谷歌重新使用我的jquery / ajax函数

时间:2016-02-29 18:23:27

标签: php jquery ajax validation recaptcha

搜索有关设置reCaptcha似乎导致使用jQuery验证。但是,我不确定如何在ajax表单提交的上下文中执行此操作。

目前我使用的是Validity,而不是jQuery验证。我的标题和密钥中都有脚本引用。

我应该在哪个阶段验证reCaptcha?

<form id="intake-form" class="grid-form" action="javascript:void(0);">
     ...
    <div class="g-recaptcha" data-sitekey="key_here"></div>
    <input type="submit" name="submit" value="Send!" />
    <br />
    <p id="formstatus"></p>
</form>
$("#intake-form").submit(function () {
    var str = $(this).serialize();
    if (validateIntakeForm()) {  // validate intake fields with validity
        $.ajax({
            type: "POST",
            url: global['base']+"intakeform",
            data: str,
            success: function (msg) {
                $("#formstatus").ajaxComplete(function (event, request, settings) {
                    if (msg == 'success') {
                        result = '<div class="successmsg">Your request has been sent.';
                        $('#intake-form').clearForm();
                    } else {
                        result = 'There was a problem sending your message.<br />' + msg;
                    }
                    $(this).html(result);
                });
            }

        });
        return false;
    }
});

3 个答案:

答案 0 :(得分:6)

Google会为您验证您的再次验证。 请查看以下示例。

  * (user_story_2)
  *      
 /
* (master)
|\
| *
| *
|/
*
*
*

&GT;

您可以参考docs

答案 1 :(得分:1)

您可以使用google插件验证php中的recaptcha 试试这个link 然后在PHP验证脚本中包含此代码

$recaptcha = new \ReCaptcha\ReCaptcha( RECAPTCHA_SECRET_KEY );
$resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER["REMOTE_ADDR"] );
if(!$resp->isSuccess()) //ERROR CAPTCHA NOT VALIDATED

答案 2 :(得分:-1)

我在我的一个网站上成功实施了recaptcha。 很长一段时间以来我都没有玩过它,所以我不知道Google究竟是如何处理这个问题的。

但无论如何,这是我的工作代码的简化版本,希望它可以帮助你。

<body>
<form method="post" action="">
    <!-- your regular form fields here... -->
    <div class="g-recaptcha" data-callback="processCaptcha" data-sitekey="THE_KEY_HERE"></div>
    <!-- or your regular form fields here... -->
    <input type="submit" value="Send"/>
</form>
<script type="text/javascript" src="https://www.google.com/recaptcha/api.js?hl=eng"></script>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</body>

对于src =“https://www.google.com/recaptcha/api.js?hl=eng”的脚本, 我注意到对此链接的引用:https://developers.google.com/recaptcha/docs/language

服务器端:

<?php


$secret = "THE_KEY_HERE";
$errors = [];
$gRecaptchaResponse = $_POST["g-recaptcha-response"];
$recaptcha = new \ReCaptcha\ReCaptcha($secret); // this class is provided by google

$resp = $recaptcha->verify($gRecaptchaResponse, $_SERVER['REMOTE_ADDR']);
if (false === $resp->isSuccess()) {
//                $errors = $resp->getErrorCodes();
    $errors[] = "Boo, you are a bot";
}


if (empty($errors)) {
    // your success routine here
}
else {
    // your error routine here
}