AjaxForm и reCaptcha V3
Доброе время суток. Сталкивался ли кто-нибудь с использованием reCaptcha V3 через плагин?
Каким образом происходит проверка на робота? Обычных пользователей не пропускает, а проверку не дает.
Сама каптча на сайте подключена, но нет возможности ее проверить. Смотрел в документации, написано «Параметр rcv3Action предназначен для изменения идентификатора action.», но так и не понял для чего он и что выполняет. Если зайти через приватное окно, то никаких проверок не происходит и форма надежно отправляет, а другие пользователи отправляют форму и у них не выскакивает никакой проверки а сразу выдается сообщение «Вы не прошли проверку reCaptcha.» Смотрел видео на ютубе, парень делал не через плагин и говорит что существуют 3 спосоа проверки и по умолчанию стоит на кнопке, при нажатии на нее если есть подозрения то всплывающим окном выходит проверка на картинках — но ничего. PS на странице несколько форм.
Каким образом происходит проверка на робота? Обычных пользователей не пропускает, а проверку не дает.
Сама каптча на сайте подключена, но нет возможности ее проверить. Смотрел в документации, написано «Параметр rcv3Action предназначен для изменения идентификатора action.», но так и не понял для чего он и что выполняет. Если зайти через приватное окно, то никаких проверок не происходит и форма надежно отправляет, а другие пользователи отправляют форму и у них не выскакивает никакой проверки а сразу выдается сообщение «Вы не прошли проверку reCaptcha.» Смотрел видео на ютубе, парень делал не через плагин и говорит что существуют 3 спосоа проверки и по умолчанию стоит на кнопке, при нажатии на нее если есть подозрения то всплывающим окном выходит проверка на картинках — но ничего. PS на странице несколько форм.
Комментарии: 17
Делал по инструкции, не на одном сайте. Проблем не было. Как проверить не знаю, но спама нет. Она как то в фоне проверяет…
Смотрел в документации, написано «Параметр rcv3Action предназначен для изменения идентификатора action.», но так и не понял для чего он и что выполняет.Если форм на странице несколько (а их несколько как написано), то в этом параметре должны быть разные значения для каждой из форм, например:
'rcv3Action' => 'contactform' - в первой
'rcv3Action' => 'feedbackform' - во второй, и т.д.
Если настроено всё по инструкции, как написали выше, то проблем быть не должно. И покажите вызовы сниппетов и чанки форм на всякий случай. {if $type?}
{switch $type}
{case 'blue'}
{var $conf = [
'subject' => 'Заявка '~$_modx->config.site_name,
'tpl' => 'tplBlueForm',
'action' => 'blue_feedback'
]}
{case 'green'}
{var $conf = [
'subject' => 'Вопрос '~$_modx->config.site_name,
'tpl' => 'tplGreenForm',
'action' => 'green_feedback'
]}
{case 'popup'}
{var $conf = [
'subject' => 'Связаться с нами '~$_modx->config.site_name,
'tpl' => 'tplPopupForm',
'validate' => 'name:required,phone:required,email:email,form:required,g-recaptcha-response:required',
'action' => 'fb-popup'
]}
{/switch}
{if !$conf.validate?}
{var $conf.validate = 'name:required,phone:required,comment:required,email:email,form:required,g-recaptcha-response:required'}
{/if}
{$_modx->runSnippet('!AjaxForm', [
'snippet' => 'FormIt',
'validationErrorMessage' => 'В форме содержатся ошибки!',
'successMessage' => 'Спасибо за обращение, наш менеджер свяжется с Вами в ближайшее время',
'hooks' => 'rcv3,email',
'emailSubject' => $conf.subject,
'emailFromName' => $_modx->config.site_name,
'emailFrom' => $_modx->config.org_noreply,
'emailTo' => $_modx->config.org_email,
'emailTpl' => 'tplFormitEmail',
'form' => $conf.tpl,
'validate' => $conf.validate,
'rcv3Action' => $conf.action,
'titleForm' => $title
])}
{/if}
Вроде как всё должно работать. Единственное что можно попробовать убрать из validate:
g-recaptcha-response:required
Здесь это не нужно {var $title = $titleForm ? $titleForm : 'Оформите заявку на Бесплатные тестовые образцы продукции'}
<form class="reionbm">
<div>
<h3 class="iijgpnomn489b">{$title}</h3>
<div class="yeuongmnm">
<div>
<div>
<input type="text" name="name" placeholder="Имя*" required>
</div>
<div class="otstp"></div>
<div>
<input type="text" name="phone" placeholder="Телефон*" required>
</div>
<div class="otstp"></div>
<div>
<input type="text" name="email" placeholder="E-mail*">
</div>
<input type="hidden" name="form" value="{$title}" />
</div>
<div>
<textarea name="comment" required placeholder="Напишите, какие образцы и в каком количестве Вы хотели бы получить, а так же Ваши контактные данные для организации доставки образцов."></textarea>
</div>
</div>
<div class="regu3hb">
<button type="submit" class="ryuihgmv" onclick="checkForm(this);">Отправить заявку</button>
</div>
<div class="kgire9j0m">
<div class="squaredThree">
<input type="checkbox" class="gnrji08bxz" id="squaredThree5hfh5" name="check" onclick="checkCheck($(this));">
<label for="squaredThree5hfh5"></label>
</div>
<a href="/politika-konfidenczialnosti.html" target="_blank">Политика конфиденциальности</a>
</div>
{'!rcv3_html' | snippet : [
'action' => $rcv3Action,
'error' => $_modx->getPlaceholder('fi.error.g-recaptcha-response'),
]}
<div class="message"></div>
</div>
</form>
Это первая tpl
Просто не совсем понятно, может что-то я не понимаю. Ты обычный пользователь заходишь и хочешь отправить форму, твой score не набрал например нужный 0.7 — и все, ты бот. И это никак не оспорить. Хоть всплывающий тест бы был.
Не очень в тему, но добавлю от себя про reCaptcha 3, недавно просто обнаружил.
Заметил, что формы, защищенные рекапчей 3, а именно если внутри идет вызов сниппета
На сайте 5 форм с защитой — для мобильного показывает 30 баллов.
Оставляю только одну с защитой, с остальных просто убираю вызов сниппета в форме — 60 баллов.
Отключаю совсем защиты во всех формах — 98 баллов.
Заметил, что формы, защищенные рекапчей 3, а именно если внутри идет вызов сниппета
{'!rcv3_html' | snippet : [
'action' => $rcv3Action,
'error' => $_modx->getPlaceholder('fi.error.g-recaptcha-response'),
]}
которые обязательно нужно вызывать по инструкции, приводит просто к катастрофической просадке, если проверять сайт в google page speed.На сайте 5 форм с защитой — для мобильного показывает 30 баллов.
Оставляю только одну с защитой, с остальных просто убираю вызов сниппета в форме — 60 баллов.
Отключаю совсем защиты во всех формах — 98 баллов.
Поддерживаю. Может автор плагина @Игорь Терентьев пояснит зачем так?
5 форм — 5 раз вызывается скрипты каптчи. Может это можно как-то исправить?
Мне тоже потом прилетает от SEOшников. :)
5 форм — 5 раз вызывается скрипты каптчи. Может это можно как-то исправить?
Мне тоже потом прилетает от SEOшников. :)
Всем привет, пока что нет времени заняться компонентом.
Примерно представляю, как решить проблему с тормозами при использовании нескольких форм на странице — выставлять плэйсхолдер в сниппете и проверять на пустоту.
Примерно представляю, как решить проблему с тормозами при использовании нескольких форм на странице — выставлять плэйсхолдер в сниппете и проверять на пустоту.
А можно просто принять мой PR
Спасибо! Потестирую и выкачу новую версию.
Попробуйте заменить содержимое сниппета rcv3_html на это и сравните разницу.
Спасибо, опробую обязательно
Привет
Помогите пожалуйста разработаться, из инструкции или комментариев выше не пойму как сделать. На странице так же присутствуют несколько форм. Вызываются по кнопке, открываются в POPUP окне.
Код самой формы:
Помогите пожалуйста разработаться, из инструкции или комментариев выше не пойму как сделать. На странице так же присутствуют несколько форм. Вызываются по кнопке, открываются в POPUP окне.
Код самой формы:
<div id="form-feedback" class="feedback" style="display: none;">
[[!AjaxForm?
&snippet=`FormIt`
&emailTpl=`tplMail`
&hooks=`rcv3,email`
&validate=`name:required, city:required, phones:required`
&frontend_css=``
&frontend_js=``
&emailSubject=`Обратная связь с сайта [[++site_name]]`
&emailFromName=`[[++site_name]]`
&emailTo=`{1 | resource: 'tplMail'}`
&emailFrom=`[[++emailsender]]`
&successMessage=`Ваше сообщение успешно отправлено`
&form=`@CODE:
<form action="[[~[[*id]]]]" method="post" class="ajax_form" onsubmit="ym(64435486, 'reachGoal', 'sent_order'); return true;">
<div id="form-fields">
<img src="/assets/template/img/star.png" alt="Звезда">
<h4 class="title">Поможем получить военный билет <span>законно</span></h4>
<p>Оставьте заявку, наш юрист свяжется с вами и расскажет подробно о выбранной услуге</p>
<input type="hidden" id="fr_link" name="link" value="[[+fi.link]][[*id:is=`1`:then=`[[!+cf.current_city.url]]`:else=`[[!+cf.current_city.url]][[~[[*id]]]]`]]"/>
<input type="hidden" id="fr_city" name="hcity" value="[[!+cf.city]]"/>
<small class="error_name">[[+fi.error.name]]</small>
<input type="text" id="fr_name" name="name" value="[[+fi.name]]" placeholder="Ваше имя"/>
<small class="error_name">[[+fi.error.city]]</small>
<input type="text" id="fr_city" name="city" value="[[+fi.city]]" placeholder="Ваш город"/>
<small class="error_name">[[+fi.error.phones]]</small>
<input type="text" id="fr_phones" name="phones" class="m-phones" value="[[+fi.phones]]" placeholder="Номер телефона"/>
<div class="approval"><input type="checkbox" checked> Я согласен с условиями обработки <a href="[[~7]]" target="_blank" title="Политика обработки персональных данных">персональных данных</a></div>
<button type="submit" class="button">Оставить заявку</button>
</div>
<div id="form-thanks" style="display: none;">
<h4 class="title">Спасибо за ваше обращение!</h4>
<p>Мы свяжемся с Вами в ближайшее время.</p>
</div>
[[+fi.success:is=`1`:then=`
<div class="alert alert-success">[[+fi.successMessage]]</div>
`]]
[[+fi.validation_error:is=`1`:then=`
<div class="alert alert-danger">[[+fi.validation_error_message]]</div>
`]]
[[!rcv3_html? &action=`[[+rcv3Action:default=``]]` &error=`[[+fi.error.g-recaptcha-response]]`]]
</form>
`
]]
</div>
Не пойму, к примеру в вызов самой формы дописалrcv3Action=`contactform` - у первой
rcv3Action=`contactformtwo` - у второй
Как правильно прописать в самой форме или что дополнительно нужно сделать, т.к. сейчас не работает (((
1. Код формы перенести в чанк
2. rcv3Action прописывается у вызова AjaxForm
2. rcv3Action прописывается у вызова AjaxForm
[[!AjaxForm?
...
&rcv3Action=`contactform`
...
]]
3. проверить работает ли, можно инспектором кода в браузере(F12 в хроме), выдало ли Вам что-то вызов rcv3_html
Объясните мне пожалуйста.
1. Ок перенесу в «чанк», в самой форме не чего не нужно указывать? вызов остается тот же?
3. Ок, буду проверять
1. Ок перенесу в «чанк», в самой форме не чего не нужно указывать? вызов остается тот же?
[[!rcv3_html? &action=`[[+rcv3Action:default=``]]` &error=`[[+fi.error.g-recaptcha-response]]`]]
2. Это я понял сделаю. Вопрос самое название &rcv3Action=`contactform` — contactform прописываю произвольно, главное что бы отличалось? или contactform это чанк или сниппет какой?3. Ок, буду проверять
1. Да, все по примеру modstore.pro/packages/utilities/recaptchav3
2. contactform — произвольная строка, что хотите, главное что бы отличалось
2. contactform — произвольная строка, что хотите, главное что бы отличалось
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.