reCAPTCHA система для защиты веб-сайтов от ботов. ReCAPTCHA 2.0 немного отличается от старой reCAPTCHA. Вам больше не требуется вводить текст в специальное поле, достаточно просто нажимать кнопку.
Метод проверки пользователей немного отличается. Переменная g-recaptcha-response
отправляется через POST запрос в ваш скрипт на стороне сервера. Для работы ReCaptcha вам нужен ключ, который вы можете получить после регистрации. Ответ возвращается в формате JSON, поэтому мы будем использовать функции file_get_contents и json_decode.
Ниже приведен HTML-код простой контактной формы. DIV с классом g-recaptcha
– это то место, где мы фактически помещаем наш captcha-у. Вы должны заменить значение data-sitekey ключом, который вы получаете от Google, когда подписываетесь.
HTML форма
<form action="mail.php" method="post" enctype="multipart/form-data">
<input name="sender_name" placeholder="Your Name..."/>
<input name="sender_email" placeholder="Your email..."/>
<textarea placeholder="Your Message..." name="sender_message">
<div class="captcha_wrapper">
<div class="g-recaptcha" data-sitekey="YOUR_KEY"></div>
</div>
<button type="submit" id="send_message">Send Message!</button>
</form>
<script src='https://www.google.com/recaptcha/api.js'></script>
PHP Server-Side Script
Ниже приведен пример PHP скрипта обработчика. В данном скрипте вам нужно вставить ваш Секретный ключ в переменную secret. Т.е заменить значение YOUR_SECRET вышим ключем.
<?php
$sender_name = stripslashes($_POST["sender_name"]);
$sender_email = stripslashes($_POST["sender_email"]);
$sender_message = stripslashes($_POST["sender_message"]);
$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 "<p>Ты бот! Давай досвидание!</p>";
} else if ($captcha_success->success==true) {
echo "<p>Ты человек! Давай проходи!</p>";
}
?>