Smartlanding

Создание формы обратной связи

создание формы обратной связиЗдравствуйте дорогие читатели, сегодня хочу рассказать вам о том, как я создаю формы, для получения контактных данных пользователя.

На сегодняшний день, форма обратной связи, является обязательным элементом в структуре лендинг пейдж. Ведь это один из способов принять заказ или отправить каталог вашей продукции, предварительно получив e-mail посетителя.

Создание формы обратной связи – html разметка

Обычно мне хватает трех полей, и в большинстве случаев, я использую такую разметку для создания контактной формы:

<form id="application" action=" application.php" method="POST" name=" application ">
   <input name="name" id="applicationName" maxlength="20" placeholder="Введите ваше имя" required />
   <input name="email" type="email" id="applicationEmail" maxlength="20" placeholder="Введите ваш E-mail" required />
   <input name="telephone" type="Tel" id="applicationTelephone" maxlength="20" placeholder="Введите ваш телефон" required/>
   <button class="applicationButton" type="submit" form="application">Получить прайс </button>
</form>

Попробуйте открыть в браузере данный код и посмотрите что у вас получилось, в зависимости от того, какой интернет-обозреватель используете, должно выглядеть примерно так:

форма обратной связи

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


Создание формы обратной связи — css разметка

Давайте зададим стили нашей форме и приведем ее к читабельному виду:

/* Стили формы */
#application {
    width: 475px;
    margin: 0 auto;
}

/*Стили полей для ввода*/
#applicationName, #applicationEmail, #applicationTelephone {
    width: 100%;
    height: 73px;
    background: none;
    margin-top: 25px;
    border: 1px solid #fff;
    border-radius: 40px;
    text-align: center;
    color: #fff;
    font-size: 24px;
}
/*Стили полей при клике по ним*/
#applicationName:focus, #applicationEmail:focus, #applicationTelephone:focus {
    border: 1px solid #30ad64;
}

/*Стили текста, выводящегося в placeholder*/
::-webkit-input-placeholder {
    color: #efefef;
    font-family: 'PT Sans', sans-serif;
    text-shadow: 0 1px 1px rgba(0, 0, 0, .3);
}

::-moz-placeholder  {
    color: #fff;
    font-family: 'PT Sans', sans-serif;
    text-shadow: 0 1px 1px rgba(0, 0, 0, .3);
}  /* Firefox 19+ */

:-moz-placeholder {
    color: #fff;
    font-family: 'PT Sans', sans-serif;
    text-shadow: 0 1px 1px rgba(0, 0, 0, .3);
}  /* Firefox 18- */

:-ms-input-placeholder {
    color: #fff;
    font-family: 'PT Sans', sans-serif;
    text-shadow: 0 1px 1px rgba(0, 0, 0, .3);
}

::placeholder {
    color: #fff;
    text-shadow: 0 1px 1px rgba(0, 0, 0, .3);
}
/*Стили для кнопки*/
.applicationButton {
    margin-top: 25px;
    background: #30ad64;
    border: none;
    width: 100%;
    height: 73px;
    border-radius: 40px;
    color: #fff;
    font-size: 24px;
    text-transform: uppercase;
    font-family: 'PT Sans', sans-serif;
    cursor: pointer;
}
    .applicationButton:hover {
        background: #d68c18;
    }

Если хотите, чтобы цвет кнопки менялся плавно, добавьте в .applicationButton и .applicationButton:hover такую строку:

transition: .6s;

Где .6s — время анимации в миллисекундах.
Теперь наша форма приобрела красивый вид, сейчас она выглядит так:

форма обратной связи для сайта

Создание формы обратной связи — php разметка

Теперь нам необходимо создать файл application.php. Он будет получать введенные параметры из формы и отправлять их к нам на почту.

Структура у него, как у обычного html файла, это может быть страничка, на которой вы напишите «Спасибо, ваша заявка принята. После обработки заявки наши менеджеры свяжутся с вами»

То есть, когда пользователь нажмет кнопку, его перекинет на страницу application.php. Это полноценная страница, и вы должны оформить ее соответствующим образом.

<?php 

$sendto   = "smart-landing@yandex.ru"; // почта, на которую будет приходить письмо
$username = $_POST['name'];   // сохраняем в переменную данные полученные из поля c именем
$usertel = $_POST['telephone']; // сохраняем в переменную данные полученные из поля c телефонным номером
$usermail = $_POST['email']; // сохраняем в переменную данные полученные из поля c адресом электронной почты

// Формирование заголовка письма
$subject  = "Новое сообщение";
$headers  = "From: " . strip_tags($usermail) . "\r\n";
$headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";

// Формирование тела письма
$msg  = "<html><body style='font-family:Arial,sans-serif;'>";
$msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Cообщение с сайта</h2>\r\n";
$msg .= "<p><strong>От кого:</strong> ".$username."</p>\r\n";
$msg .= "<p><strong>Почта:</strong> ".$usermail."</p>\r\n";
$msg .= "<p><strong>Сайт:</strong> ".$usertel."</p>\r\n";
$msg .= "</body></html>";

// отправка сообщения
if(@mail($sendto, $subject, $msg, $headers)) {
	echo "<center><img src='images/spasibo.png'></center>";
} else {
	echo "<center><img src='images/ne-tpravleno.png'></center>";
}

?>

Давайте немного поясню код:

$sendto   = "smart-landing@yandex.ru"; // почта, на которую будет приходить письмо
$username = $_POST['name'];   // сохраняем в переменную данные полученные из поля c именем
$usertel = $_POST['telephone']; // сохраняем в переменную данные полученные из поля c телефонным номером
$usermail = $_POST['email']; // сохраняем в переменную данные полученные из поля c адресом электронной почты

Тут, думаю, — понятно.

Теперь давайте сформируем заголовок письма.

$subject  = "Новое сообщение";
$headers  = "From: " . strip_tags($usermail) . "\r\n";
$headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";

Строка $subject = «Новое сообщение»; — отвечает за тему письма, может написать там: «Заявка с сайта» или то, что вам больше подходит.

Предлагаю сделать так, чтобы письмо приходило, от адреса, указанного в поле input type=»email». То есть с того, с которого пользователь ввел при заполнении формы. Для этого пропишем следующие строки:

$headers  = "From: " . strip_tags($usermail) . "\r\n";

То есть мы подставим данные из переменной $usermail, где и хранится информация из поля, отвечающего за ввод email адреса.

Теперь зададим внешний вид письма. Вы можете оформить его как угодно, а я предлагаю следующую структуру:

$msg  = "<html><body style='font-family:Arial,sans-serif;'>";
$msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Cообщение с сайта</h2>\r\n";
$msg .= "<p><strong>От кого:</strong> ".$username."</p>\r\n";
$msg .= "<p><strong>Почта:</strong> ".$usermail."</p>\r\n";
$msg .= "<p><strong>Телефон:</strong> ".$usertel."</p>\r\n";
$msg .= "</body></html>";

Первой строкой задаем шрифт письма. Второй — выводим сообщение, например: «Заявка с формы обратной связи на первом экране». Третей, четвертой и пятой строкой передаем данные из формы. Каждая с новой строки.

Теперь нужно отправить письмо функцией mail и определить, что будет происходить при успешной и не успешной отправки письма:

if(@mail($sendto, $subject, $msg, $headers)) {
	echo "<center><img src='images/spasibo.png'></center>";
} else {
	echo "<center><img src='images/ne-tpravleno.png'></center>";
}

?>

Я сделал так, что в любом из случаев выведется картинка с соответствующим текстом. Вы можете вместо картинки вывести полноценную страницу. Просто пропишите код, вместо картинки.

Через несколько секунд, после вывода изображения, я делаю редирект ( автоматическое перенаправление) на главную страницу. Сделать это можно, вписав следующую строку между тегами head;

<meta http-equiv="Refresh" content="4; url=http://Адрес сайта/">

То есть через 4 секунды пользователя автоматически вернет на главную страницу!

Я не эксперт в php — это back-end язык программирования, меня всю жизнь тянуло к изучению front-end. Поэтому не судите строго. Да, здесь можно сделать проверки на заполнение контактных форм и так далее, но мне всегда хватало и этого, так что, если у кого-то есть предложение как улучшить этот код, напишите пожалуйста в комментариях или на почту, поправлю урок , спасибо!

Кстати, если вам нужна форма обратной связи без перезагрузки страницы, то почитать о том как ее установить можно в этой статье.

Может быть, кому-то не очень понятен материал, но если вы в точности повторите мои действия, то у вас обязательно будет работать контактная форма. Возникнут вопросы — пишите в комментариях, постараюсь ответить! До встречи на блоге!

Скачать исходник

P.s. Так как я стал очень часто получать вопросы о том, почему не работает форма и не приходят письма на почту, то решил описать несколько наиболее популярных причин, по которым это может происходить:

  • Тестируете форму не на сервере.
  • Тестируете форму на бесплатном хостинге.
  • Тестируете форму на платном хостинге, но в бесплатном тестовом периоде.

В этих случаях письма не будут приходить к вам на почту.

Если вам лень разбираться и самостоятельно делать форму, то рекомендую обратить внимание на конструктор форм обратной связи.

Поделитесь статьей в социальных сетях, чтобы не потерять

257 комментариев

  • Евгений

    помогите! все сделал как написано. при отправке выводится картинка, но письмо не приходит. в чем может быть проблема?

    Ответить
  • dimadv7

    Отправьте исходники пожалуйста сюда dima.d.v(собачка)yandex.ru, так сложно сказать, должно работать. Или скиньте В ВКонтакте

    Ответить
  • dimadv7

    Если появляется картинка, значит все правильно, проверьте поля где указывали адрес электронной почты(в трех местах)

    Ответить
  • макс

    Дима доброго времени суток.
    тут проблема у меня появилась (
    Все сделал работает но письма мне на почту не доходят(

    Создание формы обратной связи

    <?php
    if($_POST){

    $to = "8021388@mail.ru";
    $from = '8021388@mail.ru;
    $subject = "Отправить бриф, техника для клининга";
    $message = 'Имя: '.$_POST['name'].'; Почта: '.$_POST['email'].'; '.$_POST['telephone'].'; ';
    $headers = "Content-type: text/html; charset=UTF-8 \r\n";
    $headers .= "From: 8021388@mail.ru\r\n";
    $result = mail($to, $subject, $message, $headers);

    if ($result){
    echo "»;
    }
    else {echo» Сообщение не отпраВлено :( «;
    }
    }
    ?>

    Ответить
  • dimadv7

    Здравствуйте. У вас в 4 строке, в $from = '8021388@mail.ru; — ошибка. Попробуйте так $from = '8021388@mail.ru'; — не было кавычек закрывающихся! Сейчас проверю полностью.
    И в конце тоже — попробуйте так:

     
    if ($result){
    	echo "<center><img src='images/spasibo.png'></center>";
    	}
    else {echo" <p>Сообщение не отпралено</p> ";
    	}
    }
    ?>
    
    

    Или, вместо вывода сообщения и картинки, сделайте полноценную html страницу, в которой и поблагодарите за заявку

    Ответить
  • dimadv7

    Если будут проблемы — пишите, будем разбираться!

    Ответить
  • dimadv7

    Вот проверил, вот так должно работать

    <?php 
    if($_POST)
    {
    $to = "8021388@mail.ru";
    $from = '8021388@mail.ru';
    $subject = "Ваше сообщение"; 
    
    $message = 'Имя: '.$_POST['name'].'; Телефон: '.$_POST['telephone'].'; Email: '.$_POST['email'].';';
    
    $headers  = "Content-type: text/html; charset=UTF-8 \r\n"; 
    $headers .= "From: <8021388@mail.ru>\r\n"; 
    
    $result = mail($to, $subject, $message, $headers);
    
    
    if ($result){
    	echo "<center><img src='images/spasibo.png'></center>";
    	}
    else {echo" <p>Сообщение не отпралено</p> ";
    	}
    }
    ?>
    
    
    Ответить
  • макс

    DIMADV7, Спасибо заработало!) у обратил внимания на «кавычки»))) а можно убрать пункт e-mail.
    так как многие обыватели его могут и не иметь или не знать как пользоваться.
    Просто Имя и Телефон самое оно)

    Ответить
  • dimadv7

    Да, конечно, просто оставьте так:

    $message = 'Имя: '.$_POST['name'].'; Телефон: '.$_POST['telephone'].';';
    

    И, соответственно, в форме уберите input, отвечающий за ввод почты)

    Ответить
  • макс

    Спасибо)))

    Ответить
  • макс

    DIMADV7 а у Вас случайно может есть lightbox для текста и Формы обратной связи? много перерыл но толком не чего не нашел(

    Ответить
  • dimadv7

    Здравствуйте, честно говоря, я даже не в курсе что такое lightbox.

    Ответить
  • макс

    вот как тут, если сверху нажать «Оставьте номер»
    ww.altera-media.com

    Ответить
  • dimadv7

    Так а в чем принципиальное отличие? Форма связана с БД или еще что-то? Как по мне, так довольно простое поле, внешне.

    Ответить
  • макс

    DIMADV7, ну там в «модульном окне» выплывает форма обратной связи. я не знаю как еще объяснить)

    Ответить
  • dimadv7

    Вот статья про форму обратной связи: https://smartlanding.biz/sozdanie-formy-obratnoj-svyazi.html,
    Вот статья про модальное окно: https://smartlanding.biz/kak-sdelat-knopku-zakazat-obratnyj-zvonok.html
    Объедините и будет тоже самое :) Если возникнут вопросы — пишите)

    Ответить
  • макс

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

    Ответить
  • dimadv7

    Конечно. Ты же сам вот в этой строке говоришь к какой форме обращаться.

    <button class="applicationButton" type="submit" form="application">Получить прайс </button>

    а точнее — здесь

    form="application"

    Задай второй форме name и id — другой, и здесь пропиши его

    form="application"

    тогда будет все ок.

    Ответить
  • Светлана

    dimadv7, Вы лучший! Большое спасибо за форму, все чудесно работает и очень красиво!

    Ответить
  • dimadv7

    Большое спасибо)

    Ответить
  • DanilD

    Тоже не отправляет сообщения( Хотя после нажатия кнопки появляется сообщение об успешной отправке.

    <?php
    if($_POST)
    {
    $to = "danild91@gmail.com";
    $from = 'danild91@gmail.com';
    $subject = "Ваше сообщение";

    $message = 'Имя: '.$_POST['name'].'; Телефон: '.$_POST['telephone'].'; Email: '.$_POST['email'].';';

    $headers = "Content-type: text/html; charset=UTF-8 \r\n";
    $headers .= "From: \r\n»;

    $result = mail($to, $subject, $message, $headers);

    if ($result){
    echo «»;
    }
    else {echo» Сообщение не отпралено «;
    }
    }
    ?>

    Ответить
  • DanilD

    не $headers .= «From: \r\n»;
    а
    $headers .= «From: \r\n»;

    Ответить
  • dimadv7

    А в чем отличия?

    Ответить
  • DanilD

    Извиняюсь, блог обрубивает код, в общем я там тоже пишу мейл, но на почту ничего не приходит(

    Ответить
  • dimadv7

    Ну значит ошибка где-то у тебя. Ну у всех же работает. Я вчера обновил статью, подробнее описал php обработчик. Попробуй по новому

    Ответить
  • DanilD

    Подрубил обновлённый код, заработало сразу. После того как прописали свои стили — опять перестал работать. Пробовал разные почты, ничего. Хотя в логах хоста отправку показывает. /home/ххххххх/public_html/2/forma/application.php:33 11.12.2014 14:47:07

    Ответить
  • dimadv7

    Ну не может же из за стилей перестать работать. Возьми исходник, и редактируй его внимательно. Ну я не знаю как тебе еще помочь. Сам же говоришь, что работает. Значит где-то, что-то портишь во время правок :)

    Ответить
  • Сергей

    У меня форма на 1 поле (только телефон).
    Попытался сократить код, вот что вышло:
    <?php
    $sendto = "zalubov.s@gmail.com"; // почта, на которую будет приходить письмо
    $usertel = $_POST['telephone']; // сохраняем в переменную данные полученные из поля c телефонным номером

    // Формирование заголовка письма
    $subject = "Заявка на UF-X";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";

    // Формирование тела письма
    $msg = "»;
    $msg .= «Заявка на UF-X\r\n»;
    $msg .= «Номер: «.$usertel.»\r\n»;
    $msg .= «»;

    // отправка сообщения
    if(@mail($sendto, $subject, $msg, $headers)) {
    echo «»;
    } else {
    echo «»;
    }
    ?>

    Сохранил его через саблайм в корень сайта в файл application.php.
    Но при нажатии кнопки просто перекидает на страницу application.php (показывается мой код) и ничего больше не происходит.

    Подскажите пожалуйста, что не так делаю?

    Ответить
  • dimadv7

    Ответил в вк =)

    Ответить
  • Сергей

    Спасибо, все заработало!

    Ответить
  • Сергей

    Привет. Подскажи еще пожалуйста, как заменить выводимою картинку в случае успешного отправления формы на отдельную страницу? Пробую

    echo readfile('order_success.html');

    Но не срабатывает.

    Ответить
  • dimadv7
    if(@mail($sendto, $subject, $msg, $headers)) {
    	echo "<center><img src='images/spasibo.png'></center>";
    }
    

    Убирай

    <center> ... </center>

    И пиши

    <div class="" ></div>

    ну в общем как обычно, только кавычки после echo одинарные поставь, а то не будет работать

    Ответить
  • DanilD

    С проблемой отправки всё решилось банально просто — заменой хостинга) Автору спасибо за код.

    Ответить
  • Сергей

    Спасибо. Я наверное не совсем понятно сформировал вопрос или что-то недопонял.
    У меня есть html страница «order_success.html», я хочу, чтоб при успешной отправке формы пользователь попадал на эту страницу. Что нужно написать после echo?

    Ответить
  • dimadv7

    Я понял, что ты хочешь. Просто зачем создавать еще одну страницу, если можно эту оформить как угодно. То есть, если все хорошо, то покажем — такое, если ошибка, то покажем — такое. Просто начинаешь создавать обычную страницу, как бы ты это делал на новой, только без доктайпа и прочего. Сразу div и погнал..)
    Но если очень надо, попробуй так:

     echo 'header("Location: http://caqn.ru");';
    Ответить
  • Сергей

    Действительно, спасибо за совет!
    То есть вставляем всю страницу, начиная с и потом …? И все прописанное между и будет работать. Имею в виду «NOINDEX» для поисковиков и коды конверсии AdWords и Analytics?

    Ответить
  • Oleg

    Здравсвуйте, форма не отправляет письми и не переходит на страницу с картинкой, просто возврощается страница сайта. Пробовал создать новую html стриницу все работает, а на моей index.php никак

    Ответить
  • dimadv7

    Странно, ну нужно разбираться, может ты не в ту папку кладешь файл application.php?

    Ответить
  • Роман

    Спасибо! Отличная статья! Очень помогли!

    Ответить
  • Максим

    Почему-то при копировании не все строки передало( В кратце, мне нужно чтобы фаил по этому адрессу energosystems.com.ua/Catalog_Energosystems.zip начинал скачиваться автоматически, после заполнения формы и перехода на картинку об успешном заполнении.

    Ответить
  • dimadv7

    Привет, попробуй так:

    <meta http-equiv="refresh" content="0;url=http://example.com/file.rar" />
    Ответить
  • Максим

    Это нужно в echo в конце вставить?

    Ответить
  • Максим

    Если да, то пишет: Parse error: syntax error, unexpected '<' in …

    Ответить
  • dimadv7

    Нет, конечно не в echo, между тегами

    <head></head>

    , там где подключаешь таблицу стилей)

    Ответить
  • Максим

    Наверно я полный чайник в этом, но я вставил в мой документ index.html там где прописана эта кнопка, но оно скачивает его при заходе сразу на сайт( Очень нужно это сделать, но я блин даже не представляю уже как( Вот сама кнопка:

    Можете пожалуйста еще раз более подробно написать куда вставлять в мой главный файл index.html или в форму php? Заранее огромное спасибо!)

    Ответить
  • Максим

    Я полный чайник в этом, по этому можете пожалуйста более детально описать куда вставлять? В мой главный файл index.html или в форму php? Вот сама кнопка
    Извиняюсь если принес неудобства и заранее огромное спасибо!)

    Ответить
  • Максим

    Может как-то можно Вам скинуть на почту исходних php и код самой кнопки из html?

    Ответить
  • dimadv7

    Смотри, у тебя же файл с обработчиком формы, тоже должен содержать метатеги, таблицу стилей и т.д, ты же выводишь какое-то сообщение на этой странице, о том, что успешно отправлено письмо и т.д. Вот здесь и вставляй то, что я прислал раньше, то есть пользователь читает сообщение и у него начинается загрузка, время в секундах можешь задать, по умолчанию там 0.

    Можем на «Ты») Если хочешь присылай smart-landing@yandex.ru

    Ответить
  • Ильдар

    как сделать чтоб не вертикально столбцы были а горизонтально? в дну строку…и второй вопрос…форму можно ли использовать два более раз на одной странице…первый вариант в шапке вертикальном исполнении и по середине сайта в горизонтальном положении???

    Ответить
  • dimadv7

    Ширину формы сделай больше, они (поля) встанут горизонтально, если не поможет, то задай float:left; Использовать несколько раз — можно! Меняй id у формы и инпутов и располагай как угодно.

    Ответить
  • Полари

    Спасибо за полезную статью, но помоги разобраться с проблемой. Установила разметку и появилась форма, как у тебя на картинке. После заполнения стилей CSS «введите имя» осталось в таком же прямоугольнике, а все остальные кнопки приобрели овальный вид. Пыталась проверить и переделывала несколько раз, но результат все тот же. Сайт пока терзаю на денвере — его на хостинг загружать не хочу. Тем более, что дальше делать мне тоже не понятно. В сам ВордПресс или где в теме прилаживать апликайшен?

    Ответить
  • Полари

    кнопку исправила. Но с оставшейся частью помогите!

    Ответить
  • dimadv7

    Привет. Appliacation.php — класть в корень wp, там где wp-config.php Не понял, в чем помощь нужна?

    Ответить
  • Николай

    У меня при клике на поле выделяется овальная рамка зелёным цветом и поверх неё синяя прямоугольная… Подскажи как от прямоугольника избавиться? Заранее спасибо

    Ответить
  • dimadv7

    Если правильно понял, то нужно полям прописать: outline:none;

    Ответить
  • Полари

    Туда и разместила, но не чего не работает((( Поэтому и был вопрос.

    Ответить
  • Полари

    Уже разместила Страничку в интернете и вот ссылка на форму:
    http://www.totea.ru/sample-page/forma
    Я ее заполняю и она перекидывает меня на страницу с фразой Not found

    Ответить
  • Николай

    С первым вопросом помог, заработало.
    Скажи пожалуйста, а можно как-нибудь на локалке проверить работу формы?

    Ответить
  • dimadv7

    Можно. В зависимости от сервера письма складываются в определенную папку, в случае удачной отправки

    Ответить
  • Ильдар

    Доброго времени суток! проверьте пожалуйста на моем сайте почему после отправки происходит такое….весь код перелопатил, а понять все не могу никак. mail16reg.ru Заранее благодарю!

    Ответить
  • dimadv7

    Так а письмо приходит? и если да, то есть ли у тебя такая строка в applikation.php:

    <meta http-equiv="Refresh" content="4; url=http://Адрес сайта/">

    замени на адрес своего сайта, либо удали вообще)

    Ответить
  • Ильдар

    такую строку вставил…НООО!!!!!!! как выразиться даже помягче незнаю…вообщем через каждые 4 секунды происходит перезагрузка сайта…ставил и 10 сек и 60 сек…сам короче перезагружается…в итоге просто оставил пустым ….content=»;…. и пробывал удалять один хрен такая же байда

    Ответить
  • dimadv7

    Нет, ее удалить нужно, если у вас нет страницы благодарности. То есть у вас же не перебрасывает на страничку благодарности, значит вам она не нужна. при помощи этой строки можно было бы настроить возврат пользователя на главную страницу после оформления покупки. Просто удалите ее. Попробуйте вставить исходник на какую-нибудь страницу без изменений и протестировать уйдет ли письмо. А потом отпишите

    Ответить
  • genius

    Добрый день. Подскажите пожалуйста, а как сделать, чтобы когда сообщение успешно отправляется, то появлялась надпись плавно в самой же форме, что «Ваше сообщение отправлено», без перехода на другую страницу. Спасибо.

    Ответить
  • dimadv7

    Здравствуйте. Посмотрите здесь: https://smartlanding.biz/otpravka-formy-bez-perezagruzki-stranicy.html

    Ответить
  • Ильдар

    тестриовал…даже просто скачал по новой исходник открыл в браузере индекс файл…письмо отправил и также происхдит…вообщем пока страницу не перезагрузишь эта байда так и будет вылазить

    Ответить
  • Ильдар

    лучше уж это формой вопспользоваться https://smartlanding.biz/otpravka-formy-bez-perezagruzki-stranicy.html…байды хоть такой не выскакивает…А так примите мою похвалу, за такие клевые формы! просто , редактируется легко, как нужно под свои хотелки!

    Ответить
  • dimadv7

    Вообще — странно что возникала такая проблема, никогда не сталкивался с подобным. Все работает отлично, да и многие другие ставили и подобной проблемы не было…

    Ответить
  • genius

    Нашел другой выход из ситуации. Но все же спасибо за данные материалы. Вообще это же коды, не там символ какой-нибудь поставил, и уже не будет работать, так что совет смотрите путем свой код, если у вас что-то не так :)

    Ответить
  • Александр

    Александр, благодарю за работающую форму обратной связи! А ты используешь реферальные хвосты для определения источника заявки? Не нашел такой статьи на твоем блоге :)

    Ответить
  • Александр

    Прошу прощения, Дмитрий конечно!)

    Ответить
  • dimadv7

    Ах, ха!!! Спасибо) Нет не использую, скоро появится такая статья))

    Ответить
  • Максим Измайлов

    Огромное спасибо! Поставил на свои Landing Pages :)

    Ответить
  • Егор

    Спасибо за форму. Очень пригодится. Все работает как надо. Я тоже front-end увлекаюсь больше чем back-end. Но все-же нужно элементарные вещи знать. Я пока изучаю только, когда петух жареный клюет :)
    Только опечатка у вас. В письме, которое приходит вместо телефон, написано сайт :) Но это мелочь.
    Можно эту форму взять за основу и стили менять только, ну и когда убирать поле с мылом.
    Я еще посмотрю у вас форму без перезагрузки сейчас.

    Ответить
  • Егор

    Самое главное забыл написать. Почему у вас maxlength=»20" ?
    Я сейчас тестировал, не влазиет емаил в поле и не отправляется из-за этого письмо.
    имя может кто захочет с фамилией написать?
    Я сделал 40 — достаточно.

    Ответить
  • dimadv7

    Да я в курсе. Все вот лень-матушка поменять. Спасибо что напомнил. Засяду, подправлю косяки. А то уже несколько накопилось. Тут, в форме без перезагрузки (проверка поля), в статье об анимации — открывающийся body — пропал (( В общем нужно причесать исходники. Еще раз спасибо.
    !

    Ответить
  • Burt

    C браузера Safari приходят пустые заявки, т.к. напоминает о том, что нужно заполнить поля и отправляет сразу.
    В чем может быть проблема, как исправить?

    Ответить
  • dimadv7

    Все верно, на данный момент он не поддерживает required

    Ответить
  • Алексей

    Дмитрий подскажи пожалуйста как сделать чтобы в application.php отображался header и footer? Как эти файлы можно подключить к application.php? Или как то по другому? А то страница без шапки и подвала получается. Спасибо.

    Ответить
  • dimadv7

    В смысле как? Ну точно так же как и на главной странице у вас. Не понял вопрос. Ну взять все, что у вас между тегами

    <header></header>

    (включительно) и вставить в application.php и точно так же footer.

    Ответить
  • Greek

    Хочу добавить что в chrome и safari вокруг полей появляется дебильная синяя обводка дак вот чтобы её убрать надо добавить outline:none; в
    #applicationName, #applicationEmail, #applicationTelephone {

    Ответить
  • dimadv7

    Во всех исходниках есть файл reset.css, где это предусмотренно

    Ответить
  • Алексей

    Вставлял в application.php содержимое header и footer! Пустую страницу выдает. Без кода вообще.

    Ответить
  • Алексей

    Попробовал ещё раз.
    — не хочет отображаться на странице! (Код отображается в источнике!)
    — заработало!
    В чем может быть проблема с header ?

    Ответить
  • Алексей

    footer — заработал
    header — не хочет

    Ответить
  • dimadv7

    Не знаю, там же проверка сделана. И после отправки показывается картинка. Попробуй убрать условие вывода картинки, и просто отправляй письмо. Будет показываться твоя страница благодарности, ведь у нас скорее всего вообще такого не может быть, чтобы письмо не отправилось, а значит это проверка лишняя.

    Ответить
  • Николай

    приветствую! а как эту форму защитить от спам-ботов?

    Ответить
  • Arthur

    Спасибо!!!

    Ответить
  • Дмитрий

    Добрый день. Подскажите, пожалуйста, а возможно ли как-нибудь переделать этот пример, чтобы появилась возможность добавления и отправки прикрепленного файла?

    Ответить
  • dimadv7

    Здравствуйте. Да. Возможно. Но нужно использовать другой обработчик. Вот, была статья, в которой описывал как сделать отправку файла с сайта.

    Ответить
  • Сергей

    А как сделать так что бы при выполнении функции удачной отправки сообщения, возникало всплывающее окно а не картинка?

    Ответить
  • Александр

    Все работает, но приходит несколько запросов: 3 запроса из них 2 пустых. В чем может быть дело ?

    Ответить
  • dimadv7

    Дело может быть в том, что у вас не закрыта страница благодарности от прямого доступа. Например, если пользователь вернется на нее напрямую, то форма отправится еще раз. Или если пользователь попадет на нее из поиска. Или просто, по каким-то причинам обновляет эту страницу.

    Или у вас одновременно приходит 3 запроса при отправке?

    Ответить
  • Александр

    что можно сделать, чтобы при обновлении страницы не отправлялись запросы ?

    Ответить
  • dimadv7

    Использовать другую реализацию данной функции. Другой обработчик. Например используя class.phpmailer.php

    Или вот еще решение (тыц)

    А еще, можно про header('location: sitename.php') почитать. Про редирект.

    Суть заключается в том, что нужно разделить скрипт на 2. Первый — будет обрабатывать поступающие данные, а второй — отображать рузультат работы первого скрипта. Второй скрипт вызывается первым с помощью редиректа.

    Ответить
  • Дмитрий

    У меня после нажатия на кнопку, все содержимое application.php вываливается в браузере. В чем проблема?

    Ответить
  • dimadv7

    В том, что тестировать нужно на сервере. Php это северный язык и твой браузер не может его обработать

    Ответить
  • Сергей

    Испробовал оба варианта, тот который тут и родной лэндосовский — оба просто скачиваются, собрался уже писать письмо про ошибку, но вспомнил, я же на Джино, а там всё нужно подключать, у меня так как лэндинг был на простом HTML, в целях экономии была отключена поддержка PHP((( Ну типа раз на хтмл то нафига мне пхп… Пока писал комеммент вспомнил, подключил — работает

    Ответить
  • Сергей

    Вот еще один способ создания FeedBack-формы. Легко встраивается в любой проект. Все работает без перезагрузки страницы. youtube.com/watch?v=KR92NYGmQVY

    Ответить
  • Миша

    Доброго времени суток. Огромное спасибо за красивую и удобную форму, работает, все прелестно. У меня один вопрос, можно как-нибудь ли это форму сдвинуть влево? я всячески игрался с тегами на странице, в стилях, но ничего не получается, висит по центру, что мне не очень нравится :(. Буду признателен за ответ

    Ответить
  • dimadv7

    Здравствуйте. Рад слышать :) Ну конечно можно сдвинуть, но зависит же от стилей вашего сайта. В исходнике, выравнивание контейнера, в котором лежит форма происходит за счет

    margin: 0 auto;

    вот тут:

    #application {
        width: 475px;
        margin: 0 auto;
    }
    Ответить
  • Миша

    Спасибо, попробую сделать. Мы кстати земляки почти, если верить городу, который указан в контакте. Я сам из Донецка, но сейчас проживаю в Киеве. Так что можно дружить ;)

    Ответить
  • dimadv7

    В контакте правдивая информация. До этой долбаной АТО, котора давно уже просто ТО, учился и жил тоже в Донецке. Планировал оставаться там, но не сложилось пока… Конечно можем дружить )) Даже если и не земляки бы были ))

    Ответить
  • dimadv7

    А по форме, нужно убрать марин 0 авто. И двигать как душе угодно блок

    Ответить
  • Миша

    отлично, сначала сдвинулись только строчки, но потом допер, что нужно и саму форму (фон) тоже подправить. Вроде получилось, огромное тебе спасибо. В контакте сча добавлю в друзья, может даже поработаем вместе :)

    Ответить
  • Сергей

    Добрый день. Сделал все как было написано, но когда заполняю форму и нажимаю получить прайс, выскакивает окно с ошибкой и текстом
    Not Found
    The requested URL /application.php was not found on this server.
    Помогите что сделал не так. Делал на вордпрессе!

    Ответить
  • dimadv7

    Путь к файлу с обработчиком формы указан неправильно. Собственно это и написано :) Попробуй в корень покласть, там где wpconfig лежит

    Ответить
  • Юлия

    Здравствуйте, Дима. Скажите, пожалуйста, если на одной странице нужно поставить 8 форм для записи в разные группы с двумя одинаковыми полями (телефон и имя), нужно ли писать для каждой формы свой обработчик? Есть ли возможность как-то оформить в один, но чтобы на почту приходил заголовок каждый свой, смотря на какую кнопку (группу) нажал пользователь?

    Ответить
  • dimadv7

    Здравствуйте. Конечно можно один. Просто нужно добавить к каждой форме поле, у которого будет tipe=»hidden» (то есть оно будет невидимо для пользователя), а в параметре value написать нужный текст, например, заявка с шестой формы. А в обработчике принимать данные из этого поля, таким же образом, как и у других полей.

    Ответить
  • Евген

    Автор, ты крут. Я очень долго сношал свой мозг с этой формой оплаты. Оказывается все намного проще. Простое Человеческое тебе спасибо)

    Ответить
  • dimadv7

    Ах-ха. Спасибо за отзыв)

    Ответить
  • Юлия

    не получается и все тут. Приходит на почту, но значение поля hidden почему-то одно и тоже! Всю голову сломала. .. Помогите, пожалуйста

    Расписание занятий

    С посещением 1 раз в неделю!
    вечер ВТ 18:00-23:00

    Записаться

    вечер ЧТ 18:00-23:00

    Записаться

    вечер (ПН,ПТ) 18:00-23:00

    Записаться

    вечер (ВТ,ЧТ) 18:00-23:00

    Записаться

    СР 18:00-21:30, СБ 14:30-18:00

    Записаться

    вых (СБ,ВС) 9:00-14:15

    Записаться

    утро (ВТ,ЧТ) 9:00-14:15

    Записаться

    Записаться на ближайшую дату

    Код обработчика:
    <?php
    $sendto = "адрес@ящика"; // почта, на которую будет приходить письмо
    $username = $_POST['name']; // сохраняем в переменную данные полученные из поля c именем
    $usertel = $_POST['telephone']; // сохраняем в переменную данные полученные из поля c телефонным номером
    $usermail = $_POST['email']; // сохраняем в переменную данные полученные из поля c адресом электронной почты
    $tema = $_POST['named']; // тема письма

    // Формирование заголовка письма
    $subject = "Новое сообщение";
    $headers = "From: " . strip_tags($usermail) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    // Формирование тела письма
    $msg = "»;
    $msg .= «Cообщение с сайта «.$tema.»\r\n»;
    $msg .= «От кого: «.$username.»\r\n»;
    $msg .= «Почта: «.$usermail.»\r\n»;
    $msg .= «Телефон: «.$usertel.»\r\n»;
    $msg .= «»;

    // отправка сообщения
    if(@mail($sendto, $subject, $msg, $headers)) {
    echo «Ваша заявка успешно отправлена. «;
    } else {
    echo «Ошибка. Напишите нам на почту «;
    }
    ?>

    Ответить
  • Юлия

    Уй, как-то вставилось не html <!— Расписание занятий

    С посещением 1 раз в неделю!
    вечер ВТ 18:00-23:00

    Записаться

    вечер ЧТ 18:00-23:00

    Записаться

    —>

    Ответить
  • dimadv7

    Вордпрес режет код. Не нужно его вставлять в комментарии. Вы же поменяли id у формы? У каждой формы должен быть свой. И у каждой кнопки значение атрибута form должно соответствовать айдишнику формы. Если не получится, напишите мне в ВК. Попробуем разобраться.

    Ответить
  • Юлия

    Все решено. Терпение + внимательность + чистка кэша)) Спасибо еще раз за помощь!

    Ответить
  • Валентин Левченко

    Очень классная форма — и все прекрасно работает. Только письма почему-то приходят с неправильной кодировкой…От кого: Валентин Левченко

    Как это можно исправить?

    Ответить
  • dimadv7

    Скорее всего у вас не UTF-8 прописана. Нужно в явном виде указать на страницах,

    <meta charset="utf-8"/>

    . Кроме этого, нужно сохранять все файлы в utf-8 без бом. Если это не поможет, то нужно в файле htaccess прописать AddDefaultCharset UTF-8. Если и это не поможет , то, возможно, на сервере есть файл php.ini. В нем нужно внести правки и указать кодировку. Возможен вариант, что у вас сайт весь в windows-1251, тогда, просто поменяйте кодировку на странице обработчика формы, между тегами head, на свою и замените в строке

    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";

    c utf на свою.

    Ответить
  • Алексей

    А вы не могли бы написать статью, как встроить подобную форму в плагин для wordpress, который называется optimizepress? Был бы очень признателен!

    Ответить
  • dimadv7

    Здравствуйте, я не занимаюсь написанием плагинов для wordpress

    Ответить
  • Рома

    Не работает:(
    Попробывал другой какой-то буржуйский скрипт, он работает.
    Но хотелось установить ваш. Здесь проще…

    Ответить
  • Рома

    Конкретно не отсылает письма, хотя пишет, что успешно отправлено. Качал готовую версию вашего скрипта.

    Ответить
  • dimadv7

    С mail.ru не дружит скрипт, не нравиться ему, как составлен заголовок и тело скрипта. Но пользователи mail.ru, как и пользователи IE — должны страдать)) Попробуй просто почту от Яндекса, например, или gmail, но в gmail, первый раз, может в спам кинуть, нужно будет один раз указать, что это не спам и все будет прекрасно работать.

    Ответить
  • Борис

    Добрый день! Поставил форму, данные отправляет, но на почту ничего не приходит. Я добавил дополнительное поле «Город». В чем может быть проблема?
    Вот php-код:

    <?php

    $sendto = "krooto@mail.ru"; // почта, на которую будет приходить письмо
    $username = $_POST['name']; // сохраняем в переменную данные полученные из поля c именем
    $usermail = $_POST['email']; // сохраняем в переменную данные полученные из поля c адресом электронной почты
    $usertel = $_POST['telephone']; // сохраняем в переменную данные полученные из поля c телефонным номером
    $usercity = $_POST['city']; // сохраняем в переменную данные полученные из поля c городом

    // Формирование заголовка письма
    $subject = "Новое сообщение";
    $headers = "From: " . strip_tags($usermail) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";

    // Формирование тела письма
    $msg = "»;
    $msg .= «Cообщение с сайта\r\n»;
    $msg .= «От кого: «.$username.»\r\n»;
    $msg .= «Почта: «.$usermail.»\r\n»;
    $msg .= «Телефон: «.$usertel.»\r\n»;
    $msg .= «Город: «.$usercity.»\r\n»;
    $msg .= «»;

    // отправка сообщения
    if(@mail($sendto, $subject, $msg, $headers)) {
    echo «»;
    } else {
    echo «»;
    }

    ?>

    Ответить
  • Ян

    Привет, поставил форму на сайт, но если с мобильного устройства открыть, поля ввода текста выезжают за пределы экрана. Возможно ли это исправить?

    Ответить
  • dimadv7

    Да. Переверстать под себя форму и задать все не в пикселях, а в относительных единицах.

    Ответить
  • Диана

    Доброго времени суток!
    Спасибо большое за статью, очень помогла!
    Но почему-то вместо слов от кого, телефон, почта стоят вот такие знаки ����� . Как можно это исправить?

    Ответить
  • dimadv7

    Нужно привести все файлы к одной кодировки. Например utf-8. То есть сохранить все файлы в utf-8 и явно указать ее в доктайпе. Кроме того, если есть файл .htaccess, то и там указать utf-8

    Ответить
  • Михаил

    ПОМОГИТЕ!
    Подскажите где написать свои ЕМАИЛ чтобы письма приходили мне на почту?
    Вот форма html
    Жду звонка

    Ответить
  • Илья

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

    Заранее спасибо за ответ, с ув. Илья

    Ответить
  • dimadv7

    Можно создать у формы скрытое текстовое поле с type=»hidden», и в значение в value вписать то, что находиться в title, а в обработчике ловить данные точно так же, как и данные из других полей. То есть в $subject вывести не текст а то, что вытащили из скрытого поля, то есть title

    Ответить
  • Илья

    Спасибо да я так, вчера и решил эту проблему. Спасибо за ответ

    Ответить
  • Егор

    Как-то сложно это все, к тому же на сервере должна быть поддержка PHP. Я для себя сделал выбор в пользу онлайн генераторов форм. К счастью их сейчас огромное множество. Мне вот нравится вот этот — formdesigner.ru. Довольно неплохой сервис, плюс есть интеграция с сервисами email рассылок и CRM системами. Очень удобно. Кому лень разбираться с php кодом рекомендую попробовать какой-то онлайн сервив.

    Ответить
  • dimadv7

    Здравствуйте, точно. Я тоже когда-то пользовался. Просил клиент установить. Нужно будет статью написать. Спасибо, что напомнили)

    Ответить
  • Алексей

    Всё это хорошо. Но как быть с обработкой данных с апселла?
    Добрый вечер. Неделю уже карплю с товарным одностраничником.

    Подскажите пожалуйста, как мне получить данные с 2 кнопок и прибавить их к уже полученным данным на главной странице index.php, где находится форма всего с 2 полями? Скрипт лежит в файле send.php, обрабатывает и отправляет на мыло данные полей и в конце перебрасывает посетителя на upsell.php, где и находятся эти кнопки.

    А мне нужно, как-то собранные данные с полей формы не отправлять, а сначала получить данные с тех 2 кнопок, что в файле upsell.php (в зависимости какую кнопку нажмёт покупатель), а уже потом, прибавив одно из значений всё это отправить одним сообщением на мыло.

    Дошёл лишь до момента, когда собраны данные с полей формы, нажата кнопка «Заказать» и данные улетают на мыло , одновременно с переходом на страницу upsell.php

    Ответить
  • dimadv7

    Здравствуйте, посмотрите в сторону сессий и cookies.

    Ответить
  • Алексей

    Здравствуйте. Где посмотреть: здесь на форуме или у себя в браузере?

    Ответить
  • dimadv7

    Нет, на блоге об этом ничего нет. В документации по php, например. Суть в том, что можно сохранить данные в сессии и использовать их на любой странице, пока она открыта.

    Ответить
  • Сергей

    Спасибо за форму! У меня такой вопрос, вставил форму сделал тестовый заказ, но сообщение об успешной отправке заявки открывается не в новом окне а там же встроенным _http://leadoffer.ru/test1/order.htm

    Ответить
  • Chupacabra

    На тарифе Free доступна только одна форма, она настроена по умолчанию и не редактируется. Вне зависимости от выбранного шаблона это может быть только форма обратной связи.

    Ответить
  • Вика

    Большое спасибо за детальное описание формы! Правда поскольку впервые разбираюсь в этом моменте, естественно не все получилось((( Помоги, плиз, разобраться! При отправке формы выдает такой текст:
    Not Found

    The requested URL /application.php was not found on this server.

    Что это может значить?

    Ответить
  • dimadv7

    Что путь к обработчику формы неправильно прописан. В форме он указывается в атрибуте action. При попытке передать данные по заданному пути нет файла application.php. Это и есть обработчик

    Ответить
  • dimadv7

    Если все осталось как в исходнике, то файл application.php должен в корне сайта лежать

    Ответить
  • Вика

    Сорри! Нашла ошибку)) Порядок теперь)) Все прекрасненько работает! =))) Еще раз спасибо тебе!

    Ответить
  • Вика

    Приветик)) а как застайлить приходящие на почту данные? Чтоб они не просто строкой были, а допустим, каждое с новой строки, «имя» жирным шрифтом, в таком духе? А то пока так http://prntscr.com/auxpfm

    Ответить
  • dimadv7

    В статье и так все с новой строки , и имя жирным… Там прописаны теги < p > и < strong >

    $msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Cообщение с сайта</h2>\r\n";
    $msg .= "<p><strong>От кого:</strong> ".$username."</p>\r\n";
    $msg .= "<p><strong>Почта:</strong> ".$usermail."</p>\r\n";
    $msg .= "<p><strong>Сайт:</strong> ".$usertel."</p>\r\n";
    
    Ответить
  • Евгений

    Спасибо. Все доходчиво, просто и красиво.

    Ответить
  • Артур

    Может кто сталкивался с такой проблемой. Перестали работать формы заявок на сайте. Выдает такую ошибку » Ошибка скрипта send.php» Хотя на другом хостинге копия этого сайта работает без проблем.

    Ответить
  • Евгения

    А версии php одинаковые? Может в этом проблема, хотя, должно работать и на более ранних. Вообще, не понятная ошибка, должно быть на английском написано.

    Ответить
  • YG

    Напишите, пожалуйста, как сделать форму в модальном окне с автоматическим закрытием после отправки формы либо переброску на страницу благодарности. Если можно еще реализовать проверку формы на правильность заполнения (чтобы в поле ввода номера телефона нельзя было ввести буквы). Спасибо!

    Ответить
  • Дима

    Здравствуйте!
    Подскажите пожалуйста как добавить две или три такие формы на один ленгдинг?
    Что нужно изменить в коде? Я новичек в том деле и не очень понимаю.

    Ответить
  • dimadv7

    Здравствуйте, нужно задать разный id у форм

    Ответить
  • Катя

    Здравствуйте, Дима. Вы писали, что надо вставить между тегами head. Из ответов на комментарии тут, я поняла, что это надо вставить в application.php
    Я просто больше по фронт-енду работаю и совершенно не знаю как оформлять пхп-файлы. Подскажите, правильно ли я поняла, application.php оформлять надо так:

    php-код

    Ответить
  • Катя

    Странно, почему-то теги не отобразились. Пойду другим путем. Вы говорили что между тегами head надо вставить тег мета с рефреш. Из ответов на комментарии тут, я поняла, что это надо вставить в application.php
    Я просто больше по фронт-енду работаю и совершенно не знаю как оформлять пхп-файлы. Подскажите, правильно ли я поняла, application.php оформлять надо так:
    хтмл
    хед
    метатеги
    линки
    хед закрывающий
    боди
    php-код
    боди закрывающий
    хтмл закрывающий

    Ответить
  • Катя

    И еще хотела спросить. Если я в пхп-коде где формируется тело письма, задам классы в тегах для стилей, то стили в письме отработают? (стили буду прописывать в подключенном цсс файле)
    Заранее спасибо за ответ!

    Ответить
  • dimadv7

    Здравствуйте. Скачайте исходник, там же полная реализация рабочей формы, с классами, рефрешем и т.п.)) Да, можно оформлять произвольным образом, если убрать проверку на отправлено или нет письмо. Она не нужна, это больше для тестов.

    Вот тут проверка:

    if(@mail($sendto, $subject, $msg, $headers)) {
        echo "<center><img src='images/spasibo.png'></center>";
    } else {
        echo "<center><img src='images/ne-tpravleno.png'></center>";
    }
    

    Она, по сути, — не нужна. Лучше сделать проверку на заполнение полей, не пустые ли они и т.д. И дополнительную проверку, не прямой ли заход на страницу благодарности. Это же самый простой примерчик того, как заставить работать форму. А усложнять можно долго-долго. Посмотрите исходник, если что-то будет непонятно, напишите мне в социальные сети, там быстрее будет))

    Ответить
  • Алексей

    Добрый день.
    При выборе поля для ввода, оно меняется кроме того как описано в CSS для активного поля. Появляется прямоугольная рамка голубого цвета. Может где-то пререкрытие стилей? Не подскажете где посмотреть?

    Ответить
  • dimadv7

    Стандартный стиль браузера. Спасает:

    outline:none;
    Ответить
  • Алексей

    Спасибо огромное, помогло.

    Ответить
  • Алексей

    Не приходят письма на gmail, хотя картинка об успешном отправлении открывается. Сначала отправка писем с сайта была заблокирована хостером (тогда и картинка не открывалась). После обращения в поддержку вроде заработало но письма на указанный адрес не доходят. Спам проверял, разные адреса пробовал. В чем еще может быть ошибка?

    Ответить
  • dimadv7

    А хостер позволяет отправлять сообщения на почту, созданную не у них, специально для сайта? Иногда это запрещено в целях борьбы со спамом.

    Ответить
  • Алексей

    У хостера в настройках php пришлось добавить e-mail получателя для функции mail. Сообщения стали доходить, но они приходят как сообщения пересылаемые Mail Delivery System от Mailer-Daemon

    Ответить
  • Алексей

    Прошу прощения за повторения, сообщения не появлялись. Лишние можно удалить.

    Ответить
  • Фарид

    не получилось у меня , ты выше писал поменять в трех местах свой маил я что то не вижу эти 3 места только один где это?

    Ответить
  • dimadv7

    Ткни пальцем, не помню где писал об этом. Какая ошибка? тестируешь на сервере? Не тестовый период? Не используешь mail.ru?

    Ответить
  • Георгий

    Здравствуйте!Очень полезная статья,спасибо огромное)Но у меня возникла проблема.Указал в php свою эл.почту(Яндекс).Заполнил форму своими контактными данными.Опробовал.Мой же адрес эл.почты,имя и номер телефона пришли мне на почту,тут все работает отлично.Решил проверить с чужими данными(попросил у друга).Вот тут и возникла проблема.Его данные не приходят мне на почту.Он пользуется мэил.ру , может быть из-за этого?

    Ответить
  • dimadv7

    Нет, это просто текст. Если вы отправили тестовое письмо и оно дошло, значит все в порядке. Не имеет значения, что вы написали в полях и какой адрес электронной почты указали при заполнении формы. С другой стороны, если вы указали в скрипте получателя, с почтой mail.ru, то действительно на эту почту данные могут не приходить.

    Ответить
  • Георгий

    Хм.Письма приходят,но через раз.Иногда приходят,иногда нет.Это может быть связанно с хостингом?

    Ответить
  • Георгий

    Извините меня за мою глупость)Все эти письма автоматически отправлялись в спам,а я и не додумался их там посмотреть.

    Ответить
  • dimadv7

    Бывает. Нужно один раз указать, что не спам и все нормально будет. Не будут больше попадать) А вообще, от большого их количества могли попасть туда. Иногда то же, когда тестирую и шлю десятки писем, то автоматом туда попадают. Но указываешь, что не спам и нормально.

    Ответить
  • Anton

    Дима, вот скачал WordPress, создал файл application.php, открывать его можно блокнотом? содержимое будет работать? И нужно ли перед созданием application.php редактировать wp-config.php? Уже раз пытался отправить данные на свою почту, но после нажатия кнопки «получить прайс» пишет: «страница не найдена».

    Ответить
  • dimadv7

    Открывать можно чем угодно. Wp-config трогать не нужно. Не найдена страница, видимо, из-за того, что путь к файлу application.php неправильно указан. 99%. А вообще, для wp есть же куча плагинов для контактных форм, например, contactform7, я именно им и пользуюсь.

    Ответить
  • Александр

    Привет,помоги доработать форму ,мне нужно добавить в форму которую я здесь прикрепил, то есть когда приходит письмо на почту,то при нажатии на кнопку ответить,то емеел вписывался в стоку кому отправить,а то у меня пишется емеел хостинга откуда пришло письмо, и еще добавить в форму от кого чтобы можно было сменить емеел от кого сообщение приходит,по умолчанию имя хостинга стоит,а я хотел емеел почты хостинга,чтобы от него приходило письмо формы

    Форма обратной связи

    <?php
    extract($_POST);
    $to = "емеел куда присылать письмо";
    $subject = "[сайт] Письмо от посетителя сайта";
    $message = "

    Здравствуйте!

    Вам пришло новое письмо, отправленное через форму обратной связи на сайте сайт

    Ваше имя: $name

    Обратный е-маил: $email

    Текст сообщения: $comment

    С уважением,

    Служба обработки почтовых сообщений

    Сайт
    Группа вконтакте http://www.vk.com

    «;
    $headers = 'MIME-Version: 1.0' . «\r\n»;
    $headers = 'Content-type: text/html; charset=utf-8' . «\r\n»;
    mail($to, $subject, $message, $headers);
    ?>
    »

    Ответить
  • Александр

    вот форма сама

    </center><!doctype html>
    <html>
        <head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
            
            <title> Форма обратной связи </title>
            <meta name="description" content=" "/>
            <meta name="Keywords" content="  "/>
            <link rel="stylesheet" type="text/css" href="/feedback/css/style.css" />
            <link href='http://fonts.googleapis.com/css?family=PT+Sans&subset=latin,cyrillic' rel='stylesheet' type='text/css'>
            
    </head>
    <body>
    
    <form id="application" action="/feedback/application.php" method="POST" name=" application ">  
    <input name="name" id="applicationName" maxlength="20" placeholder="Введите ваше имя" required /> 
    <input name="email" type="email" id="applicationEmail" maxlength="35" placeholder="Введите ваш E-MAIL" required/> 
    <br><br>
    <textarea name="comment" class="form-control" rows="7" placeholder="Текст сообщения:" required></textarea>
    <button class="applicationButton" type="submit" form="application"> Отправить сообщение </button>  
    </form>
    Ответить
  • Евгения

    В статье же написано, как сделать так, чтобы можно было указать от кого пришло письмо…

    Ответить
  • Мирон

    Проще всего воспользоваться конструктором форм Тестограф. Там очень хороший функционал, который позволит создать форму любой сложности с уведомлением на имейл.
    Подробнее о том, как создать и настроить форму: __https://www.testograf.ru/ru/blog/forma-obratnoj-svyazi.html

    Ответить
  • remontokna.com.ua

    Здравствуйте, радикально сейчас не смогу ответить, что у вас не работает. Как вариант, посмотрите в демке и сверить что у вас. Попробуйте простые стили css задать для кнопки, без картинки, например Подскажите как апселл прикрутить? Чтобы после заказа клиент видел форму в которой ему предлагнается еще что нибудь и если он купит и это нажав на кнопку щаказать его бросало на страничку подтверждения. И конечно чтобы оба заказа приходили на почту

    Ответить
  • Masha

    Добрый вечер, спасибо за форму, очень помогло.
    Подскажите пожалуйста, как добавить несколько почтовых адресов для получения письма.

    Ответить
  • Лариса
    header("Location: http://caqn.ru");

    без

    echo
    Ответить
  • Артур

    А как добавить в форму такой пункт » отправить фиал» через adobe muse
    Отпишитесь пожалуйста на почту a201048@bk.ru

    Ответить
  • Genrytomenugh

    Спасибо!!!! Я столько чассов прорыскала в инете, перешерстила тонну инфы, и здесь наконец нашла что искала! Крепкого здоровья вам и всех благ!!! добрый день, а как на скопированном лейдинг пейдж,сделать так чтобы с формы обратной связи письма приходили на мою почту. спаибо

    Ответить
  • Вадим

    при нажатии на кнопку отправить ничего не происходит. подскажите пожалуйста

    Ответить
  • dimadv7

    На сервере тестируете?

    Ответить
  • Вадим

    да, правда пока на бесплатном

    Ответить
  • Вадим

    и если не сложно подскажите как добавить в форму текстовое поле так же что бы на него была проверка

    Ответить
  • dimadv7

    Часто отключена функция отправки письма на бесплатном. Уточните у хостера.

    Ответить
  • Вадим

    не могу связаться с хостингом. я понял, спасибо чуть позже попробую на платном. но у меня стоит 2 формы, я пробовал другую сначала, она вроде отправляет но письма не приходят…. а та что с Вашего сайта ничего не происходит даже при нажатии кнопки

    Ответить
  • Ирина

    ПРОСТО КРУТАЯ ФОРМА! Спасибо!!!!

    Ответить
  • Сергей

    Спасибо огромное. Много методов пробовал, но этот самый лучший

    Ответить
  • Android108801

    Добрый день! Спасибо! Всё работает ,ПОЧТИ-но при нажатии «Получить Прайс»-происходит-ОШИБКА «Страница не найдена». Делаю вроде все правильно…
    application.php. создал в него вставил скрпит ваш.Может ярлык страницы и название страницы должно быть особым?)

    Ответить
  • Android108801

    Добрый день! 2 строка в коде id заяквканейм

     <input name="name" id="zayavkaName" maxlength="20" placeholder="Введите ваше имя" required />

    а в css

    #applicationName,

    то есть разные иди?

    Ответить
  • dimadv7

    Да нет, просто путь неправильно указали к application.php

    Ответить
  • Ник

    Все вроде работает только письмо не приходит.

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Создание формы обратной связи</title>
    <meta http-equiv="Refresh" content="4; URL=http://eurodez.uz/"> 
    </head>
    <body>
    
    <?php 
    
    $sendto   = "lokomativ64@mail.ru"; // почта, на которую будет приходить письмо
    $username = $_POST['name'];   // сохраняем в переменную данные полученные из поля c именем
    $usertel = $_POST['telephone']; // сохраняем в переменную данные полученные из поля c телефонным номером
    $usermail = $_POST['email']; // сохраняем в переменную данные полученные из поля c адресом электронной почты
    
    // Формирование заголовка письма
    $subject  = "Новое сообщение";
    $headers  = "From: " . strip_tags($usermail) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    
    // Формирование тела письма
    $msg  = "<html><body style='font-family:Arial,sans-serif;'>";
    $msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Cообщение с сайта</h2>\r\n";
    $msg .= "<p><strong>От кого:</strong> ".$username."</p>\r\n";
    $msg .= "<p><strong>Почта:</strong> ".$usermail."</p>\r\n";
    $msg .= "<p><strong>Телефон:</strong> ".$usertel."</p>\r\n";
    $msg .= "</body></html>";
    
    // отправка сообщения
    if(@mail($sendto, $subject, $msg, $headers)) {
    	echo "<center><img src='images/spasibo.png'></center>";
    } else {
    	echo "<center><img src='images/ne-otpravleno.png'></center>";
    }
    
    ?>
    
    </body>
    </html>
    Ответить
  • dimadv7

    На mail .ru и не будет приходить, пользователи mail.ru — должны страдать) А если серьезно, то не нравятся заголовки им, которые передаются. Нужно поискать информацию, как именно должны формироваться заголовки для этого почтового сервсиса.

    Ответить
  • Airat

    Добрый день,на почту вместо значений полей приходит Array , прошу помочь

    Ответить
  • giorgi

    а можно форму под мобильную версию адаптировать?

    Ответить
  • андрей

    подскажите пожалуйста почему не приходят письма. пишет что отправлено но не ничего нет.

    Ответить
  • Артём

    Во первых автору спасибо, огромное человеческое спасибо.
    Во вторых вопрос… Хочу уже до конца въехать в эту тему, и для меня не понятно… за что отвечает — «id=»applicationEmail»» И почему — «id=»zayavkaName»» а не «id=»applicationName»»
    За что этот id отвечает

    Ответить
  • artur

    Дима, всё работает и даже русские буквы передает нормуль. Но вот вопрос как сделать такое: надо чтобы пользователь имел возможность в форме прикрепить 1 или более файлов. В html-файле я ставлю: , а как прописать это в php-файле, чтобы на почту приходили не только заполненные текстовые поля, но и вложенные (прикрепленные) файлы?

    Ответить
  • artur

    Не прикрепилось, в хтмл-файле:

    <input type="file" multiple name="files" class="file">
    Ответить
  • Надежда

    Добрый день, Дмитрий!
    Может быть, Вы сможете мне помочь? ранее форма обратной связи работала как часы, но с сегодняшнего дня заявки падать перестали, т.е. код остался тот же, рабочий, уведомление об отправке заявки всплывает, а письма не доходят… Может быть, Вы сталкивались с такой проблемой?

    Ответить
  • Эдуард

    Здравствуйте!
    Не приходят почему-то письма после отправки через форму.
    Вот код, который у меня в html файле:

    <span style="position: absolute; top: 290px; left: 230px;">
    <form id="application" action=" application.php" method="POST" name=" application ">
       <input name="name" id="zayavkaName" maxlength="20" placeholder="Введите ваше имя" required />
       <input name="email" type="email" id="applicationEmail" maxlength="20" placeholder="Введите вашу почту" required />
       <input name="telephone" type="Tel" id="applicationTelephone" maxlength="20" placeholder="Введите ваш телефон" required/>
       <button style="background: #FFCC00;" class="applicationButton" type="submit" form="application">Отправить</button>
    </form>
    </span>
    

    А вот код в php файле:

    <?php 
    
    $sendto   = "enb1963@mail.ru"; // почта, на которую будет приходить письмо
    $username = $_POST['name'];   // сохраняем в переменную данные полученные из поля c именем
    $usertel = $_POST['telephone']; // сохраняем в переменную данные полученные из поля c телефонным номером
    $usermail = $_POST['email']; // сохраняем в переменную данные полученные из поля c адресом электронной почты
     
    // Формирование заголовка письма
    $subject  = "Новое сообщение";
    $headers  = "From: " . strip_tags($usermail) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
     
    // Формирование тела письма
    $msg  = "<html><body style='font-family:Arial,sans-serif;'>";
    $msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Cообщение с сайта</h2>\r\n";
    $msg .= "<p><strong>От кого:</strong> ".$username."</p>\r\n";
    $msg .= "<p><strong>Почта:</strong> ".$usermail."</p>\r\n";
    $msg .= "<p><strong>Сайт:</strong> ".$usertel."</p>\r\n";
    $msg .= "</body></html>";
     
    if($_POST)
    {
    $to = "enb1963@mail.ru";
    $from = 'enb1963@mail.ru';
    $subject = "Ваше сообщение"; 
     
    $message = 'Имя: '.$_POST['name'].'; Телефон: '.$_POST['telephone'].'; Email: '.$_POST['email'].';';
     
    $headers  = "Content-type: text/html; charset=UTF-8 \r\n"; 
    $headers .= "From: <enb1963@mail.ru>\r\n"; 
     
    $result = mail($to, $subject, $message, $headers);
    
    if(@mail($sendto, $subject, $msg, $headers)) {
        echo "<center>Ваше сообщение отправлено!</center>";
    } else {
        echo "<center>Ошибка! Ваше сообщение НЕ отправлено!</center>";
    }
    
    }
     
    ?>
    
    Ответить
  • Антонина

    Подскажите пожалуйста, где меняется надпись — «необходимо заполнить это поле» которая всплывает если не заполнил поля. Мне нужно перевести на англ. язык, а в файле я не нашла где это меняется

    Ответить
  • Александр

    /*Стили полей для ввода*/
    #applicationName, #applicationEmail, #applicationTelephone {
    width: 100%;
    height: 73px;
    background: none;
    margin-top: 25px;
    border: 1px solid #fff;
    border-radius: 40px;
    text-align: center;
    color: #fff;
    font-size: 24px;
    }
    Добавляю сюда margin-bottom, но расстояние между полями не уменьшается, а увеличить можно, в чем может быть проблема?

    Ответить
  • rodimir

    3дравстBуйтe Yважаемый кoллeга
    Наш сайт предлагает Вам следующие услуги:

    1: Рассылка 10 000 сообщений на форумы с рекламой Вашего сайта или Ваших услуг — 1 тыс. рублей
    2: Размещение более 2000 входящих ссылок для Одного Вашего сайта, на различных профилях и топиках — 500 рублей
    3: Оптовое размещение входящих ссылок (до 8 сайтов) — 1000 рублей

    Также
    Mы поможеM ВаM, Быcтрo и Выгодно продаTь автоMобиль или Дом и участок земли

    Пoдробности Ha сaйте: PROPISUN.RU

    Ответить
  • Андрей

    В форме предусмотрен только 1 адрес на который отправляются заявки, а как сделать если нужно на 2 адреса или на 3?
    Пробовал через запятую и точку с запятой — не отправляются.

    Ответить
  • Руслан

    При нажатии на кнопку «получить прайс» Страница перезагружается и возникает надпись: Не удается найти DNS-адрес сервера….
    Что делать? Я так понял дело в хостинге? У меня nic.ru чего там надо включить?

    Ответить
  • Александр

    А я с кодом не стал заморачиваться. На ucalc форму себе сделал простую.

    Ответить
  • Сергей

    Воспользовался примером статьи, но палка о двух концах — если ставлю в «формирование тела письма» $message, то приодят письма с приведенным форматированием, но заполненны все поля, крома текста сообщения; если ставлю $msg, то приходят письма с текстом сообщения, но без остальных полей и форматирования.

    Код php:

    <?php
    require('email_config.php');

    // sender information
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $error = "";

    $subject = "Новое сообщение";
    $headers = "From: " . strip_tags($email) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($email) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    // Формирование тела письма
    $message = "»;
    $message .= «Cообщение с сайта\r\n»;
    $message .= «От кого: «.$name.»\r\n»;
    $message .= «Почта: «.$email.»\r\n»;
    $message .= «Сообщение: «.$message.»\r\n»;
    $message .= «»;

    // check sender information
    $pattern = «^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$^»;
    if(!preg_match_all($pattern, $email, $out)) {
    $error = $invalid_email; // for invalid email
    }
    if(!$email) {
    $error = $invalid_email; // for empty email field
    }
    if(!$message) {
    $error = $invalid_message; // for empty message field
    }
    if (!$name) {
    $error = $invalid_name; // for empty name field
    }

    if (!$error){

    // sending email
    $sent = mail($to_email,$subject,$message,$headers);

    if ($sent) {
    // if message sent successfully
    echo «Ваше сообщение отправлено!»;
    } else {
    // error message
    echo $sending_error;
    }
    } else {
    echo $error; // error message
    }
    ?>

    Подскажите — где ошибка?

    Ответить
  • Сергей

    Сорри, на самом деле все прекрасно работает в этом виде. Осталось поколдовать над сообщением о доставке, т.к. в моем случае оно просто открывается на весь экран, а если использовать предложенную автором строку с перезагрузкой через 4 секунды, то после загрузки сайта каждые 4 сек. сайт просто перезагружается. Попробую либо с выводом модального окна с этим сообщением, либо со скриптами.

    Ответить
  • Андрей

    Спасибо большое! Все работает, круто!

    Ответить
  • Алексей

    Как защитить данную форму от спама? Ведь заспамить ее очень просто

    Ответить
  • dimadv7

    Например, вот так))

    Ответить
  • Вячеслав

    Здраствуйте, подскажите пожалуйста, можно ли как то прикрепить к форме в теле письма от куда отправляется заказ, точнее с какой странички адреса, каждая страничка это один товар. К примеру чтоб в тексте письма приходила ссылка от куда был сделан заказ

    Ответить
  • Денис

    А можно что бы пол человека указывался?

    Ответить
  • DAniil12312

    Письма не приходят на майл почту, но приходят на гугл почту, помогите, что сделать чтобы на майл приходили письма?
    В папке спам нет ничего тоже

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Создание формы обратной связи</title>
    <meta http-equiv="Refresh" content="4; URL=http://ten-miass.ru/Dan/calc/forma/"> 
    </head>
    <body>
    
    <?php 
    
    
    
    $sendto   = 'pany@mail.ru'; // почта, на которую будет приходить письмо
    $username = $_POST['name'];   // сохраняем в переменную данные полученные из поля c именем
    $usertel = $_POST['telephone']; // сохраняем в переменную данные полученные из поля c телефонным номером
    $usermail = $_POST['email']; // сохраняем в переменную данные полученные из поля c адресом электронной почты
    
    // Формирование заголовка письма
    $subject  = "Новое сообщение";
    $headers  = "From: " . strip_tags($usermail) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    
    // Формирование тела письма
    $msg  = "<html><body style='font-family:Arial,sans-serif;'>";
    $msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Заявка на просчёт со скидкой! Калькулятор</h2>\r\n";
    $msg .= "<p><strong></strong> ".$username."</p>\r\n";
    $msg .= "<p><strong></strong> ".$usermail."</p>\r\n";
    $msg .= "<p><strong>Телефон:</strong> ".$usertel."</p>\r\n";
    $msg .= "</body></html>";
    
    // отправка сообщения
    if(@mail($sendto, $subject, $msg, $headers)) {
    	echo "<center><img src='images/spasibo.png' width='100%'></center>";
    } else {
    	echo "<center><img src='images/ne-otpravleno.png' width='100%'></center>";
    }
    
    ?>
    
    </body>
    </html>
    
    Ответить
  • dimadv7

    Пользователи mail.ru — должны страдать. А если серьезно то воспользуйтесь Phpmailer

    Ответить
  • Виктор

    Доброго времени суток. Сделал сайт на joomla для сайта недвижимости: casacosta.ru — при этом использовал готовый компонент JUX. Проблема следующая, когда клиент пишет со страницы интересующего обьекта, приходят только данные: имя, меил, текст сообщения. А нужно. что бы к письму автоматически линьковался url страницы, с которой пишет клиент. Разработчик к сожалению не собирается дорабатывать эту функцию. Насколько сложна задача и возможно ли ее выполнить добавив какую то строку в код почтового обработчика? Заранее большое человеческое спасибо

    Ответить
  • Виктор

    Вячелав, доброго дня. Если решили эту задачу, пожалуйста посоветуйте, что предпринять. Спасибо

    Ответить
  • Виталик

    Подскажите пожалуйста, как форму сделать на всю ширину и высоту экрана, для мобильных устройств? Ширину получается увеличить, высоту нет(

    Ответить
  • dimadv7

    Попробуйте так:

    display:flex;
    height: 100%;
    
    Ответить
  • Виталий

    Привет всем! Подскажите мне пожалуйста.
    Не меня форму в коде ничего не менял, но не отправляет.
    Поместил на платный хостинг и домен. __https://webhost1.ru
    Куда копать?

    Ответить
  • dimadv7

    Что пишет форма, отправлено или нет? Не __mail.ru ли используете?

    Ответить
  • Илья

    Приветствую!
    Как сделать так, чтоб при отправке формы, появлялся алерт с одним текстом, а в случае неотправки — с другим?

    Ответить
  • dimadv7

    воспользоваться формой без перезагрузки страницы. И в случае успешной отправки, вызвать соответствующий алерт. Примерно такой формой. А вызывать вот тут:

    success: function (data) {
      //вызов
    }
    
    Ответить
  • Дима

    Добрый день. А как сделать что бы в одну строку шли строки телефон и отправить. эмейл строчку удалить, это понятно. подправить надо в хтмл или цсс?

    Ответить
  • Дима

    У вас ошибка в строчке
    Должно быть так:
    [html]
    а написано:
    [html]

    Ответить
  • Дима

    так… заново

    а должно быть так

    иначе стили «Имя» стороной обойдут

    Ответить
  • Дима

    да блин!! короче
    в хтмл строчка написано id=»zayavkaName» а должно быть application name

    Ответить
  • dimadv7

    Да, да. Спасибо. понял вас и поправил. Тесть на внимательность))

    Ответить
  • Руслан

    Здравствуйте! Проблема заключается в том, что сообщение отправляется только со второго раза)) То есть без обновления страницы index.html

    Ответить
  • Sasha

    [css] ::-moz-placeholder  для чего это и надо ли его обозначать как то в html?

    Ответить
  • dimadv7

    Стили у placeholdera в браузере Mozilla (подсказка, что вводить в поле)

    Ответить
  • Елена

    Доброго времени суток!! Скопировала Ваш код, теперь при нажатии на кнопку, перекидывает на application.php и всё на этом(( что может быть не так?? Я php не знаю воооообще. Но без этой формы не обойтись.
    У меня немного больше полей для ввода, это может играть какую-то роль?

     <form id="cooperation-form" class="form ajax-form" action=" application.php" method="POST" name=" application ">
        	<button class=" button close-form"></button>
      <h2 class="no-line">Начать сотрудничество</h2>
                <div class="line-box">
                    <div class="field-col">
                        <div class="field field-cooperationform-name required">
    <label class="field-name" for="cooperationform-name">Имя</label>
    <input type="text" id="cooperationform-name" class="form-control" name="name" required valid>
    <div class="field-error"></div>
    </div>                </div>
                    <div class="field-col">
                        <div class="field field-cooperationform-company required">
    <label class="field-name" for="cooperationform-company">Компания</label>
    <input type="text" id="cooperationform-company" class="form-control" name="CooperationForm[company]" required valid>
    <div class="field-error"></div>
    </div>                </div>
                    <div class="field-col">
                        <div class="field field-cooperationform-phone required">
    <label class="field-name" for="cooperationform-phone">Телефон</label>
    <input type="text" id="cooperationform-phone" class="form-control" name="telephone" required valid>
    
    <div class="field-error"></div>
    </div>                </div>
                    <div class="field-col">
                        <div class="field field-cooperationform-email required">
    <label class="field-name" for="cooperationform-email">Email</label>
    <input type="text" id="cooperationform-email" class="form-control" name="email" required pattern="^(?:[-a-z\d\+\*\/\?!{}`~_%&'=^$#]+(?:\.[-a-z\d\+\*\/\?!{}`~_%&'=^$#]+)*)@(?:[-a-z\d_]+\.){1,60}[a-z]{2,6}$" valid>
    <div class="field-error"></div>
    </div>                </div>
                    <div class="special-field field-cooperationform-subject">
    <label class="field-name" for="cooperationform-subject">Тема</label>
    <input type="text" id="cooperationform-subject" class="form-control" name="CooperationForm[subject]">
    
    <div class="field-error"></div>
    </div>                <div class="field field-cooperationform-message required">
    <label class="field-name" for="cooperationform-message">Сообщение</label>
    <textarea id="cooperationform-message" class="form-control" name="CooperationForm[message]" rows="6" cols="10" required></textarea>
    
    <div class="field-error"></div>
    </div>            </div>
    
                <button type="submit" class="btn full-width-mob rght">Отправить</button>
                <div class="result-message"></div>
    
                </form>
    
    <?php 
     
    $sendto   = "shayanskaya.bel@gmail.com"; // почта, на которую будет приходить письмо
    $username = $_POST['name'];   // сохраняем в переменную данные полученные из поля c именем
    $usertel = $_POST['telephone']; // сохраняем в переменную данные полученные из поля c телефонным номером
    $usermail = $_POST['email']; // сохраняем в переменную данные полученные из поля c адресом электронной почты
     
    // Формирование заголовка письма
    $subject  = "Новое сообщение";
    $headers  = "From: " . strip_tags($usermail) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
     
    // Формирование тела письма
    $msg  = "<html><body style='font-family:Arial,sans-serif;'>";
    $msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Cообщение с сайта</h2>\r\n";
    $msg .= "<p><strong>От кого:</strong> ".$username."</p>\r\n";
    $msg .= "<p><strong>Почта:</strong> ".$usermail."</p>\r\n";
    $msg .= "<p><strong>Сайт:</strong> ".$usertel."</p>\r\n";
    $msg .= "</body></html>";
     
    // отправка сообщения
    if(@mail($sendto, $subject, $msg, $headers)) {
        echo "<center><img src='images/spasibo.png'></center>";
    } else {
        echo "<center><img src='images/ne-tpravleno.png'></center>";
    } 
    ?>
    

    Собственно у Вас php скопировала.. Помогите пожалуйста

    Ответить
  • dimadv7

    Елена, включите вывод ошибок. Скорее всего где-то они есть. В самом начале файла application.php, вот тут добавьте следующий код:

    <?php 
    
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    
    $sendto   = "shayanskaya.bel@gmail.com"; // почта, на которую будет приходить письмо
    

    Это должно вывести все ошибки и предупреждения, которые возникают в вашем случае. По тексту ошибок, загуглив их, можно определить в чем дело.

    Ответить
  • Елена

    dimadv7, попробовала включить вывод ошибок, ничего не показывает((

    Ответить
  • dimadv7

    А путь к файлу application.php правильно прописан?

    Ответить
  • Елена

    dimadv7, да, правильно.. На него осуществляется переход, появляется код файла application.php.
    Тут предположили, что не настроен apache ..Может такое быть?

    Ответить
  • dimadv7

    Да, если сам код отображается, то конечно может быть. К хостеру нужно обратиться и спросить.

    Ответить
  • Иван

    При отправке формы выходит текст с php в блокнтоте, картинка не выводится

    Ответить
  • dimadv7

    Проверьте работает ли вообще php на сервере.

    Ответить
  • Роман

    Большое спасибо за форму!!!! Отличная статья, все разложено по полочкам. Заработало с первого раза. Удачи в будущих проектах

    Ответить
  • dimadv7

    Спасибо за отзыв и теплые слова)

    Ответить
  • Денис

    Здравствуйте!
    Поставил Вашу форму, но там есть ограничение какое-то, на количество символов, что можно ввести в форму «Введите ваш E-mail». Максимально длинный вводится: moya.pocht@gmail.com — а это всего 20 символов. На сегодняшний день — это очень мало, да и нет смысла в таком ограничении, нужно раза в 3 больше иногда.
    Как-то можно устранить проблему?

    Ответить
  • Денис

    Вопрос снят.
    Поправил значение в строке: » »

    А вы обещали еще в 2015 это поправить :-)

    Ответить
  • Владимир

    Здравствуйте! Огромная благодарность за форму обратной связи. Все работает прекрасно но почему то на почту приходят вместо русских букв значки вопросительный знак в ромба. Проверено на укр нет и джмаил. В кодировке ставлю utf-8 и без результата. Строка $headers .= «Content-Type: text/html;charset=utf-8 \r\n»; присутствует.
    Благодарю за ответ и помощь!

    Ответить
  • dimadv7

    Владимир, здравствуйте, сохраните и все файлы непосредственно в utf-8 и должно быть все ок.

    Ответить
  • Владимир

    dimadv7, Спасибо, помогло!

    Ответить
  • dimadv7

    Владимир, отлично)

    Ответить
  • Александр

    Подскажите плиз как настроить отправку сообщений с формы, если сайт расположен на локальном сервере. Использую Open Server. Спасибо.

    Ответить
  • dimadv7

    Сообщения складываются в одну из папок сервера в виде текстового файла. Не помню точно какую, в документации точно должно быть об этом.

    Ответить
  • Адександр

    dimadv7, Если Вы отвечали на мой вопрос, то суть вопроса была не в этом. Папку я и так знаю. Мне нужно чтобы письма на почту приходили.

    Ответить
  • dimadv7

    Александр, ясно. Тогда я не в курсе, но там же есть возможность настроить smtp отправку, вы пробовали?

    Ответить
  • Александр

    dimadv7, Пробовал в настройках Open Server настроить отправку через SMTP. Не помогло. Письма с формы не приходят.

    Ответить
  • dimadv7

    Тогда я не в курсе, лучше у них на сайте и спросить. Если разберетесь в чем была проблема, напишите как решили.

    Ответить
  • Игнат

    Спасибо за урок. Но на почту ничего не приходит.. Нашел сервис (formfor.site) через который можно получить ссылку и просто добавить в html. При это улетает и в мессенджеры, очень удобно.

    Ответить
  • dimadv7

    Игнат, да. А те, кто не хочет платить за сервисы, делают сами, и все прекрасно приходит. А связь с мессенджером, и даже, с CRM, например, с битрикс24, все это есть на блоге. Только платить не нужно. Вообще, похоже просто на спамный комментарий, чтобы пропиарить сервис…

    Ответить
  • Юрий

    Отличная форма получилась, хоть и простая но по внешнему виду красивая. Решил попробовать поизменять ее и неплохо получается :) Но все-таки, знаний моих хватает только цвета поменять да поля добавить))) До этого лишь на uCalc через визуалку делал, в кнопочки и поля тыкал.

    Ответить

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

Подписывайтесь на обновления, чтобы ничего не пропустить.