新的Google ReCaptcha实施并在提交前进行检查

时间:2014-12-29 09:26:07

标签: php jquery google-api recaptcha

我是PHP,jQuery和AJAX的新手。

我正在尝试实施新的Google Recapcha。

看起来像 -

点击后 - 1

经核实后 - 2

3

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。

但我不知道如何实施它。

任何人都可以帮助我。

提前感谢您的帮助。

3 个答案:

答案 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)

此页面介绍了如何在网页上显示和自定义reCAPTCHA小部件。

developers.google.com/recaptcha/docs/display

回调函数可用于控制检查用户输入后发生的行为。

答案 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; 
}
}