Здравствуйте товарищи. Хочу написать как сделать рекапчу v3 в связке с ajax для отправки форм методом $oCore_Mail_Driver.
Как получить ключи достаточно подробно написано тут: https://www.hostcms.ru/documentation/modules/core/captcha/
Теперь наступает самое интересное:
часть серверная, располагается в главном макете, на самом верху над <!DOCTYPE html>
Далее интеграция на стороне клиента
<script src='https://www.google.com/recaptcha/api.js?render=публичный_ключ_сайта' async="async" defer="defer"></script>
и добавляем можно в script.js можно просто в <script></script>
document.addEventListener("DOMContentLoaded", () => {
grecaptcha.ready(function () {
grecaptcha.execute('публичный_ключ_сайта', {
action: 'send_letter'
}).then(function(token) {
// добавляем токен в форму
//для проверки токена можно вывести в console.log(token);
$('form').append('<input type="hidden" name="g-recaptcha-response" value="' + token + '">');
$('form').append('<input type="hidden" name="feedback-submit" value="feedback-submit">'); //тут должно быть name из: getPost('feedback-submit')
});
});
В общем после этих манипуляций, все отправляется ajax запросом с прохождением проверки recaptcha v3. Предупреждаю сразу, паста кода может не заработать, т.к. надо проверять значения полей и допиливать под свой код.
$Form_Controller_Show = new Form_Controller_Show($oForm);
if (!is_null(Core_Array::getPost($oForm->button_name)))
{
if (Core_Array::getPost('g-recaptcha-response'))
{
$sResponse = Core_Array::getPost('g-recaptcha-response');
респонс приходит 'status' => true, 'message' => 'ok' но письмо не приходит на ящик и в заполненные формы не падает.
Товарищи разработчики, подскажите где логи посмотреть?