Recaptcha的问题

时间:2008-12-09 04:47:05

标签: captcha recaptcha

我在网页中使用的表单存在问题。

它允许recaptcha但它也发送电子邮件而不验证recaptcha框中的字段。这个表单使用的是Ajax和PHP。

我接下来粘贴了代码:

<br> <br> <div id="fields">

<form action="javascript:alert('success!');">
<label>Nombre</label><INPUT class="textbox" type="text" name="name" value=""><br />

<label>eMail</label><INPUT class="textbox" type="text" name="email" value=""><br />

<label>Asunto</label><INPUT class="textbox" type="text" name="subject" value=""><br />

<label>Mensaje</label><TEXTAREA class="textbox" NAME="message" ROWS="5" COLS="25"></TEXTAREA><br />

<?php

require_once('recaptchalib.php');

// Get a key from http://recaptcha.net/api/getkey
$publickey = "6LekPAQAAAAAAFoAJRfRtd9vmlzA9m-********";
$privatekey = "6LekPAQAAAAAAFqNcNsrnZba0-ZMg-********";

# the response from reCAPTCHA
$resp = null;
# the error code from reCAPTCHA, if any
$error = null;

# was there a reCAPTCHA response?
if ($_POST["recaptcha_response_field"]) {
        $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

        if ($resp->is_valid) {
                echo "Bien escrito!";
        } else {
                # set the error code so that we can display it
                $error = $resp->error;
        }
}
echo recaptcha_get_html($publickey, $error);
?>
    <br/>

<label>&nbsp;</label><INPUT class="button" type="submit" name="submit" value="Enviar">
</form>
</div>

</fieldset> 

非常感谢。

大卫。

1 个答案:

答案 0 :(得分:1)

问题是您需要在再次显示表单之前检查reCAPTCHA。在生成任何HTML之前,PHP代码将高于表单的第一行,因此可以将用户重定向到感谢页面。