2014-12-29 2 views
2

Я новичок в PHP, jQuery и AJAX.Новая реализация Google ReCaptcha и проверка перед отправкой

Я пытаюсь внедрить новую Google Recapcha.

Похоже -

После Нажать на 1

И после verified- 2

3

И коде index.php IS-

<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.

Но я не знаю, как его реализовать.

Может ли кто-нибудь мне помочь.

Заранее благодарим за помощь.

+1

Там в ответ здесь: HTTP: //stackoverflow.com/a/28044629/2022751 Этот вопрос пришел после вашего ответа :) – FloatingRock

+1

Возможно, вам захочется повторить переместите «secreatKey» из вашего примера кода, так как это будет удобно для хакеров ... – marmor

ответ

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

На этой странице объясняется, как отображать и настраивать виджет reCAPTCHA на вашей веб-странице.

developers.google.com/recaptcha/docs/display

Функция обратного вызова может быть использован для управления поведением, что происходит после проверки пользовательского ввода.

+0

Нет, я уже это сделал. Я уже предоставил код. Мне это было нужно с AJAX. NP. Спасибо за вашу помощь –

+0

У меня тоже есть эта проблема @Abrar Jahin –

+0

Этот код работает (мой предоставленный код здесь). Вы можете просто изменить «$ sitekey» на свой, и он будет работать нормально. Если вы хотите проверить его перед отправкой, вы должны использовать AJAX. Это решит вашу проблему. Спасибо –

-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" /> 

Этот код поместить в головной секции по вызову get_action (это) Кнопка метод формы:

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; 
} 
} 
+0

Большое спасибо –

+0

Подтвердить CAPTCHA у клиента? Ты шутишь, да? Что мешает спамеру отрывать вашу «проверку» и всегда возвращает истину? –

+0

@ OlegV.Volkov О, но это только ухудшается. Ответ не проверен вообще; любой непустой ответ ('v.length! = 0') принимается! – duskwuff