В одной из прошлых статей мы рассматривали создание простейшей формы обратной связи для сайта.

В этой части мы рассмотрим вопрос защиты нашей формы от спама при помощи такого полезного инструмента, как капча. Существует несколько вариантов капчи, однако наиболее популярная и довольно простая в установке на сегодняшний день — капча от Google.

Первое что нам нужно — зайти на сайт: https://www.google.com/recaptcha и нажать на находящуюся сверху синюю кнопку «Get reCAPTCHA».

Далее нам нужно зарегистрировать сайт, на котором мы будем размещать капчу, для этого заполним форму:

Заполняем название, выбираем тип reCaptcha, прописываем домен сайта, на котором будем размещать форму обратной связи с капчой. После нажатия на регистрацию нас перебросит на страницу с инструкцией по добавлению капчи на сайт.

Выполним шаг 1 этой инструкции, добавим

<script src=’https://www.google.com/recaptcha/api.js’></script>

в шапку сайта перед закрывающим тэгом , а строку

<div class=’g-recaptcha’ data-sitekey=’6Lco7R0UAAAAAJ-waxK1CGI8TIT2a0sYKDUKS4O0′></div>

разместим перед кнопкой «Отправить» нашей формы. В результате наша форма будет выглядеть теперь так:

<form id=’callback’>
<h3>Напишите нам</h3>
<input type=’text’ name=’name’ placeholder=’Введите Ваше имя’ required />
<input type=’text’ name=’phone’ placeholder=’Введите Ваш телефон’ required />
<input type=’email’ name=’email’ placeholder=’Введите Ваш E-mail’ required />
<textarea name=’textarea’ placeholder=’Введите сообщение’></textarea>
<div class=’g-recaptcha’ data-sitekey=’6Lco7R0UAAAAAJwaxK1CGI8TIT2a0sYKDUKS4O0′></div>
<button class=’button’ type=’submit’>Отправить</button>
</form>

Далее выполним некоторые преобразования нашего php кода, чтобы происходила корректная проверка на заполнение капчи пользователями, для этого разместим в корне сайта и подключим файл recaptchalib.php (файл можно скачать по ссылке ) вначале нашего mail.php, а так же добавим проверку нашего секретного ключа и добавим условие, без которого человек не сможет отправить нам сообщение не пройдя проверку reCaptcha. Теперь наш php файл будет выглядеть так:

<?php

require_once ‘recaptchalib.php’;

//секретный ключ
$secret = ‘6Lco7R0UAAAAAHe0gsdycmyyf-JnqbOh2JHHr_-g’;

//ответ
$response = null;
//проверка секретного ключа
$reCaptcha = new ReCaptcha($secret);

if (!empty($_POST)) {

if ($_POST[‘g-recaptcha-response’]) {
$response = $reCaptcha->verifyResponse(
$_SERVER[‘REMOTE_ADDR’],
$_POST[‘g-recaptcha-response’]
);
}

}

if ($response != null && $response->success) {

$recepient = «mail@mail.com»;
$sitename = «Ваш сайт»;

$name = trim($_GET["name"]);
$phone = trim($_GET["phone"]);
$email = trim($_GET["email"]);
$textarea = trim($_GET["textarea"]);

$pagetitle = "Новое письмо с сайта "$sitename«";
$message = «Имя: $name nТелефон: $phone nE-mail: $email nГород: $city nСообщение: $textarea»;

mail($recepient, $pagetitle, $message, "Content-type: text/plain; charset="utf-8"n From: $recepient");

} else {
$output = ’<script>alert(‘Капча не пройдена, попробуйте еще раз!’);</script>’;
}

?>

Теперь ваша форма будет надежно защищена от спама.