SAPID INFO

Формы обратной связи: реализация простой защиты от спама 1.0

В коде формы ниже видим три блока полей:

  • антиспам;
  • пользовательские;
  • технические.

Антиспам – в коде ниже помечены комментарием “для спамеров” – по умолчанию пустые. Пользователю они не отображаются, потому потенциально могут быть заполнены только спам-ботом. В качестве имен для полей применены наиболее часто используемые значения.

Пользовательские – отображаются для пользователя, заполняются информацией с контактными данными и именем пользователя.

Технические – содержат информацию об УТП и месторасположении формы обратной связи. Может также размещаться поле для UTM-меток.

<form action="send.php" method="$_POST">
    <div style="display: none">
        <!-- для спамеров -->
        <input type="text" name="name">
        <input type="email" name="mail">
        <input type="email" name="email">
        <input type="text" name="phone">
    </div>
    <!-- имя -->
    <input type="text" name="nomo" required placeholder="Имя">
    <!-- почта -->
    <input type="email" name="posto" required placeholder="E-mail">
    <!-- телефон -->
    <input type="text" name="telefono" required placeholder="Телефон или скайп">
    <div style="display: none">
        <!-- информация об УТП -->
        <input type="text" name="informo" value="Запрос обратного звонка">
        <!-- форма -->
        <input type="text" name="formo" value="Футер на главной странице site.ru">
    </div>
    <input type="submit" value="Отправить">
</form>

Вариант полей с информацией о форме:

<?php /* form info */?>
<input type="text" name="formo" value="In the bottom of the site">
<input type="text" name="ago" value="Just form `Our contacts`">
<input type="text" name="pago" value="<?php echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; ?>">

 

Обработчик поля обратной связи перед формированием письма выполняет проверку, все ли поля, которые должны быть пустыми, являются пустыми. Если какое-то из полей заполнено – обработчик останавливается и не производит отправку письма.

<?php
/* эти поля должны быть пустыми (антиспам-фильтр) */
if (($_GET['name'] != '') or ($_GET['mail'] != '') or ($_GET['email'] != '') or ($_GET['phone'] != '')) { die; }

/* на какую почту отправляем письмо */
$support_mail = '[email protected]';

/* вынимаем данные для формы */
/* имя */
if (isset($_GET['nomo'])) { $user_name = $_GET['nomo']; }
/* почта */
if (isset($_GET['posto'])) { $user_mail = $_GET['posto']; }
/* телефон или скайп */
if (isset($_GET['telefono'])) { $user_phone = $_GET['telefono']; }
/* информация об УТП */
if (isset($_GET['informo'])) { $site_form_utp = $_GET['informo']; }
/* данные о форме */
if (isset($_GET['formo'])) { $site_form_data = $_GET['formo']; }

/* формируем тему письма */
$mail_subject = 'Сообщение с сайта write365.ru';
if ($user_name != '') { $mail_subject .= 'от '.$user_name; };

/* формируем содержимое тела письма */
$mail_message = '<html>
<head>
  <title>'.$mail_subject.'</title>
</head>
<body>
<div>Заявка с сайта write365.ru</div>';
if ($user_name != '')   { $mail_message .= '<div>Имя: '.$user_name.'</div>'; }
if ($user_mail != '')   { $mail_message .= '<div>E-mail: '.$user_mail.'</div>'; }
if ($user_phone != '')  { $mail_message .= '<div>Телефон или скайп: '.$user_phone.'</div>'; }
if ($site_form_utp != '')    { $mail_message .= '<div>Данные о форме (УТП): '.$site_form_utp.'</div>'; }
if ($site_form_data != '')   { $mail_message .= '<div>Где расположена форма: '.$site_form_data.'</div>'; }
$mail_message .= '</body></html>';

/* формируем заголовок письма */
$mail_headers  = "MIME-Version: 1.0\r\n";
$mail_headers .= "Content-type: text/html; charset=utf-8\r\n"; 
$mail_headers .= "From: WRITE365 <[email protected]>"."\r\n";

/* отправляем сообщение */
mail($support_mail, $mail_subject, $mail_message, $mail_headers);

/* переходим на страницу спасибо */
header( 'Location: https://site.ru/thanks/', true, 303 );
?>

Комментарии к статье
Добавьте свой комментарий - оставьте след в блоге!