我正在尝试将隐式reCaptcha实施到网站上。但是我无法正常工作。这是我在做什么:
标头
<!-- Invisible reCaptcha -->
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
form.php
<form id="contact-form" class="contact-form" action="#contact">
<p class="contact-name">
<input id="contact_name" type="text" placeholder="Full Name" value="" name="name" />
</p>
<p class="contact-email">
<input id="contact_email" type="text" placeholder="Your E-Mail Address" value="" name="email" />
</p>
<p class="contact-message">
<textarea id="contact_message" placeholder="Your Message" name="message" rows="15" cols="40"></textarea>
</p>
<p class="contact-submit">
<a type="submit" id="contact-submit" class="submit" href="#">Send Your Email</a>
</p>
<div id="recaptcha" class="g-recaptcha" data-sitekey="6LceN0sUAAAAAPvMoZ1v-94ePuXt8nZH7TxWrI0E" data-size="invisible" data-callback="onSubmit"></div>
<div id="response">
</div>
</form>
script.js
// contact form handling
$(function() {
$("#contact-submit").on('click',function() {
$contact_form = $('#contact-form');
var fields = $contact_form.serialize();
var test = grecaptcha.execute();
console.log(fields);
console.log(test);
$.ajax({
type: "POST",
url: "assets/php/contact.php",
data: fields,
dataType: 'json',
success: function(response) {
if(response.status){
$('#contact-form input').val('');
$('#contact-form textarea').val('');
}
$('#response').empty().html(response.html);
}
});
return false;
});
});
contact.php
private function validateFields(){
// Check reCaptcha
if(!$this->captcha){
echo "Please fill out the reCaptcha correctly";
}
$response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretkey."&response=".$this->captcha."&remoteip=".$_SERVER['REMOTE_ADDR']);
if(intval($responseKeys["success"]) !== 1) {
echo "You are a bot! GO AWAY!";
}
如果g-recaptcha-response不为null,则后端(contact.php)可以正常工作。但是我的问题是,当我尝试执行g-recaptcha-
response(在var字段和test中)时,它总是空的。当我在表单上显示Recaptcha并将其填写时,g-recapcha-
response不为空,并且一切正常。我知道我必须在某个地方调用grecaptcha.execute(),但是即使我这样做,该变量也为空。如何以编程方式调用此?
感谢您的帮助!先感谢您!
您缺少onSubmit()
回调函数。
要重新排列您的js以利用该功能,这将是您的新js块:
<script>
// this block must be defined before api.js is included
function onSubmit(token) {
var fields = $('#contact-form').serializeArray(); // get your form data
fields.push({name: "g-recaptcha-response", value: token});// add token to post
$.ajax({
type: "POST",
url: "assets/php/contact.php",
data: fields,
dataType: 'json',
success: function(response) {
if(response.status) {
$('#contact-form input').val('');
$('#contact-form textarea').val('');
}
$('#response').empty().html(response.html);
}
});
grecaptcha.reset();// to reset their widget for any other tries
}
</script>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
// this block can be defined anywhere
$(function() {
$("#contact-submit").on('click',function() {
// call grecaptcha.execute, which causes recaptcha to
// do its thing and then calls onSubmit with the token
grecaptcha.execute();// does not return anything directly
return false;
});
});
</script>
问题内容: 我正在尝试在AngularJS网络应用程序中实现 不可见的 reCAPTCHA。根据他们的文档,我应该在登录表单的提交按钮上添加一个名为“数据回调”的属性。但是,我使用ng- click将http请求的功能附加到按钮。那我应该在“数据回调”属性的值中输入什么呢?另外,如何知道recaptcha结果是否成功,并获取g- recaptcha-response与我的http请求一起发送到服务
ReCaptcha需要设置一个“data-callback”,我不知道如何将它与我已经存在的“.submit(function(event)”函数绑定。 我的“onsubmit()”技巧不起作用,它忽略了“Ajax”并刷新页面。 如何在我的“datas”变量中发送“g-recaptcha-response”值以将其发布到test.php?
有什么需要帮忙的吗?
我使用的是Chart.js2.5.0版本,需要知道是否有任何方法可以隐藏分组堆叠条形图中每组的空条?图表数据集中的某些数据值可以为空。 这里是我想要的:组合图表类型(分组和堆叠) 小提琴:https://jsfidle.net/q_sabawoon/atlxlg7x/ 请帮帮忙。
问题内容: 多态是采取多种形式的能力。方法重写是运行时多态。 我的问题是: Java中是否有类似静态多态的东西? 可以将方法隐藏视为一种多态形式吗? 在这个问题的答案中,据说静态方法不是多态的。是什么原因呢? 问题答案: 如果我们运行此测试 如果方法x()是多态的,它将打印B。
Recaptcha是一个付费的谷歌账户,在Recaptcha上有超过1,000,000次点击(谷歌的免费配额)。 没有选择免费Recaptcha上提供的不可见v2 Recaptcha的选项,只有复选框选项或Recaptcha企业版(v3)。 当尝试使用复选框版本i. e 站点密钥,并试图在size=“隐形”中实现它。我在recaptcha徽章上看到了此文本: 未为不可见验证码启用此站点密钥。 使用