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 — произвольная строка, что хотите, главное что бы отличалось
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.