ответ не отправляется - PullRequest
0 голосов
/ 20 января 2020

Привет всем, я впервые использую капчу, любая помощь приветствуется. Моя дилемма в том, что моя кнопка «Отправить» зависла после решения капчи. После некоторого устранения неполадок, я пришел к выводу, что ответ не отправляется, var_dump($_POST['g-recaptcha-response']) показывает NULL, однако после тестирования моего кода для вставки простой формы без какого-либо дизайна и логики базы данных c капча работает. Я подозреваю, что это как-то связано с моим дизайном форм, потому что в нем несколько тегов div, я не уверен. Я где-то читал, что это влияет на наследование div. Вот мой код

<?php
if(isset($_POST['submit']))
{
    $secretKey = "";
    $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 "Your captcha finally works!!!";
    }
    else
    {
        echo "HINDI PARIN GUMAGANA";
    }
}
?>

ЕСЛИ это помогает, моя форма имеет пятнадцать полей, все они находятся внутри тега div. Любая помощь приветствуется. Спасибо.

<form method="post">
<div><input></div>
<div class="g-recaptcha" data-sitekey="key"></div>
<button type="submit" name="submit">register</button>
</form>

1 Ответ

1 голос
/ 20 января 2020

Это для recaptcha v2, он должен нормально работать с вашей формой, без метра, сколько входов у вас есть. на самом деле ваш код выглядит хорошо.

<form method="POST">
   <div class="g-recaptcha" data-sitekey="your_site_key"></div>
  <input type="submit" name="submit" value="SUBMIT">
</form>


if(isset($_POST['submit']))
{
    if (!empty($_POST['g-recaptcha-response'])) { 

        $secretKey   = "your_site_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 "Verification success.";
        } else {
            echo "Verification failed";
        }
    }
}
...