Как то надо было поставить капчу для формы на сайте, формы не генерятся а написаны на 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);