Javascript 不可见的reCAPTCHA缺少输入响应
我正在尝试创建一个包含不可见的Javascript 不可见的reCAPTCHA缺少输入响应,javascript,php,invisible-recaptcha,Javascript,Php,Invisible Recaptcha,我正在尝试创建一个包含不可见的reCAPTCHA的页面,但我无法使其正常工作 客户端页面: <!DOCTYPE html> <html lang="en"> <head> <script src="https://code.jquery.com/jquery-2.2.1.min.js" integrity="sha384-8C+3bW/ArbXinsJduAjm9O7WNnuOcO+Bok/VScRYikawtvz4ZPrpXtGfKIewM9d
reCAPTCHA
的页面,但我无法使其正常工作
客户端页面:
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://code.jquery.com/jquery-2.2.1.min.js" integrity="sha384-8C+3bW/ArbXinsJduAjm9O7WNnuOcO+Bok/VScRYikawtvz4ZPrpXtGfKIewM9dK" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
<script>
$('#formcomplete').click(function (e) {
grecaptcha.reset();
document.getElementById('form').checkValidity();
grecaptcha.execute();
return false;
});
function onSubmit(token) {
document.getElementById('form').submit();
}
</script>
<script src='https://www.google.com/recaptcha/api.js' async defer></script>
<style>
.centerize {
position: absolute;
left: 50%;
transform: translate(-50%, 0);
}
</style>
</head>
<body style="background-color: black; overflow: hidden;">
<form method='post' action='_resources/signup.php' id="form">
<div style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); max-width: 50%;">
<div class="form-row">
<div class="form-group col-md-5">
<input type="text" class="form-control" name="name" placeholder="Name" size="64" required>
</div>
<div class="form-group col-md-7">
<input type='email' class='form-control' name='email' placeholder='email@example.com' size="64" required>
</div>
</div>
<div class="form-check" style="text-align: center;">
<label class="form-check-label" style="color: white">
<input type="checkbox" class="form-check-input" name="emaillist" value="emaillisttrue">
Add me to the email list to learn about future releases.
</label>
</div>
<div class="form-check" style="text-align: center;">
<label class="form-check-label" style="color: white">
<input type="checkbox" class="form-check-input" name="tac" value="tactrue" required>
I accept the <a href="./legal.html" onclick="window.open(this.href, 'mywin', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" >Terms and Conditions & Privacy Policy</a>.
</label>
</div>
<button class='btn btn-default centerize' id="formcomplete">Submit</button>
</div>
<div id='recaptcha' class="g-recaptcha"
data-sitekey="keeeeey"
data-callback="onSubmit"
data-theme="dark"
data-size="invisible">
</div>
</form>
</body>
$(“#formcomplete”)。单击(函数(e){
grecaptcha.reset();
document.getElementById('form').checkValidity();
grecaptcha.execute();
返回false;
});
提交函数(令牌){
document.getElementById('form').submit();
}
.中心化{
位置:绝对位置;
左:50%;
转换:转换(-50%,0);
}
将我添加到电子邮件列表以了解未来版本。
我接受这个建议。
提交
以及服务器端验证:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$name = stripslashes($_POST['name']);
$email = stripslashes($_POST['email']);
$emaillist = stripslashes($_POST['emaillist']);
$tac = stripslashes($_POST['tac']);
//... verify that you have a name email and accepted the terms
$verify = file_get_contents("https://www.google.com/recaptcha/api/siteverify",false,stream_context_create(array(
'http' => array(
'method' => 'POST',
'content' => http_build_query(array(
'secret' => 'keeeeey',
'response' => $_POST['g-recaptcha-response'],
'remoteip' => $_SERVER['REMOTE_ADDR']
))
)
)));
if (json_decode($verify)->success==true) {
//... handle normal case
} else {
var_dump($verify);
//header("Location: ...");
}
}
移动
<script>
$('#formcomplete').click(function (e) {
grecaptcha.reset();
document.getElementById('form').checkValidity();
grecaptcha.execute();
return false;
});
function onSubmit(token) {
document.getElementById('form').submit();
}
</script>
<script src='https://www.google.com/recaptcha/api.js' async defer></script>
$(“#formcomplete”)。单击(函数(e){
grecaptcha.reset();
document.getElementById('form').checkValidity();
grecaptcha.execute();
返回false;
});
提交函数(令牌){
document.getElementById('form').submit();
}
就在关闭主体
标记工作之前。在尝试使用DOM上的元素或其他东西之前,可能需要定义DOM。这是一个令人困惑的问题。我正在查看你的代码,看看有没有什么奇怪的地方。。。除了处理post输入的方式(我使用他们的php库include来实现这一点)。。。到目前为止,我还没有发现任何问题:(您是否尝试过将document.getElementById('form').submit();
移动到单击操作中,而不使用onSubmit回调?这样做会产生相同的错误。好的,只是想检查它是否以不同的方式提交,但听起来像是没有。这会让我在任何建议上陷入困境:(