Как привязать один ключ reCAPTCHA от Гугл к нескольким формам?

Ключ reCAPTCHA от Google привязывается к конкретной форме, а не к нескольким формам одновременно. Это связано с тем, что ключ reCAPTCHA используется для проверки подлинности пользователя и защиты от автоматических роботов, и каждая форма должна иметь свой уникальный ключ.

Однако существует несколько способов привязки ключа reCAPTCHA к нескольким формам. Один из способов - использование одного и того же ключа reCAPTCHA на всех формах, но это может привести к тому, что капча может быть обойдена на одной форме, и тогда она станет уязвимой на всех остальных формах.

Более безопасный способ - генерировать уникальный ключ reCAPTCHA для каждой формы. Это можно сделать, создав отдельный ключ для каждой формы через панель управления reCAPTCHA на сайте Google. После генерации ключа полученные данные, такие как публичный и приватный ключи, можно использовать на каждой форме.

Пример использования ключей reCAPTCHA в PHP:

// Функция для отображения reCAPTCHA
function displayRecaptcha($sitekey) {
    echo '<div class="g-recaptcha" data-sitekey="' . $sitekey . '"></div>';
}

// Проверка reCAPTCHA
function verifyRecaptcha($sitekey, $secretkey, $response) {
    $url = 'https://www.google.com/recaptcha/api/siteverify';

    $data = array(
        'secret' => $secretkey,
        'response' => $response,
        'remoteip' => $_SERVER['REMOTE_ADDR']
    );

    $options = array(
        'http' => array(
            'header' => "Content-type: application/x-www-form-urlencodedrn",
            'method' => 'POST',
            'content' => http_build_query($data)
        )
    );

    $context = stream_context_create($options);
    $result = file_get_contents($url, false, $context);

    if ($result === FALSE) {
        // Обработка ошибки
    }

    $response = json_decode($result, true);

    return $response['success'];
}

// Пример использования
$sitekey = 'YOUR_SITE_KEY';
$secretkey = 'YOUR_SECRET_KEY';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $recaptcha_response = $_POST['g-recaptcha-response'];

    if (verifyRecaptcha($sitekey, $secretkey, $recaptcha_response)) {
        // Реагировать на успешную проверку reCAPTCHA
    } else {
        // Реагировать на неудачную проверку reCAPTCHA
    }
}

// Отображение reCAPTCHA на форме
displayRecaptcha($sitekey);

В данном примере функция displayRecaptcha() отображает reCAPTCHA на форме, а функция verifyRecaptcha() проверяет ответ пользователя и возвращает результат - успешно или неуспешно пройдена проверка reCAPTCHA. Ключи sitekey и secretkey передаются в соответствующие функции в качестве параметров.

Таким образом, каждая форма может иметь свой уникальный ключ reCAPTCHA, что обеспечивает безопасность и надежность защиты.