簡體   English   中英

谷歌驗證碼不起作用

[英]Google captcha not working

我有一個 php 登錄文件,我想把谷歌驗證碼放在那個登錄表單中。 我在一個文件中同時使用 php 和 html(不將表單數據發送到其他 php 頁面)。 問題是當用戶不驗證驗證碼時,他們仍然可以登錄網站(即使驗證碼不驗證)。 這是我的代碼:

                    <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>也在我的 head 標簽中(所有代碼都在一頁中)。

如果驗證失敗,您需要設置類似標題的內容

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

如果驗證失敗,目前,您沒有對它做任何事情。 簡單的回聲,然后繼續。

您沒有展示任何其他邏輯,讓我對身份驗證過程如何為您工作有任何印象。

您必須將其作為包含用戶詳細信息的帖子的一部分集成到您的登錄邏輯中,並將驗證碼失敗作為身份驗證失敗的另一個原因(例如提供錯誤的密碼)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM