[英]reCAPTCHA v3 - Error: No reCAPTCHA clients exist
首先,我知道這里已經發現了同樣的問題: 錯誤:不存在 reCAPTCHA 客戶端(reCAPTCHA v3)但是由於那里的答案並沒有引導我找到解決方案,我在這里試試運氣。
所以我嘗試使用 reCAPTCHA,因為我從我網頁上的表單中收到了很多垃圾郵件。 在我的 HTML 頭中,我有這樣的代碼:
<script src="https://www.google.com/recaptcha/api.js?render=MY_SITE_KEY"></script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute("MY_SITE_KEY").then(function(token) {
console.log(token);
});
});
</script>
加載驗證碼並生成令牌。 當我提交表單時,我調用以下 ajax 代碼:
$.ajax({
type: 'POST',
url: $(form).attr('action'),
data: {
name: name,
email: email,
message: message,
captcha: grecaptcha.getResponse()
}).done(function(response){ ... })
最后在 PHP 中我執行以下操作:
<?php
$secret = "MY_SECRET_KEY";
$response = $_POST["captcha"];
$verify=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$response}");
$captcha_success=json_decode($verify);
if ($captcha_success->success==false) {
echo "reCaptcha indentified you as a bot. We don't like bots here.";
}
else if ($captcha_success->success==true) {
// MY WHOLE mail() function here
}
?>
當我提交表單時,我收到錯誤:
Uncaught Error: No reCAPTCHA clients exist.
at Gw (recaptcha__de.js:511)
at Object.Q5 [as getResponse] (recaptcha__de.js:519)
at HTMLFormElement.<anonymous> (main.js:265)
at HTMLFormElement.dispatch (jquery.min.js:3)
at HTMLFormElement.q.handle (jquery.min.js:3)
我做錯了什么? 我遵循了谷歌的指示,但也許我錯過了一些東西。
您可以通過以下方法重新實現:
<script src="https://www.google.com/recaptcha/api.js?render=MY_SITE_KEY"></script>
<script>
var grecaptchaSiteKey = 'MY_SITE_KEY';
var _RECAPTCHA = _RECAPTCHA || {};
_RECAPTCHA.init = function() {
grecaptcha.ready(function() {
grecaptcha.execute(grecaptchaSiteKey, {action: 'homepage'}).then(function(token) {
if (jQuery(form)[0]) {
if (jQuery('.grecaptchaToken')[0]) {
jQuery(form).find('.grecaptchaToken').remove();
}
jQuery(form).append('<input type="hidden" class="grecaptchaToken" name="grecaptchaToken" value="' + token + '" />');
}
});
});
}
_RECAPTCHA.init();
</script>
之后,您可以獲取隱藏輸入的值並將其放入 Ajax Payload。
現在,為了避免在第二次提交表單時出錯,您可以調用 _RECAPTCHA.init() 方法; 在 Ajax 調用的成功回調中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.