Моя проверка Google recaptcha не работает - PullRequest
0 голосов
/ 09 октября 2019

Я использую этот код для работы служб recaptcha. Но он говорит мне, что вы бот.

Я пробовал интеграцию на стороне php сервера, но она не работает.

Вот HTML

<form id="contact-form" name="contact-form" action="submithr.php" method="POST">


                                <!--Grid row-->
                                <div class="row">
                                    <div class="col-md-8">
                                        <div class="md-form mb-0">
                                            <label for="subject" class="">Subject</label>
                                            <input type="text" id="subject" name="subject" class="form-control" required>
                                        </div>
                                    </div>

                                    <!--Grid column-->
                                    <div class="col-md-4">
                                        <div class="md-form mb-0">
                                            <label for="category" class="">Select Category</label>
                                            <select type="text" id="category" name="category" class="form-control">
                                                <option value="1">Suggestion</option>
                                                <option value="2">Claim</option>
                                                <option value="3">Help</option>
                                            </select>
                                        </div>
                                    </div>
                                    <!--Grid column-->
                                </div>
                                <!--Grid row-->

                                <!--Grid row-->
                                <div class="row">

                                    <!--Grid column-->
                                    <div class="col-md-12">

                                        <div class="md-form">
                                            <label for="message">Your message</label>
                                            <textarea type="text" id="message" name="message" rows="2" class="form-control md-textarea" required></textarea>
                                        </div>

                                    </div>
                                </div>
                                <!--Grid row-->
                                <br>
                                <div class="g-recaptcha" data-sitekey="---My site key---"></div>
                                <br>
                                <div class="text-center text-md-left">
                                    <a class="btn btn-primary" onclick="document.getElementById('contact-form').submit();">Send</a>
                                </div>
                            </form>

А вот код PHP

<?php
$subject = $_POST['subject'];
$category = $_POST['category'];
$message = $_POST['message'];


$secretKey = "---My Secret Key---";
$responseKey = $_POST['g-recaptcha-response'];
$userIP = $_SERVER['REMOTE_ADDR'];

$url = "https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$responseKey&remoteip=$userIP";
$response = file_get_contents($url);
$response = json_decode($response);

if ($response->success) {
    echo "<script> alert('Thank you For Posting Suggestion')</script>";
}
else{
        echo "<script> alert('It looks like you are bot.Try Again')</script>";
}
?>

Если флажок установлен правильно, он должен предупредить меня, что я его проверил правильно, но даже если я проверю его правильно, он всегда предупредит меня, что вы бот.

1 Ответ

0 голосов
/ 09 октября 2019

Установите этот файл на своей html-странице, содержащей форму

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

Затем установите поле Google div перед кнопкой отправки

<div class="g-recaptcha" data-sitekey="Your recaptcha site key here"></div>

вот код php

<?php 

$subject = $_POST['subject'];
$category = $_POST['category'];
$message = $_POST['message'];

        // Ensure that recaptchabox is not empty
        if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])){ 

            $secretKey = 'Your_reCAPTCHA_Secret_Key_goes here'; 

            // send request and Verify the reCAPTCHA via g_recaptcha_response post parameter.                                                   
            $verifyRequest = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secretKey.'&response='.$_POST['g-recaptcha-response']); 
            $result = json_decode($verifyRequest); 

            // Check if captcha enterd is valid
            if($result->success){ 
                // send your form data and update database                 
               echo "<script> alert('Thank you For Posting Suggestion')</script>";

            }else{ 
               echo "<script> alert('Faizan You are bot. hahaha....')</script>";
            } 

        }else{ 
            echo "Recaptcha box cannot be empty";
        } 



?>
...