logo

Сайты / Разработка / 
Форма обратной связи

08 июнь, 2018 6 861 7
Во-первых, HTML-форма. Самая простая, изящная форма: Имя, Телефон, Сообщение и ничего лишнего.

<form id="contact-form" method="post" action="mail.php">
    <div class="clint__comment__form">
        <div class="single__cl__form">
            <input name="name" id="name" type="text" placeholder="Ваше имя">
            <input name="tel" id="tel" type="text" placeholder="Телефон">
        </div>
        <div class="single__cl__message">
            <textarea name="message" id="message" placeholder="Сообщение"></textarea>
        </div>
        <div class="clint__submit__btn">
            <button class="submit htc__btn" type="submit">ОТПРАВИТЬ</button>
        </div>
    </div>
</form>

Во-вторых, CSS стили, базовый вид, без излишеств 
.single__cl__form {
    display: flex;
    margin-bottom: 20px;
    margin-left: -15px;
    margin-right: -15px;
}
.single__cl__form input {
    background: #fff none repeat scroll 0 0;
    border: 1px solid #e1e1e1;
    height: 40px;
    line-height: 40px;
    margin: 0 15px;
    padding: 0 20px;
    width: 50%;
    color: #606060;
}
.single__cl__message textarea {
    background: #fff none repeat scroll 0 0;
    border: 1px solid #e1e1e1;
    margin-bottom: 22px;
    min-height: 155px;
    padding-left: 20px;
    padding-top: 12px;
}
textarea {
    resize: none;
    background: #fcc236;
    border: 1px solid #fcc236;
    padding: 10px;
    width: 100%;
    font-size: 14px;
}
.htc__btn {
    background: #fcc236 none repeat scroll 0 0;
    color: #fff;
    display: inline-block;
    /* font-family: Raleway; */
    font-size: 18px;
    font-weight: 700;
    height: 45px;
    line-height: 45px;
    padding: 0 45px;
    transition: 0.5s;
    border: 1px solid #fcc236;
}

Во-третьих, нужен PHP-обработчик, указывается в аттрибуте формы action, как правило кидается в корень сайта

<?php 

    // Only process POST reqeusts.
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $charset = "utf-8";
        // Get the form fields and remove whitespace.
        $name = strip_tags(trim($_POST["name"]));
        $name = str_replace(array("\r","\n"),array(" "," "),$name);
        $tel = trim($_POST["tel"]);
        $message = trim($_POST["message"]);

        // Check that data was sent to the mailer.
        if ( empty($name) OR empty($tel) ) {
            // Set a 400 (bad request) response code and exit.
            http_response_code(400);
            echo "Пожалуйста, заполните необходимые поля.";
            exit;
        }

        // Set the recipient email address.
        $recipient = "********";

        // Set the email subject.
        $subject = "Сообщение с сайта ВашСайт";

        // Build the email content.
        $email_content = "Имя: <b>$name</b><br>";
        $email_content .= "Телефон: <b>$tel</b><br>";
        $email_content .= "<br>Сообщение: <br>$message<br>";

        // Build the email headers.
        $email_headers = "Content-type: text/html; charset=$charset\r\n";
        $email_headers .= "From: *******@example.com <********@example.com>";  // можно указать почту домена, если есть
        
        // Send the email.
        if (mail($recipient, $subject, $email_content, $email_headers)) {
            // Set a 200 (okay) response code.
            http_response_code(200);
            echo "Ваше сообщение отправлено.";
        } else {
            // Set a 500 (internal server error) response code.
            http_response_code(500);
            echo "Ошибка. Мы не смогли отправить Ваше сообщение.";
        }

    } else {
        // Not a POST request, set a 403 (forbidden) response code.
        http_response_code(403);
        echo "Ошибка сервера. Попробуйте ещё раз.";
    }

?>

И в завершение, подключаем jQuery и добавляем обработку ajax'ом

$(function() {

  // Get the form.
  var form = $('#contact-form');

  // Get the messages div.
  var formMessages = $('.form-messege');

  // Set up an event listener for the contact form.
  $(form).submit(function(e) {
    // Stop the browser from submitting the form.
    e.preventDefault();

    // Serialize the form data.
    var formData = $(form).serialize();

    // Submit the form using AJAX.
    $.ajax({
      type: 'POST',
      url: $(form).attr('action'),
      dаta: formData
    })
    .done(function(response) {
      // Make sure that the formMessages div has the 'success' class.
      $(formMessages).removeClass('error');
      $(formMessages).addClass('success');

      // Set the message text.
      $(formMessages).text(response);

      // Clear the form.
      $('#contact-form input,#contact-form textarea').val('');
    })
    .fail(function(data) {
      // Make sure that the formMessages div has the 'error' class.
      $(formMessages).removeClass('success');
      $(formMessages).addClass('error');

      // Set the message text.
      if (data.responseText !== '') {
        $(formMessages).text(data.responseText);
      } else {
        $(formMessages).text('Ошибка! Ваше сообщение не отправлено.');
      }
    });
  });

});

В целом всё) Проверяйте, форма должна отсылать email'ы.
--
Пара оговорок:
-- Кодировка UTF-8 в обработчике нужна, чтобы приходили письма с русским языком, а не кракозябры.
-- Часто бывает, что через форму сыпется всякий спам, дабы избежать такого, делаю простую доработку. В HTML добавляю скрытое поле с классом и именем check, чтобы точно не вылезло - скрываю его в скрытом div)))
<div style="display: none;"><input id="check" name="check" type="hidden" value="" /></div>
В кнопку отправки формы добавляю действие, которое добавит в value скрытого поля какие-нибудь_символы
onclick="document.getElementById('check').value = 'какие-нибудь_символы';"
В PHP-обработчик добавляю условие, которое выдаёт ошибку 400
$_POST['checkfield'] != 'какие-нибудь_символы'

Решение довольно примитивное, но поскольку никто из умных ботов не отправляет фотку нажатием кнопки мыши, оно работает)) 

UPD: Больше не работает :( Как подключить капчу от гугл читайте тутс.
Прокомментировать
Введите код с картинки:*
Кликните на изображение чтобы обновить код, если он неразборчив
  1. HYArtece
    4 августа 2025 16:57
    Smart shopping is essentially a skill that refines your entire look. The main goal is about investing in longevity over trends, by making a conscious effort to select items truly make you feel confident. Zegna Rea Prior to any purchase, preparation Calzedonia Lingerie is incredibly important; this means understanding the needs in your current wardrobe, adhering to a clear budget, and prevent every impulsive purchase. When you are making a selection, meticulously inspect the stitching and materials, as the satisfaction derived from a single well-considered choice is sure to outweigh that of multiple random purchases.A Guide To Mindfully Hunt For Lasting Keeper Pieces Mastering Accent Pieces To Transform Your Outfit 56f0e17
  2. Cyrus
    5 августа 2025 17:32
    взломанные игры на андроид без root — это интересный способ повысить качество игры. Особенно если вы играете на Android, модификации открывают перед вами большие перспективы. Я нравится использовать модифицированные версии игр, чтобы удобнее проходить игру. Моды для игр дают невероятную возможность настроить игру, что делает процесс гораздо увлекательнее. Играя с модификациями, я могу персонализировать свой опыт, что добавляет приключенческий процесс и делает игру более захватывающей. Это действительно невероятно, как такие модификации могут улучшить взаимодействие с игрой, а при этом с максимальной безопасностью использовать такие взломанные версии можно без особых рисков, если быть внимательным и следить за обновлениями. Это делает каждый игровой процесс более насыщенным, а возможности практически неограниченные. Рекомендую попробовать такие игры с модами для Android — это может придаст новый смысл
  3. Marlene
    22 октября 2025 23:40
    With the best MILF movie available, add some extreme experience to your sex! These seductive cougars and forlorn housewives long for consideration and a large, solid dick! Explore our incredible set of buzzsprout.com Rachel Steele porno MILF sexual movies and make every viewing of XXX a learning knowledge.
  4. Ermelinda
    15 января 2026 06:47
    Cryptoboss Casino — игровой сервис, который делает упор на удобство и прозрачность, а не на громкие обещания. Здесь понятные правила и аккуратный подход к каждому игроку. Если вы предпочитаете чёткие цифры вместо ярких лозунгов, зайдите на Cryptoboss бонус и оцените всё на практике. В лобби представлены слоты, рулетка, блэкджек и живые столы, причём интерфейс остаётся лёгким и удобным. Платежи в криптовалюте и фиате поддерживаются нативно, операции не растягиваются во времени. Гибкая бонусная система для разных стилей игры Еженедельные ивенты и розыгрыши Техподдержка 24/7 в чате и по почте Рациональный выбор для тех, кто серьёзно относится к крипто-игре
  5. Christiane
    30 марта 2026 00:40
    Привет, знаешь, как легко платить криптой через QR? С криптой жизнь становится удобнее, согласен? Забудь про долгие переводы или возню с кошельками — QR-код решает всё! И знаешь, это не так сложно, как кажется! Блокчейн и QR: идеальный дуэт для оплаты Я сам недавно втянулся эту тему, и, честно, впечатления огонь! Больше не нужно ждать подтверждений. Теперь я прям фанат этого способа, и тебе советую попробовать. Что за магия с QR-кодом? Чтобы оплатить что-то криптой по QR-коду, тебе нужен мобильное приложение с поддержкой QR. Скачай, например, Coinbase Wallet, или любое приложение, где есть сканер QR-кодов. В магазине или онлайн тебе показывают QR-код, ты его сканируешь, жмёшь «Оплатить», и готово! Платим биткоином по QR: всё Знаешь, что бесит? Долгие переводы с кучей комиссий. А тут — раз, и готово! И главное — безопасно: QR-коды шифруют данные. Я как-то оплатил новые кроссы через QR, и всё прошло без сучка и задоринки! Где можно платить криптой по QR? Крипта по QR-коду уже захватывает магазины, кафе и даже онлайн-сервисы. Например, в некоторых кафе в больших городах уже принимают BTC через QR-коды. Ищи логотипы криптовалют или спроси на кассе — всё просто, если уточнить. Криптощелчок по QR-коду Онлайн это ещё проще: многие сервисы добавляют оплату криптой через QR. На сайте жмёшь «Оплатить криптой», сканируешь QR, и дело сделано! Попробовал оплатить онлайн-курс через QR — и это было легко и просто. Чем QR-оплата цепляет? Оплата криптой по QR-коду — это не только быстро, но и шаг в будущее. Забудь про банковские комиссии — крипта и QR решают всё! Плюс, это конфиденциально, если тебе важна приватность. И знаешь, что ещё? Это просто весело! Когда ты сканируешь код и видишь, как эфир улетают за покупку, чувствуешь себя человеком будущего. Просто попробуй — это реально круто! Увеличьте продажи: криптовалютная оплата по QR Пора платить криптой? Честно, оплата криптой по QR-коду — это будущее, и оно уже здесь! Сделай одну оплату через QR, и, спорим, ты втянешься? Просто скачай кошелёк, найди место, где принимают крипту, и вперёд! Есть опыт оплаты криптой через QR? поделитесь, как всё прошло! Какие криптовалюты поддерживают оплату по QR-коду?
  6. Eusebia
    12 апреля 2026 16:20
    Cryptoboss Casino — онлайн-казино, где блокчейн работает для игрока, и выплаты идут без лишних пауз. Подключайтесь в один клик — Cryptoboss доступ к играм — и лобби открыто полностью. В каталоге — топовые слоты, лайв-дилеры и настолки, видео идёт плавно, а крипта и фиат поддерживаются нативно. Кэшбек начисляется по расписанию — подбирайте под свой ритм. Транзакции под защитой сети Еженедельные турниры и миссии Помощь на русском и английском Здесь ценят прозрачность и темп
  7. bio_momt
    22 апреля 2026 20:44
    Игорь Пушкарёв — российский политик и государственный деятель https://bio-facts.ru/persons/igor-pushkaryov/ .
все шаблоны для dle на сайте newtemplates.ru скачать