Это не так сложно, как кажется, я привел вам пример в комментариях к вашему вопросу.Теперь я немного расскажу.
Примечание: Этот пример не тестировался, но я проверил синтаксис.
Ваш HTML-код в порядке, поэтому никаких изменений не требуется.
Как вы уже знаете, вы только добавляете свой ключ:
<div class="g-recaptcha" data-sitekey="YOUR_KEY"></div>
Сейчасмы получим «данные recaptcha»:
$response = $_POST["g-recaptcha-response"];
$url = 'https://www.google.com/recaptcha/api/siteverify';
Recptcha нужны некоторые данные для проверки капчи:
$data = array(
'secret' => 'YOUR_SECRET',
'response' => $_POST["g-recaptcha-response"]
);
$options = array(
'http' => array (
'method' => 'POST',
'content' => http_build_query($data)
)
);
Далее скрипт должен получить все данные и проверить код с помощью file_get_contents
он загрузит данные рекапчи и расшифрует их с помощью json:
$context = stream_context_create($options);
$verify = file_get_contents($url, false, $context);
$captcha_success=json_decode($verify);
По крайней мере, нам нужен цикл if, чтобы проверить, действительна ли капча:
if ($captcha_success->success==false) {
echo "false";
} else if ($captcha_success->success==true) {
echo "true";
}
Следующий шаг быстрый и грязный:
if ($captcha_success->success==false) {
echo "Captcha wrong";
} else if ($captcha_success->success==true) {
if(!$mail->send()) {
echo 'Message sent!';
} else {
echo 'Error!';
}
}
Таким образом, полный код будет выглядеть следующим образом:
require_once('phpmailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->CharSet = 'utf-8';
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '';
$mail->Password = '';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->setFrom($email);
$mail->addAddress('');
$mail->isHTML(true);
$mail->Subject = 'Сообщение с сайта';
$mail->Body = '' .$name . ' оставил заявку, его телефон ' .$email. '<br>Сообщение этого посетителя: ' .$message;
$mail->AltBody = '';
$response = $_POST["g-recaptcha-response"];
$url = 'https://www.google.com/recaptcha/api/siteverify';
$data = array(
'secret' => 'YOUR_SECRET',
'response' => $_POST["g-recaptcha-response"]
);
$options = array(
'http' => array (
'method' => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$verify = file_get_contents($url, false, $context);
$captcha_success=json_decode($verify);
if ($captcha_success->success==false) {
echo "Captcha wrong";
} else if ($captcha_success->success==true) {
if(!$mail->send()) {
echo 'Message sent!';
} else {
echo 'Error!';
}
}
Вот исходное руководство (json): https://www.kaplankomputing.com/blog/tutorials/recaptcha-php-demo-tutorial/
На этой странице также есть учебник по ajax: https://www.kaplankomputing.com/blog/tutorials/php/setting-recaptcha-2-0-ajax-demotutorial/