#recaptcha
#recaptcha
Вопрос:
я использую Google recaptcha v3 на своем веб-сайте ,
вот код, который я добавил на свою веб-страницу html в заголовке:
<script src="https://www.google.com/recaptcha/api.js?render=my public key"></script>
<script>
grecaptcha.ready(function () {
grecaptcha.execute('my public key', { action: 'contact' }).then(function (token) {
var recaptchaResponse = document.getElementById('recaptchaResponse');
ecaptchaResponse.value = token;
});
});
</script>
и я добавил это в свою форму :
<input type="hidden" name="recaptcha_response" id="recaptchaResponse">
но когда я отправляю форму и пытаюсь просмотреть содержимое $ _POST[‘recaptcha_response’] с помощью var_dump(), это просто пустая строка: string(0) «»
где ошибка? спасибо за ответы!
Ответ №1:
я пробовал много изменений, но каждый раз, когда я получаю «token = null», я пробую это .. 100% работает….
в вашем Html
<html>
<head>
</head>
<body>
<form id="contact">
<div class="col-12">
<div class="form-group">
<input type="hidden" name="captcha_token" id="recaptchaResponse" data-sitekey="YOUR-SITE-KEY">
</div>
</div>
<div class="col-12">
<button type="submit" class="btn btn-lg" id="submit-btn">
SUBMIT
</button>
</div>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://www.google.com/recaptcha/api.js?onload=ReCaptchaCallbackV3amp;render=YOUR-SITE-KEY"></script>
</body>
</html>
после этого добавьте в свой js-файл
$(document).ready(function(){
setInterval(function(){
ReCaptchaCallbackV3();
}, 90000);
$(document).on("submit",'#contact',function (e) {
var token = $('[name="g-recaptcha-response"]').val();
console.log(token);
});
});
var ReCaptchaCallbackV3 = function() {
grecaptcha.ready(function () {
grecaptcha.execute('YOUR-SITE-KEY', { action: 'contact' }).then(function (token) {});
});
}
Ответ №2:
В вашем оригинальном скрипте у вас опечатка:
var recaptchaResponse = document.getElementById('recaptchaResponse');
ecaptchaResponse.value = token;
Вместо recaptchaResponse вы написали ecaptchaResponse