Как добавить reCAPTCHA v3 на форму в CMS 1С Битрикс?

Каким образом можно интегрировать reCAPTCHA v3 с простой формой обратной связи? Предоставленный код включает реализацию reCAPTCHA v3, но как можно проверить эту капчу на стороне сервера после отправки формы?
  • 20 августа 2024 г. 22:43
Ответы на вопрос 2
Для добавления reCAPTCHA v3 на форму в CMS 1С Битрикс, необходимо выполнить следующие шаги:

1. Получить ключи reCAPTCHA v3 на официальном сайте Google: https://www.google.com/recaptcha
2. В файл шаблона формы (например, обратной связи) добавить следующий HTML-код для внедрения reCAPTCHA v3:

```html
<script src="https://www.google.com/recaptcha/api.js?render=ВАШ_КЛЮЧ"></script>
<script>
grecaptcha.ready(function() {
    grecaptcha.execute('ВАШ_КЛЮЧ', {action: 'submit'}).then(function(token) {
        document.getElementById('recaptchaToken').value = token;
    });
});
</script>
<input type="hidden" name="recaptchaToken" id="recaptchaToken">
```

3. После отправки формы, в обработчике формы на сервере можно проверить значение recaptchaToken при помощи серверного запроса к Google reCAPTCHA API. Например, в PHP скрипте это может выглядеть следующим образом:

```php
$recaptchaSecret = 'СЕКРЕТНЫЙ_КЛЮЧ';
$token = $_POST['recaptchaToken'];
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$recaptchaSecret}&response={$token}");
$result = json_decode($response, true);

if($result['success'] == true) {
    // reCAPTCHA прошла проверку, обрабатываем форму
} else {
    // reCAPTCHA не прошла проверку, обработка остановлена
}
```

Следует помнить, что важно обеспечить безопасную обработку данных и адекватную обработку ошибок при работе с reCAPTCHA v3 в CMS 1С Битрикс.
CEvent::Send() только ставит сообщение в очередь ( читай "пишет в таблицу в БД"). А отправлено оно будет только на следующем хите, если повезёт. 
Для немедленной отправки используйте CEvent::SendImmediate()
Похожие вопросы