代码之家  ›  专栏  ›  技术社区  ›  LondonGuy

如何对我的reCAPTCHAAJAXAPI进行post请求?

  •  0
  • LondonGuy  · 技术社区  · 15 年前

    当前,无论在验证码文本字段中键入什么,它都不会验证。它总是给我输入新单词。

    我想这是因为我需要测试用户是否输入了正确的验证码答案。我需要发一封邮件请求。

    如果能得到任何帮助,我将不胜感激。

    这是我的密码:

    $(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 回复  |  直到 15 年前
        1
  •  1
  •   Robert    15 年前

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

    然后在表单submit上运行register并让PHP检查值。

    1. 显示reCAPTCHA并等待用户提交
    2. 将AJAX发送到PHP,让recaptcha检查并回答问题
    3. 向用户显示错误或成功。