Как мне проверить reCAPCHA в этом случае? - PullRequest
0 голосов
/ 24 июня 2011

Я знаю, что isset ($ a) неправильный, это просто для иллюстрации. если я применяю этот код, то ничего не получаю (обновляет страницу). Итак, как я могу это подтвердить?

<?php
if (isset($a)) {

// entering data in database

if($result = mysql_query($sql ,$db)) {
// some code here

} else { 
echo "ERROR: ".mysql_error();
}
} else {
?>
<form method='post' action='' name='form' id='form' enctype='multipart/form-data'>
<?php
require_once('recaptchalib.php');
// Get a key from https://www.google.com/recaptcha/admin/create
$publickey = "mypublickey";
$privatekey = "myprivatekey";

# 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) {
$a = '';
         } else {
                # set the error code so that we can display it
                $error = $resp->error;
        }
}
echo recaptcha_get_html($publickey, $error);
?>
<input type="submit" id='button2' name="Submit" value="Submit it!" class="button2">

</form>
<?php
}
?>

1 Ответ

3 голосов
/ 24 июня 2011

Прежде всего: чтобы проверить, была ли отправлена ​​форма, вы можете проверить ключ REQUEST_METHOD массива $_SERVER.Согласно PHP.net это указывает, какой метод запроса был использован для доступа к странице;то есть «GET», «HEAD», «POST», «PUT».Таким образом, следующая строка поможет: if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {

Во-вторых, reCAPTCHA Developer Guilde точно описывает, как показать изображение капчи и проверить, правильно ли была введена капча.Я немного изменил ваш пример кода, чтобы вы могли понять, как вам следует действовать.Не проверено жестко!

<?php
/* Require the recaptcha library, file-globally */
require_once('recaptchalib.php');

/* Get a key from https://www.google.com/recaptcha/admin/create */
$publickey = "mypublickey";
$privatekey = "myprivatekey";

/* Check wether the form was submitted */
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {

    /* Check wether the captcha was correct */
    $resp = recaptcha_check_answer( $privatekey, $_SERVER['REMOTE_ADDR'], $_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field'] );

    /* Was it ? */
    if ( ! $resp->is_valid ) {

        /* What happens when the CAPTCHA was entered incorrectly */
        die( "The reCAPTCHA wasn't entered correctly. Go back and try it again. (reCAPTCHA said: " . $resp->error . ")" );

    } else {

        /* Entering data in database */
        if ( $result = mysql_query( $sql, $db ) ) {

            /* Some code here */

        } else {

            echo "ERROR: ".mysql_error( );

        }

    }

/* The form isn't posted yet, so we show the form */
} else {

    ?>

    <form method='post' action='' name='form' id='form' enctype='multipart/form-data'>
        <?php
        /* This is all we need to display the recaptcha */
        echo recaptcha_get_html($publickey);
        ?>
        <input type="submit" id='button2' name="Submit" value="Submit it!" class="button2">
    </form>

    <?php
}
?>
...