Я следовал инструкциям здесь .
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");
}
});