Я использую XAMPP для запуска своего кода на локальном хосте - у меня есть форма, которая позволяет пользователю вводить имя, адрес электронной почты и сообщение. У меня есть виджет RECAPTCHA v2 перед кнопкой отправки. В настоящее время похоже, что ответ file_get_contents фактически не работает для проверки ответа RECAPTCHA, поэтому он не может определить, был ли ответ успешным или нет.
В настоящее время он всегда возвращает 'Invalid Captcha. Пожалуйста, попробуйте еще раз'. $ response никогда не бывает успешным, даже если так и должно быть.
Я получаю следующие предупреждающие сообщения:
Предупреждение: не удалось загрузить поток из кафе: `C: \ xampp \ apache \ bin \ curl-ca-bundle.crt 'в строке C: \ xampp \ htdocs \ oscommerce \ catalog \ recaptchaexample.phpon 105
Предупреждение: file_get_contents (): не удалось включить шифрование в строке C: \ xampp \ htdocs \ oscommerce \ catalog \ recaptchaexample.phpon 105
Предупреждение: file_get_contents (https://www.google.com/recaptcha/api/siteverify?secret=6Lf1EaIUAAAAAEsUH5qVDPzLV0JqHf5d2RpDn155&response=&remoteip=::1): не удалось открыть поток: сбой операции в C: \ xampp \ htdocs \ oscommerce \ catalog \ recaptchaexample.phpon строка 105
Примечание: Попытка получить свойство необъекта в строке C: \ xampp \ htdocs \ oscommerce \ catalog \ recaptchaexample.phpon 111
Неверная капча. Пожалуйста, попробуйте еще раз
<head>
<title>Contact Form Design</title>
<style type="text/css">
body {
margin: 0;
padding: 0;
font-family: sans-serif;
}
.contact-form {
box-shadow: 0 0 4px 0 4gba(0,0,0,0.5);
margin: 50px auto;
width: 350px;
text-align: center;
}
.contact-form h2 {
background: #efefef;
margin-top: 0;
padding: 10px;
}
.contact-form input {
display: block;
width: 90%;
margin: 10px;
}
.contact-form textarea {
width: 90%;
margin: 5px auto;
padding-left: 10px;
height: 80px;
}
.submit-btn {
cursor: pointer;
width: 150px !important;
margin-left: 18px;
}
.status {
font-size: 15px;
color: green;
padding: 15px;
}
</style>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<div class="contact-form">
<h2>CONTACT US</h2>
<form method="post" action="">
<input type="text" name="name" placeholder="Your name" required />
<input type="email" name="email" placeholder="Your email" required />
<textarea name="message" placeholder="Your message" required ></textarea>
<div class="g-recaptcha" data-sitekey="sitekey"></div>
<input type="submit" name="submit" value="Send Message" class="submit-btn">
</form>
<div class="status">
<?php
if(isset($_POST['submit']))
{
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$email_from = "noreply@gmail.com";
$email_subject = "New Form Submission";
$email_body = "Name: $name.\n".
"Email: $email.\n".
"Message: $message.\n";
$to_email = "toemail";
$headers = "From: $email_from \r\n";
$headers = "Reply-To: $email \r\n";
$secretKey = "secretkey";
$responseKey = $_POST['g-recaptcha-response'];
$UserIP = $_SERVER['REMOTE_ADDR'];
// Verify the reCAPTCHA response
$response = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secretKey.'&response='.$responseKey.'&remoteip='.$UserIP);
// Decode json data
$response = json_decode($response);
if ($response->success)
{
mail($to_email,$email_subject,$email_body,$headers);
echo "Message sent succesfully";
}
else
{
echo "Invalid Captcha. Please try again";
}
}
?>
</div>
</div>
</body>
</html>