ReCaptcha Проблемы с Ajax - PullRequest
       12

ReCaptcha Проблемы с Ajax

0 голосов
/ 07 апреля 2011

Я использую reCaptcha и использую Ajax-вызов для моей PHP-страницы, чтобы проверить достоверность капчи, без обновления страницы.

У меня есть этот код jQuery:

$.post('php/captcha.php', $('#captchaPost').serialize(), function(data){
            if(data != "Valid")
            {
                $('#captchaError').show();
                $captchaFlag = "Invalid";
            }
            else
            {
                $('#captchaError').hide();
                $captchaFlag = "Valid";
            }
        });

И этот PHP-код для пост-обработчика:

<?php
require_once('recaptchalib.php');
$privatekey = "1234567890";
$resp = recaptcha_check_answer ($privatekey,
                        $_SERVER["REMOTE_ADDR"],
                        $_REQUEST["recaptcha_challenge_field"],
                        $_REQUEST["recaptcha_response_field"]);

if (!$resp->is_valid) 
{
// What happens when the CAPTCHA was entered incorrectly
echo "Error";
} 

else 
{
echo "Valid";
}
?>

Я проверил ответ, используя Firebug, и PHP-скрипт всегда возвращает «Ошибка», даже когда я ввожу правильную капчу. По словам сервера, форма выглядит правильно POST, хотя я не вижу, как проверить, что было размещено в форме. Я не использую функцию PHP для создания формы reCaptcha; Я получил HTML из документации Google по этому вопросу. Любая помощь?

1 Ответ

1 голос
/ 07 апреля 2011

Попробуйте использовать этот код:

function validateCaptcha()
{
    challengeField = $("input#recaptcha_challenge_field").val();
    responseField = $("input#recaptcha_response_field").val();
    var html = $.ajax({
    type: "POST",
    url: "php/captcha.php",
    data: "recaptcha_challenge_field=" + challengeField + "&amp;recaptcha_response_field=" + responseField,
    async: false
    }).responseText;

    if(html != "Valid")
    {
        $('#captchaError').show();
        $captchaFlag = "Invalid";
    }
    else
    {
        $('#captchaError').hide();
        $captchaFlag = "Valid";
    }
}

Не похоже, что вы правильно отправляли данные в jQuery.

Редактировать Также убедитесь, чтовызовите validateCaptcha () для кнопки.Например:

onSubmit="javascript:validateCaptcha()"
...