drp*_*ken 5 php validation ajax jquery recaptcha
搜索有关设置reCaptcha似乎导致使用jQuery验证.但是我不确定如何在ajax表单提交的上下文中执行此操作.
目前我正在使用Validity,而不是jQuery Validation.我的标题中有脚本引用,密钥就位.
我应该在哪个阶段验证reCaptcha?
<form id="intake-form" class="grid-form" action="javascript:void(0);">
...
<div class="g-recaptcha" data-sitekey="key_here"></div>
<input type="submit" name="submit" value="Send!" />
<br />
<p id="formstatus"></p>
</form>
Run Code Online (Sandbox Code Playgroud)
$("#intake-form").submit(function () {
var str = $(this).serialize();
if (validateIntakeForm()) { // validate intake fields with validity
$.ajax({
type: "POST",
url: global['base']+"intakeform",
data: str,
success: function (msg) {
$("#formstatus").ajaxComplete(function (event, request, settings) {
if (msg == 'success') {
result = '<div class="successmsg">Your request has been sent.';
$('#intake-form').clearForm();
} else {
result = 'There was a problem sending your message.<br />' + msg;
}
$(this).html(result);
});
}
});
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
Google会为您验证您的re-captacha.请查看以下示例.
<?php
//first i retrieved the recaptcha coming through post method.
//i have used post method, you can use any method you want.
$recaptcha = $_POST['g-recaptcha-response'];
//After retrieving send a post curl request to verify it.
//you will have to send your secret key along with it.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://www.google.com/recaptcha/api/siteverify");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,"secret=*******************************=".$recaptcha);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
$server_output = json_decode($server_output,true);
curl_close ($ch);
if($server_output['success']){
// captacha validated successfully.
}else{
// invalid captcha
}
Run Code Online (Sandbox Code Playgroud)
?>
您可以参考文档.