1

我正在尝试使用 AJAX 将 reCAPTCHA 添加到我的 PHP 联系表单中。我希望使用 reCAPTCHA 显示用户并让用户输入它。如果它不正确,它应该在不离开页面的情况下显示。只有当 CAPTCHA 正确时,它才应该去contacts-go.php运行代码来发送电子邮件。我试图从这个例子中做到这一点。

这是我的contact.php页面上的内容:

<?php   
    session_start();
?>

<html>
    <head>
        <script type="text/javascript" src="/js/jquery-1.4.2.min.js"></script>
        <SCRIPT type="text/javascript">
            function validateCaptcha()
            {
                challengeField = $("input#recaptcha_challenge_field").val();
                responseField = $("input#recaptcha_response_field").val();
                //alert(challengeField);
                //alert(responseField);
                //return false;
                var html = $.ajax({
                type: "POST",
                url: "ajax.recaptcha.php",
                data: "recaptcha_challenge_field=" + challengeField + "&amp;recaptcha_response_field=" + responseField,
                async: false
                }).responseText;

                if(html == "success")
                {
                    $("#captchaStatus").html(" ");
                    // Uncomment the following line in your application
                    return true;
                }
                else
                {
                    $("#captchaStatus").html("Your captcha is incorrect. Please try again");
                    Recaptcha.reload();
                    return false;
                }
            }

        </SCRIPT>

        <script type="text/javascript">

</script>

    </head>


<body>
    <?php
        require_once("ajax.recaptcha.php");
    ?>

    <div id="login">
        <form method="post" onSubmit="return validateCaptcha()" action="contacts-go.php">

                <label>Message</label>
                <br />
                <textarea type="text" id="name" name="message" size="20"></textarea>

            <p><?php echo recaptcha_get_html($publickey);?></p>

            <p style="color: red;" id="captchaStatus">&nbsp;</p>

            <input type=submit name="submit" value="Submit">
        </form>
    </div>

</body>
</html>

这是ajax.recaptcha.php文件

<?php

    //A. Load the Recaptcha Libary
    require_once("recaptchalib.php");
    require_once("recaptha-keys.php");  // my reCAPTCHA Keys

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

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

我得到的只是一个空白页面,其中包含以下内容:

The reCAPTCHA wasn't entered correctly. Go back and try it again.(reCAPTCHA said: incorrect-captcha-sol)

4

1 回答 1

2
于 2013-01-23T17:57:05.357 回答