Как проверить ответ hCaptcha и убедиться, что он заполнен? - PullRequest
0 голосов
/ 29 мая 2020

Я следовал инструкциям здесь .

hCaptcha отображается на моем сайте, но форму можно отправить, не пытаясь ее выполнить. Как сделать его обязательным?

Чтобы сделать его обязательным, я пробовал следующее.

<?php
$data = array(
            'secret' => "my-secret (should start with 0x..)",
            'response' => $_POST['h-captcha-response']
        );
$verify = curl_init();
curl_setopt($verify, CURLOPT_URL, "https://hcaptcha.com/siteverify");
curl_setopt($verify, CURLOPT_POST, true);
curl_setopt($verify, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($verify, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($verify);
var_dump($response);
?>

А также

<?php

  if(isset($_POST['h-captcha-response']) && !empty($_POST['h-captcha-response']))
  {
        $secret = 'your_secret_key';
        $verifyResponse = file_get_contents('https://hcaptcha.com/siteverify?secret='.$secret.'&response='.$_POST['h-captcha-response'].'&remoteip='.$_SERVER['REMOTE_ADDR']);
        $responseData = json_decode($verifyResponse);
        if($responseData->success)
        {
            $succMsg = 'Your request have submitted successfully.';
        }
        else
        {
            $errMsg = 'Robot verification failed, please try again.';
        }
   }
?>

Но я получаю Notice: Undefined Index: ошибка. Я попытался скрыть ошибку, отредактировав php.ini, а также добавив
<?php error_reporting (E_ALL ^ E_NOTICE); ?> вверху моего файла, но это не сработало.

Когда я пытаюсь сделать это обязательным, я получить неожиданную ошибку конца файла -

$("form").submit(function(event) {

   var hcaptchaVal = $('[name=h-captcha-response]').value;
   if (hcaptchaVal === "") {
      event.preventDefault();
      alert("Please complete the hCaptcha");
   }
});
...