Как то надо было поставить капчу для формы на сайте, формы не генерятся а написаны на html, action формы ссылается на php скрипт, который обрабатывает полученные данные и делает отправку на почту. Вроде все просто.
Зарегистрировал сайт в сервисе гугла reCAPTCHA, скачал архив для работы с капчей для php, recaptcha-php-1.11.
В архиве лежит файл с примером example-captcha.php
<html>
<body>
<form action="" method="post">
<?php require_once('recaptchalib.php'); // Get a key from https://www.google.com/recaptcha/admin/create $publickey = ""; $privatekey = ""; # 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 "You got it!";
} else {
# set the error code so that we can display it
$error = $resp->error;
}
}
echo recaptcha_get_html($publickey, $error);
?>
<input type="submit" value="submit" />
</form>
</body>
</html>
Добавляю в свою форму, функцию вывода капчи, подключаю библиотеку, и ключи.
echo recaptcha_get_html($publickey, $error);
Но капча так и не показывается а в консоли браузера видна ошибка, фаерфокс блокирует http запрос, так как сайт находится на https.
И что теперь делать?
Решение, работа капчи с https
Оказывается у функции recaptcha_get_html(), есть еще один параметр, это
$use_ssl = false
function recaptcha_get_html ($pubkey, $error = null, $use_ssl = false){
}
Тоесть если сайт на https надо задействовать третий параметр, поставив true
echo recaptcha_get_html($publickey, $error, true);

