Поскольку я пытаюсь кодировать веб-сайт с помощью контактной формы, я хотел бы добавить reCAPTCHA v3 - но у меня есть некоторые проблемы ... Я следовал этому руководству: Ссылка на учебник
Если быть более точным, я перечитал другие учебники, но подумал, что этот был наиболее простым для понимания.
Прежде всего я создал несколько идентификаторов в своей учетной записи Google в качестве локального хоста и получил несколько ключей - далее они обозначаются как XXXXXXXXXXX.
На странице моего сайта определены переменные php и метод отправки почты, а затем вся HTML-часть. Я попытался максимально упростить его.
Вот код:
<?php
define('SITE_KEY', 'XXXXXXXXXXX');
define('SECRET_KEY', 'XXXXXXXXXXX');
if ($_SERVER['REQUEST_METHOD'] === 'POST' AND isset($_POST['recaptcha_response']))
{
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
$recaptcha_secret = SECRET_KEY;
$recaptcha_response = $_POST['recaptcha_response'];
$recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);
$recaptcha = json_decode($recaptcha);
if ($recaptcha->score >= 0.5)
{
if (isset($_POST['send_message']))
{
include("mail_contact.php"); //method to send email
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="Pages/style.css" />
<title>Contact page</title>
<script src='https://www.google.com/recaptcha/api.js?render=<?php echo SITE_KEY; ?>'></script>
<script>
grecaptcha.ready(function()
{
grecaptcha.execute(<?php echo SITE_KEY; ?>, {action: 'send_message'}).then(function(token)
{
document.getElementById('recaptchaResponse').value = token;
});
});
</script>
</head>
<body class="preload">
<header>
<?php include("Pages/header.php"); ?>
</header>
<section>
<form method="post" action="">
<div class="grille">
<div class="demibox">
<label for="last_name">Nom :</label>
<input type="text" name="last_name" id="last_name" maxlength="20" required />
</div>
<div class="demibox">
<label class="label_name" for="first_name">Prenom :</label>
<input type="text" name="first_name" id="first_name" maxlength="20" required />
</div>
</div>
<div class="grille">
<label for="email">E-mail :</label>
<input type="email" name="email" id="email" maxlength="55" required />
</div>
<div class="grille_message">
<textarea name="message" id="message" required ></textarea>
</div>
<button name="send_message">
<span>Envoyer</span>
</button>
<input type="hidden" name="recaptcha_response" id="recaptchaResponse">
</form>
</section>
<footer>
<?php include("Pages/footer.php"); ?>
</footer>
</div>
</body>
</html>
Но когда я использую кнопку «Отправить», выдается следующая ошибка:
Примечание: неопределенное свойство: stdClass :: $ score в /Applications/MAMP/htdocs/Website/main.php в строке 13
Я понимаю ошибку, но не знаю какчтобы исправить это ..
У кого-нибудь есть решение, пожалуйста?
Спасибо за вашу помощь:)
Джерри