2016-06-18 3 views
1

У меня есть файл входа в php, и я хочу поместить Google captcha в эту регистрационную форму. Я использую php и html вместе в одном файле (не отправляя данные формы на другую страницу php). Проблема в том, что пользователи не проверяют капчу, они все равно могут войти на сайт (даже captcha не проверять). Вот мой код:Google captcha не работает

    <form action="" method="post" id="form">       
        <div class="form-group"> 
         <div class="input-group"> 
          <span class="input-group-addon"><i class="fa fa-user"></i></span> 
          <input type="text" class="form-control" name="form-username" id="form-username" placeholder="Username" required=""> 
         </div> 
        </div>       
        <div class="form-group"> 
         <div class="input-group"> 
          <span class="input-group-addon"><i class="fa fa-lock"></i></span> 
          <input type="password" class="form-control" name="form-password" placeholder="Password" id="form-password" required=""> 
         </div> 
        </div> 

    <div class="form-group"> 

         <div class="g-recaptcha" data-theme="dark" data-sitekey="my site key"></div> 

        <div class="form-group no-border margin-top-20"> 
        <input type="submit" name="submit" value="Sign In !" class="submit_button4 btn btn-primary btn-block" > 

    </form> 

<?php 
    if($_SERVER["REQUEST_METHOD"] === "POST") 
    { 
     //form submitted 

     //check if other form details are correct 

     //verify captcha 
     $recaptcha_secret = "my secret key"; 
     $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$_POST['g-recaptcha-response']); 
     $response = json_decode($response, true); 
     if($response["success"] === true) 
     { 
      echo "Logged In Successfully"; 
     } 
     else 
     { 
      echo "You are a robot"; 
     } 
    } 
?> 

Примечание: Также этот код <script src='https://www.google.com/recaptcha/api.js'></script> в моей голове тега (и весь код на одной странице).

+0

Я ответил на ваш вопрос, пожалуйста, ознакомьтесь - если это полезно, и у вас есть привилегия, пожалуйста, голосуйте и принимайте - его ответственность за это – Jonathan

ответ

0

Если проверка не завершена, вам необходимо установить что-то вроде header.

if ($response["success"] === true) { 
    echo "Captcha succeeded"; 
    // let's process our other login stuff 
} else { 
    echo "You are robot scum"; 
    header('Location: /'); 
    exit; 
} 

Если проверка не удалась, в настоящее время вы ничего не делаете с ней. Просто эхом, затем продолжайте.

Вы не видите никакой другой логики, которая дает мне какое-либо впечатление о том, как процесс аутентификации работает на вас.

Вам нужно будет интегрировать его в логин входа в систему, как часть сообщения, которое входит в детали пользователя и включает в себя отказ captcha как еще одну причину сбоя аутентификации (например, предоставление неправильного пароля).