0

Web ページで使用しているフォームに問題があります。

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> 

どうもありがとう。

デビッド。

4

1 に答える 1

1

問題は、フォームを再度表示する前にreCAPTCHAを確認する必要があることです。PHPコードは、おそらくHTMLが生成される前に、フォームの最初の行より上に配置されるため、ユーザーはありがとうページにリダイレクトできます。

于 2009-01-30T18:00:10.200 に答える