Обновление, потому что я изменил реализацию на что-то (несколько) более успешное.
Я пытаюсь реализовать Invisible Recaptcha в нашей системе.Мы используем динамически сгенерированные формы, поэтому я иду по пути программного вызова вызова.У меня есть этот код для получения API:
<script src="https://www.google.com/recaptcha/api.js?render=explicit" async defer></script>
Непосредственно перед рисованием моей формы, я вводю капчу div
:
form.fields.push({
html: '<div id="g-recaptcha-div" class="g-recaptcha" data-sitekey="<mykey>" data-callback="myCallback" data-size="invisible"></div>',
type: 'html'
});
Когда моя форма нарисована, я тогда вызываюфункция рендеринга:
recaptcha_id = grecaptcha.render(
'g-recaptcha-div',
{
'data-callback': _settings.form.submit
}
);
Когда появляется форма, он появляется над кнопкой «Отправить» с помощью кнопки «Отправить».
В моей функции отправки я выполняю некоторую проверку формы,и затем «выполнить» reCaptcha:
grecaptcha.execute(recaptcha_id);
И затем продолжить с моей отправки.До сих пор, как только я увидел вызов reCaptcha («выбрать изображения с витрины»), в этот момент значение g-recaptcha-response
было вставлено в мою отправку формы, и я вижу его в параметрах, переданных моему PHP
function.
Но большую часть времени я не вижу проблемы, и в параметре g-recaptcha-response
ничего нет, поэтому моя проверка PHP
не удалась.Пара вопросов:
1) Мое предположение о том, что вызов не появляется постоянно, состоит в том, что логика Google требует его только тогда, когда «условия правильные».Если это так, что мне делать, если он не отображается, и в этот момент параметр g-recaptcha-response
не имеет значения - я просто игнорирую его в этой точке, предполагая, что никакое значение не означает, что все в порядке?
2) Есть ли какой-нибудь способ «вызвать» вызов, чтобы показать его, хотя бы для того, чтобы я почувствовал себя лучше во всей работе, и для проверки моей обработки ответа?
3) Я пытался позвонить grecaptcha.getResponse(recaptcha_id)
после grecaptcha.execute(recaptcha_id)
, но это ничего не возвращает.Мне было бы легче / лучше обработать reCaptcha в моем клиенте.
Любые ответы приветствуются.Я могу повторить это как новый «Вопрос», так как этот вопрос уже давно.