Регистрация формы отправки, когда reCAPTCHA не подтвержден - PullRequest
0 голосов
/ 02 апреля 2020

Я добавил reCAPTCHA в свою регистрационную форму, и когда я протестировал страницу, я заметил, что все еще могу зарегистрировать новую учетную запись без проверки с помощью reCAPTCHA. Когда я оставляю одно из текстовых полей пустым, я получаю «Пожалуйста, убедитесь, что вы человек». Это сообщение должно появиться, когда пользователь заполняет форму и забывает проверить. Я пробовал много разных операторов if, предоставленных переполнением стека и другими веб-сайтами, и проблемы до сих пор не решены. Я также попытался возиться с моей формой с помощью «метода» и «действия».

Вот моя регистрационная форма

<?php include('server.php') ?>
<!DOCTYPE html>
<html>
<head>
    <title>Register for Redchan</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <script src='https://www.google.com/recaptcha/api.js'></script>
</head>
<body>
    <a href="index.php" title="Home"><img alt="4chan" src="/image/pepe-popcorn.gif" width="300" height="120"></a>
    <div class="header">
        <h2>Register for Redchan</h2>
    </div>
    <?php
    //Check for form submission
    if ($_SERVER['REQUEST_METHOD'] == "POST")
    {
        //Get form submission data
        $username = $_POST['username'];
        $email = $_POST['email'];


        //Set verification information for the Google reCAPTCHA API
        $secretKey = "----------------------------------";
        $responseKey = $_POST['g-recaptcha-response'];
        $userIP = $_SERVER['REMOTE_ADDR'];

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

        //Decode API response and generate response
        $verification = json_decode($response, true);
        if ($verification['success'])
            echo "<p>Verification success!</p>";
        else
            echo "<p>Please verify that you are a Human.</p>";
    }
?>
    <form method="post" action="register.php">

        <?php include('errors.php'); ?>

        <div class="input-group">
            <label>Username</label>
            <input type="text" name="username" value="<?php echo $username; ?>">
        </div>
        <div class="input-group">
            <label>Email</label>
            <input type="email" name="email" value="<?php echo $email; ?>">
        </div>
        <div class="input-group">
            <label>Password</label>
            <input type="password" name="password_1">
        </div>
        <div class="input-group">
            <label>Confirm password</label>
            <input type="password" name="password_2">
        </div>
        <div class="g-recaptcha" data-sitekey="-------------------------------"></div>
        <div class="input-group">
            <button type="submit" class="btn" name="reg_user">Register</button>
        </div>
        <p>
            Already a member? <a href="login.php">Sign in</a>
        </p>
    </form>
</body>
</html>

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Вам нужно установить само поле капчи на обязательное, которое по умолчанию не является.

Вы можете попробовать что-то вроде этого:

<script type="text/javascript">
    window.onload = function() {
        var $recaptcha = document.querySelector('#g-recaptcha-response');

        if ($recaptcha) {
            $recaptcha.setAttribute("required", "required");
        }
    };
</script>
0 голосов
/ 05 апреля 2020

спасибо за ваш ответ, я попробовал это

window.onload = function () {var $ recaptcha = document.querySelector ('# g-recaptcha-response');

if ($recaptcha) {
    $recaptcha.setAttribute('#free_play_form_button').click()
}

};

но нет ответа от формы

я использую тампермонк, я добавил это правильный путь для вскрытия?

...