如何为我的reCaptcha ajax api发帖请求?

时间:2010-09-21 21:26:35

标签: php ajax http codeigniter recaptcha

我的reCaptcha现在使用ajax实现到我的注册过程中。

目前无论在验证码文本字段中输入什么内容,它都无法验证。它只是不断给我输入新词。

我认为这是因为我需要测试用户是否输入了正确的验证码答案。我需要发送一个POST请求。

我不知道该怎么做..我以前从来没有这样做过,文档对我来说不够清楚..

我很感激我能得到的任何帮助。

这是我的代码:

$(document).ready(function(){

    $('#fhjoinForm').submit(function(e) {

        register();
        e.preventDefault();

    });

});


function register()
{
    hideshow('loading',1);
    error(0);

    $.ajax({
        type: "POST",
        url: "submit.php",
        data: $('#fhjoinForm').serialize(),
        dataType: "json",
        success: function(msg){

                if(parseInt(msg.status)==1)
                {
                Recaptcha.create("pub key xxxxxxxxxxx",
               "recaptcha_div",
                {
                theme: "clean",
                callback: function(){
                // what to do on success
                window.location=msg.txt;
         }

            }

     );
   }

            else if(parseInt(msg.status)==0)
            {
                error(1,msg.txt);
            }

            hideshow('loading',0);
        }
    });

}


function hideshow(el,act)
{
    if(act) $('#'+el).css('visibility','visible');
    else $('#'+el).css('visibility','hidden');
}

function error(act,txt)
{
    hideshow('error',act);
    if(txt) $('#error').html(txt);
}

这是我的帖子请求

<?php
require_once('recaptchalib.php');
$publickey = "pub key hidden"; // you got this from the signup page
$privatekey = "priv key hidden";

$resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

if ($resp->is_valid) {
    ?>success<?
}
else 
{
    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
       "(reCAPTCHA said: " . $resp->error . ")");
}
?>

1 个答案:

答案 0 :(得分:1)

您的jQuery代码看起来像是在提交表单后创建reCAPTCHA,因为它在PHP尝试验证后在success()函数中创建它。但实际上,应首先创建并显示reCAPTCHA。

然后在表单提交运行寄存器上,让PHP检查值。

  1. 显示reCAPTCHA并等待用户提交
  2. 将AJAX发送给PHP并让recaptcha_check_answer完成它的工作
  3. 向用户显示错误或成功。