2016-06-18 6 views
1

私はphpログインファイルを持っており、そのログインフォームにgoogleのcaptchaを入れたいと思います。私は1つのファイル(他のPHPページにフォームデータを送信しない)で一緒にPHPとHTMLを使用します。 問題は、ユーザーがキャプチャを確認せず、ウェブサイトにログインできることです(キャプチャしていなくても確認できます)。ここに私のコードは次のとおりです。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>が私の頭のタグである(そして、すべてのコードが1ページです)。

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

妥当性検査が失敗した場合、現在は何もしていません。単にエコーしてから、続けてください。

認証プロセスがどのように機能するかについての印象を与える他のロジックは表示されません。

ユーザーの詳細が表示される投稿の一部としてログインロジックに統合し、認証エラーの別の理由(誤ったパスワードの入力など)としてキャプチャの失敗を組み込む必要があります。

関連する問題