我是PHP,jQuery和AJAX的新手。
我正在尝试实施新的Google Recapcha。
看起来像 -
点击后 -
经核实后 -
index.php的代码是 -
<html>
<head>
<title>Google recapcha demo - Codeforgeek</title>
</head>
<body>
<h1>Google reCAPTHA Demo</h1>
<form id="comment_form" action="received.php" method="post">
<input type="email" placeholder="Type your email" size="40"><br><br>
<textarea name="comment" rows="8" cols="39"></textarea><br><br>
<!-- ---------------------------------------Capcha Start------------------------------------- -->
<script src='https://www.google.com/recaptcha/api.js'></script>
<?php $siteKey="6LdLqv8SAAAAADT3YEjm6ONCwnPD95frMSZ92Ftv" ?>
<div class="g-recaptcha" data-sitekey="<?php echo $siteKey; ?>"></div>
<!-- ----------------------------------------Capcha End------------------------------------ -->
<br><br>
<input type="submit" name="submit" value="Post comment"><br><br>
</form>
</body>
</html>
收到的部分 - received.php
<?php
//////////////////////////////////////////Check Capch Function Start
function CapchaCheck()
{
$captcha;
if(isset($_POST['g-recaptcha-response']))
{
$captcha=$_POST['g-recaptcha-response'];
}
if(!$captcha)
{
return false;
}
$secreatKey="6LdLqv8SAAAAAIWxKcn2zIKjWau2Mdz6yzE3Kkcm";
$response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secreatKey."&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']);
var_dump($response);
if($response.success==false)
{
return false;
}
else
{
return true;
}
}
//////////////////////////////////////////Check ReCaptcha Function End
if(CapchaCheck())
{
echo '<h2>Thanks for posting comment.</h2>';
}
else
{
echo '<h2>You are spammer ! Get the @$%K out</h2>';
}
?>
效果很好。
但我不想在提交后检查ReCapcha是否正确。如果ReCaptcha错误,我想阻止用户提交。
所以,我认为我需要jQuery。
但我不知道如何实施它。
任何人都可以帮助我。
提前感谢您的帮助。
答案 0 :(得分:0)
function reCaptchaServerControl(){ //url ve response bilgisi serverda!
var reCaptchaResponse = $("#g-recaptcha-response").val();
if (reCaptchaResponse) {
$.ajax({
type: 'POST',
url: "submitContact.php", // The file we're making the request to
dataType: 'html',
async: true,
data: {response : reCaptchaResponse} ,
success: function(serverResponse) { //serverResponse is json encoded
//alert(serverResponse);
var serverResponse = $.parseJSON(serverResponse);//if u made json array in ok at server, u can catch like:
// alert(serverResponse["ok"]) ;
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
//alert("Error");
}
});
} else {
//alert("error");
}
}
答案 1 :(得分:-1)
答案 2 :(得分:-2)
使用此功能验证google recaptcha,使用简单的javascript 100%在客户端站点验证。
html正文中的代码:
<div class="g-recaptcha" id="rcaptcha" style="margin-left: 90px;" data-sitekey="my_key"></div>
<span id="captcha" style="margin-left:100px;color:red" />
此代码放在head部分调用get_action(this)方法表单按钮:
function get_action(form) {
var v = grecaptcha.getResponse();
if(v.length == 0)
{
document.getElementById('captcha').innerHTML="You can't leave Captcha Code empty";
return false;
}
if(v.length != 0)
{
document.getElementById('captcha').innerHTML="Captcha completed";
return true;
}
}