reCaptchaV3

Google reCAPTCHA v3 для FormIt и AjaxForm
Версия 1.0.7-beta
Дата выпуска 07.03.2023
Загрузки 5 746
Просмотры 17 939
Внимание, этот компонент требует версию PHP 7.0 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.3 !
Для работы компонента нужно добавить хук rcv3 в hooks вызова FormIt / AjaxForm (самым первым) и сниппет rcv3_html в форму (внутри тэга form):

[[!rcv3_html? &action=`[[+rcv3Action:default=``]]` &error=`[[+fi.error.g-recaptcha-response]]`]]

Или на Fenom:
{'!rcv3_html' | snippet : [
    'action' => $rcv3Action,
    'error' => $_modx->getPlaceholder('fi.error.g-recaptcha-response'),
]}

Данный сниппет добавляет в форму input и регистрирует js-скрипты.

В системных настройках Formit указать ключи:

  • секретный — formit.recaptcha_private_key
  • и публичный — formit.recaptcha_public_key

Получить ключи можно на этой странице https://www.google.com/recaptcha/admin.

Пример вызова:


{'!AjaxForm' | snippet : [
    'snippet' => 'FormIt',
    'form' => 'tpl.AjaxForm.example',
    'emailTpl' => 'contactEmailTpl',
    'hooks' => 'rcv3,email',
    'emailFrom' => $_modx->config.emailsender,
    'emailFromName' => $_modx->config.site_name,
    'emailSubject' => 'Сообщение с сайта' ~ $_modx->config.site_name,
    'emailTo' => $_modx->config.emailsender,
    'validate' => 'name:required',
    'validationErrorMessage' => 'В форме содержатся ошибки!',
    'successMessage' => 'Сообщение успешно отправлено',
    'rcv3Action' => 'contactform',
]}

Параметр rcv3Action предназначен для изменения идентификатора action. Подробнее в документации: https://developers.google.com/recaptcha/docs/v3#actions

Пример чанка формы:



<form action="" method="post" class="ajax_form af_example">

    <div class="form-group">
        <label class="control-label" for="af_name">[[%af_label_name]]</label>
        <div class="controls">
            <input type="text" id="af_name" name="name" value="[[+fi.name]]" placeholder="" class="form-control"/>
            <span class="error_name">[[+fi.error.name]]</span>
        </div>
    </div>

    <div class="form-group">
        <label class="control-label" for="af_email">[[%af_label_email]]</label>
        <div class="controls">
            <input type="email" id="af_email" name="email" value="[[+fi.email]]" placeholder="" class="form-control"/>
            <span class="error_email">[[+fi.error.email]]</span>
        </div>
    </div>

    <div class="form-group">
        <label class="control-label" for="af_message">[[%af_label_message]]</label>
        <div class="controls">
            <textarea id="af_message" name="message" class="form-control" rows="5">[[+fi.message]]</textarea>
            <span class="error_message">[[+fi.error.message]]</span>
        </div>
    </div>

    <div class="form-group">
        <div class="controls">
            <button type="reset" class="btn btn-default">[[%af_reset]]</button>
            <button type="submit" class="btn btn-primary">[[%af_submit]]</button>
        </div>
    </div>
    
    [[!rcv3_html? &action=`[[+rcv3Action:default=``]]` &error=`[[+fi.error.g-recaptcha-response]]`]]

</form>

1.0.7

  • добавлена проверка скоринга, спасибо @alexsoin за pull request

1.0.6

  • Удален лишний класс у span с сообщением об ошибке

1.0.5

  • Обновление капчи каждую минуту

1.0.4

  • Исправлены возможные проблемы с инициализацией капчи, спасибо Boshnik за Pull request

1.0.3

  • Добавлена возможность использовать несколько форм на странице.

1.0.2

  • Добавлены лексиконы.
  • Изменены тексты сообщений об ошибках.
  • Исправлена возможность обхода капчи. Спасибо Дмитрию (GoodSite) за багрепорт.

1.0.1

  • Мелкие исправления.

1.0.0

  • Релиз.

Последние обсуждения в сообществе MODX.pro