Защита от спама

Last update: 22 Квітня, 2023

Category: Form, Security

Принятые обозначения name и их назначение:

  • identigilo – заголовок страницы (нужен в случаях когда есть функционал вернуться на страницу Х)
  • traduko – язык страницы (нужен на мультиязычных сайтах)
  • ago – название формы (узнать больше; получить подарок; задать вопрос)
  • loko – расположение формы на странице (форма в блоке на первом экране; попап с кнопки детали тарифа Х на экране Тарифы)
  • gpixel – ключевое слово латиницей, позволяющее понять, с какой страницы была оставлена заявка; нужно для отслеживания конверсии, применяется при переадресации на страницу спасибо, к примеру, для страницы smm: https://sapid.info/thanks/?gpixel=smm
  • pago – url страницы с формой
  • organizo – организация которую вы представляете
  • interkonsento – галочка соглашения с политикой конфиденциальности и прочим
  • nomo – имя
  • posto – почта
  • telefono – телефон
  • mesago – сообщение (комментарий)

Идея в том, что форма должна содержать:

  • отображаемые пользователю поля, в которых атрибут name написан на языке эсперанто;
  • скрытые поля, содержащие техническую информацию (адрес страницы, УТП, идентификатор формы);
  • скрытые поля для спам-ботов, в которых атрибут name заполнен на привычном, английском языке.

Соответственно обработчик проверяет условия:

  • заполнено как минимум 1 поле из полей e-mail и телефон;
  • не пустые поля с технической информацией;
  • пустые поля для спам-ботов.

Если хоть 1 из условий не выполнено – обработчик переадресовывает на страницу благодарности с сообщением об ошибке, или на главную страницу сайта.

Код формы обратной связи (08.2022)

Добавлены новые поля для спам-бота, добавлены новые типы сокрытия данных

<form action="" method="post">
    <?php /* requied fields: human information */ ?>
    <input type="text" name="nomo" placeholder="Имя">
    <input type="email" name="posto" placeholder="E-mail" required="required">
    <input type="text" name="telefono" placeholder="Телефон" required="required">
    <input type="text" name="organizo" placeholder="Название вашей компании">
    <textarea name="mesago" placeholder="Сообщение"></textarea>
    <?php /* галочка соглашения с политикой конфиденциальности */ ?>
    <input type="checkbox" name="interkonsento">
    <button type="submit">Request a consultation</button>

    <?php /* for spam-bots: display none */ ?>
    <div style="display: none;">
        <input type="text" name="name" value="" placeholder="&nbsp;">
        <input type="text" name="number" value="" placeholder="&nbsp;">
        <input type="text" name="tel" value="" placeholder="&nbsp;">
        <input type="email" name="email" value="" placeholder="&nbsp;">
        <input type="text" name="url" value="" placeholder="&nbsp;">
        <input type="text" name="text" value="" placeholder="&nbsp;">
    </div>

    <?php /* for spam-bots: visibility hidden */ ?>
    <div style="visibility: hidden; height: 0px;">
        <input type="text" name="surname" value="" placeholder="&nbsp;">
        <input type="text" name="telephone" value="" placeholder="&nbsp;">
        <input type="email" name="mail" value="" placeholder="&nbsp;">
        <input type="text" name="link" value="" placeholder="&nbsp;">
        <input type="text" name="message" value="" placeholder="&nbsp;">
    </div>
    
    <?php /* for spam-bots: position outside the visible area */ ?>
    <div style="position: absolute; top: 0px; left: -4000px;">
        <input type="text" name="nickname" value="" placeholder="&nbsp;">
        <input type="text" name="phone" value="" placeholder="&nbsp;">
        <input type="email" name="e-mail" value="" placeholder="&nbsp;">
        <input type="text" name="ref" value="" placeholder="&nbsp;">
        <input type="text" name="comment" value="" placeholder="&nbsp;">
    </div>
    
    <?php /* requied fields: technical information about the feedback form */ ?>
    <div style="display: none;">
        <?php /* Заголовок страницы */ ?>
        <input type="text" name="identigilo" value="">
        <?php /* Параметр для гугл пикселя */ ?>
        <input type="text" name="gpixel" value="">
        <?php /* Язык страницы */ ?>
        <input type="text" name="traduko" value="">
        <?php /* название формы (узнать больше; получить подарок; задать вопрос) */ ?>
        <input type="text" name="ago" value="">
        <?php /* расположение формы на странице (форма в блоке на первом экране; попап с кнопки детали тарифа Х на экране Тарифы) */ ?>
        <input type="text" name="loko" value="">
        <?php /* url страницы с формой */ ?>
        <input type="text" name="pago" value="<?php echo 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>">
    
    </div>
</form>

 

Код формы обратной связи (2021)

<form action="" method="post">
    <input type="text" name="nomo" placeholder="Имя">
    <input type="email" name="posto" placeholder="E-mail" required="required">
    <input type="text" name="telefono" placeholder="Телефон" required="required">
    <input type="text" name="organizo" placeholder="Название вашей компании">
    <textarea name="mesago" placeholder="Сообщение"></textarea>
    <button type="submit">Request a consultation</button>

    <div style="display: none;">
        <input type="text" name="name">
        <input type="email" name="mail">
        <input type="email" name="email">
        <input type="text" name="phone">
        <input type="text" name="tel">
        <input type="text" name="url">
    </div>
  
    <div style="display: none;">
        <input type="text" name="identigilo" value=""><?php /* Заголовок страницы */ ?>
        <input type="text" name="gpixel" value=""><?php /* Параметр для гугл пикселя */ ?>
        <input type="text" name="traduko" value=""><?php /* Язык страницы */ ?>
        <input type="text" name="ago" value=""><?php /* название формы (узнать больше; получить подарок; задать вопрос) */ ?>
        <input type="text" name="loko" value=""><?php /* расположение формы на странице (форма в блоке на первом экране; попап с кнопки детали тарифа Х на экране Тарифы) */ ?>
        <input type="text" name="pago" value="<?php echo 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>"><?php /* url страницы с формой */ ?>
    <input type="text" name="interkonsento" value=""><?php /* галочка соглашения с политикой конфиденциальности */ ?>
    </div>
</form>

Передача данных с кнопки

Способ заполнения в popup-форме полей технической информации, изменения заголовка/подзаголовка/надписи на кнопке:

<a href="#popup_form" onclick='
    document.getElementById("ago").value = "Всплывающая форма `Получить консультацию`";
    document.getElementById("detail").value = "Тарифный план `GOLD`, кнопка `Заказать`";
    $("#popup_form_title").html("Получите консультацию");
    $("#popup_form_descr").html("Мы ответим на все ваши вопросы об услуге и поможем сделать заказ!");
    $("#butono").html("Получить консультацию");
' class="fancybox">open popup</a>