PHP ФОРМА ОБРАТНОЙ СВЯЗИ С КАПЧЕЙ
Форма обратной связи на сайте является неотъемлемой частью пользовательского опыта. Важно не только собрать все необходимые данные, но и защититься от спама. Для защиты можно использовать капчу.
Капча - это система, которая позволяет отделить человека от компьютера, проверяя наличие понимания смысла фрагмента изображения. Для создания капчи мы будем использовать класс Google reCAPTCHA.
Для работы с этим классом вам необходимо зарегистрировать свой аккаунт на сайте https://www.google.com/recaptcha. После регистрации вы получите ключи, которые необходимо будет использовать в коде. Для начала нужно добавить скрипты и стили Google reCAPTCHA на страницу:
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<link rel="stylesheet" href="https://www.google.com/recaptcha/api.css" />
Далее добавляем форму:
<form method="post" action="send.php">
<label>Name</label>
<input type="text" name="name" />
<label>Email</label>
<input type="email" name="email" />
<div class="g-recaptcha" data-sitekey="ВАШ_КЛЮЧ"></div>
<button type="submit">Send</button>
</form>
Обратите внимание, что мы добавляем класс "g-recaptcha" для DIV, который затем будет преобразован в капчу. Мы также используем data-sitekey для передачи ключа. Метод отправки формы установлен в POST и адрес, куда форма отправляется, - send.php.
В файле send.php мы можем проверить капчу следующим образом:
$response = $_POST['g-recaptcha-response'];
$remoteip = $_SERVER['REMOTE_ADDR'];
$url = "https://www.google.com/recaptcha/api/siteverify";
$data = array(
'secret' => 'ВАШ_СЕКРЕТ',
'response' => $response,
'remoteip' => $remoteip
);
$options = array(
'http' => array (
'header' => "Content-Type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$responseKeys = json_decode($result, true);
if($responseKeys["success"]) {
//code for successful form submit
} else {
//code for failed form submit
}
В этом коде мы получаем ответ капчи от reCAPTCHA, используя переданные данные. Мы проверяем, успешно ли прошла проверка капчи, и обрабатываем форму в зависимости от результата.
PHP для начинающих. Урок #12 - Создание формы обратной связи на PHP
Часть 1. Форма обратной связи для сайта: PHP-обработчик
Установка Google reCaptcha на сайт. Добавление невидимой капчи и капчу \
Как отправлять заявку с сайта на почту? SMTP скрипт отправки писем
Верстка сайта с нуля по макету - Форма обратной связи
Как подключить капчу на html или php сайт, за 60 секунд! Самый простой способ установить антиспам
#51 Уроки PHP - Учим язык PHP, Форма обратной связи на языке PHP и отправка письма на почту