Пример подключения Google reCaptcha на сайт, регистрация в API, вставка кода в форму, проверка правильности введенной капчи.
Регистрация сайта в сервисе reCaptcha
Итак, сначала нужно добавить сайт в ReCaptcha API перейдя по ссылке https://www.google.com/recaptcha/admin/create (нужна авторизация), в форме нужно указать название и домен сайта где будет использоваться капча.

После отправки формы появится страница с данными для интеграции.

Вывод на сайте
Чтобы вывести капчу в форме, нужно подключить api.js и добавить <div> c классом g-recaptcha и атрибутом data-sitekey с открытым ключом.
<script src="https://www.google.com/recaptcha/api.js"></script> <form method="post" action="#"> <input type="email"> <div class="g-recaptcha" data-sitekey="КЛЮЧ_САЙТА"></div> <button type="submit">Отправить</button> </form>
Несколько reCaptcha на странице
В таком случае, в формах вставляются несколько DIVов с уникальным идентификатором, а далее к ним подключается reCaptcha JS-скриптом.
Форма #1
<form method="post" action="#">
<input type="email">
<div id="recaptcha_1"></div>
<button type="submit">Отправить</button>
</form>
Форма #2
<form method="post" action="#">
<input type="email">
<div id="recaptcha_2"></div>
<button type="submit">Отправить</button>
</form>
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit">
<script>
var onloadCallback = function(){
var key = 'КЛЮЧ_САЙТА';
grecaptcha.render('recaptcha_1', {
'sitekey': key
});
grecaptcha.render('recaptcha_2', {
'sitekey': key
});
};
</script>Проверка заполнения капчи
На стороне сервера проверку введенной капчи можно реализовать двумя способами:
Вариант на curl (через POST)
$error = true;
$secret = 'СЕКРЕТНЫЙ_КЛЮЧ';
if (!empty($_POST['g-recaptcha-response'])) {
$curl = curl_init('https://www.google.com/recaptcha/api/siteverify');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'secret=' . $secret . '&response=' . $_POST['g-recaptcha-response']);
$out = curl_exec($curl);
curl_close($curl);
$out = json_decode($out);
if ($out->success == true) {
$error = false;
}
}
if ($error) {
echo 'Ошибка заполнения капчи.';
}Вариант на file_get_contents
$error = true;
$secret = 'СЕКРЕТНЫЙ_КЛЮЧ';
if (!empty($_POST['g-recaptcha-response'])) {
$out = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . $secret . '&response=' . $_POST['g-recaptcha-response']);
$out = json_decode($out);
if ($out->success == true) {
$error = false;
}
}
if ($error) {
echo 'Ошибка заполнения капчи.';
}