PHP

Как интегрировать ReCAPTCHA на сайт

Пример подключения ReCaptcha на php сайт, регистрация в API, вставка кода в форму, проверка правильности введенной капчи.

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

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

На фронте сайта в <head> страницы подключить JS скрипт:

<script src="https://www.google.com/recaptcha/api.js"></script>

В форму где будет выводится капча добавить код с вашим ключом.

<form method="post">
    ...
    <div class="g-recaptcha" data-sitekey="КЛЮЧ"></div>
    ...
<form>

На стороне сервера проверку введенной капчи можно реализовать двумя способами:

Вариант на 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 'Ошибка заполнения капчи.';
}
15 февраля 2017