Блог Новой студии

Как защитить сайт при помощи капчи

Как защитить сайт при помощи капчи

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

В этой части мы рассмотрим вопрос защиты нашей формы от спама при помощи такого полезного инструмента, как капча. Существует несколько вариантов капчи, однако наиболее популярная и довольно простая в установке, на сегодняшний день — капча от 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>’;
}

?>

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

Понравился пост?
Помоги другим узнать об этой статье, кликни на кнопку социальных сетей!

2017-05-15
1 голос2 голоса3 голоса4 голоса5 голосов ( 1 оценок, среднее: 5,00 из 5 )
Загрузка...

Добавить комментарий

Обязательные поля помечены *

*