Прежде всего: чтобы проверить, была ли отправлена форма, вы можете проверить ключ 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
}
?>