Форма обратной связи код. Создаем форму обратной связи на PHP

Инструкция по созданию формы обратной связи на HTML и CSS, а также сборник готовых форм и руководство по их подключению и настройке.

Навигация

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

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

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

Рисунок 1. Что такое форма обратной связи и почему она так необходима?

Что такое форма обратной связи и почему она так необходима?
  • Одной из наиболее важных функций любого приличного сайта является форма обратной связи. Она служит для взаимодействия между посетителем и администрацией ресурса. Так с её помощью можно написать обращение в техническую поддержку или отправить необходимые администрации данные. Например, платёжные реквизиты в интернет-магазинах или наименование заказываемого товара. Иметь такую форму на своём портале настоятельно рекомендуется, так как постоянный контакт со своими посетителями и клиентами – залог его успешного развития.

Форма обратной связи представляет собой отдельную страницу или блок (отдел), состоящий из нескольких полей ввода текста и кнопки «Отправить». Как правило, стандартная форма имеет следующие поля:

Как создать простейшую форму обратной связи для сайта на HTML и PHP?

Чтобы не превратить статью в полноценный занудный учебник, мы будем исходить из того, что Вы уже знакомы с азами языка разметки HTML и имеете общее представление о том, как он работает. Если у Вас нет таких навыков то, прежде чем браться за создание формы, настоятельно рекомендуется немного подтянуть свои знания на бесплатном ресурсе htmlbook.ru . Иначе Вы можете не только забросить эту затею, но и испортить код уже имеющегося у Вас сайта.

Для воссоздания рабочей формы обратной связи Вам потребуется три важных элемента, один из которых отвечает за разметку и структуру формы (HTML ), второй за её внешнее оформление (CSS ), а третий за обработку и передачу данных (PHP ). Начнём по порядку:

Написание HTML-кода для формы обратной связи
  • Шаг 1 . Для того, чтобы обозначить форму в HTML используется тэг . Внутри него будут задаваться размеры, стили и другие жизненно важные свойства формы. При записи самого тэга ему необходимо задать для обозначения класс, который в дальнейшем поможет установить для формы CSS стили.

  • Шаг 2 . Далее для создания первого поля нашей формы внутри тэга необходимо написать блочный тэг

    , которой отвечает за создание новой строки.

  • Шаг 3 . Внутри тэга

    с новой строки вписываем следующий тэг: Имя . Он отвечает за наименования будущего поля формы.

  • Шаг 4 . С новой строки всё в том же тэге

    прописываем тэг создания поля со следующими значениями: . Параметр «type=»text «» задаёт тип текстового поля, а параметр «placeholder=» Введите ваше имя«» задаёт начальный текст в этом самом текстовом поле. Параметр «required » даёт понять посетителю сайта, что данное поле обязательно для заполнения. В результате у Вас должна получиться форма с одним полем, как показано на скриншоте ниже.

  • Шаг 5 . По выше приведённому примеру добавьте остальные нужные Вам поля, каждый раз начиная с тега

    . Для установки поля с текстовым сообщением используйте тэг . Параметры «cols » и «rows » отвечают за ширину и высоту текстового поля. Можете задать параметры, какие Вам больше нравятся. У Вас должно получиться примерно так, как показано на скриншоте ниже.

  • Шаг 6 . Чтобы защитить себя от ботов, которых сегодня в интернете довольно много, создайте ещё одну строку с помощью тэга . За счёт параметра «style=»display:none» » данное поле не будет видно простым смертным, однако ботами будет заполняться автоматически. Таким образом, Вы всегда сможете отличить живого человека от программы.

  • Шаг 7 . Завершающим этапом разметки станет создание кнопки отправки. Для этого используется тэг . Создайте новый блок

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

Работа с каскадными таблицами стилей (CSS)
  • Как Вы уже успели заметить в процессе разметки, у нас получилось что-то очень кривое, невзрачное и отвратительное. Для того, чтобы придать форме обратной связи более или менее опрятный вид, одного языка HTML будет недостаточно. Для этой цели придётся прибегнуть к использованию стилей CSS .
  • В том случае, если Вы воспользовались советом подтянуть свои базовые навыки на ресурсе htmlbook.ru , то задать определённые параметры оформления для всех частей формы с помощью CSS Вам не составит никакого труда. Если же у Вас нет желания или времени со всем этим возиться, то мы предоставим Вам уже готовый код и расскажем, как его подключить.

Подключить стили CSS к HTML можно двумя способами:

  • Скопируйте код из нашего файла каскадных таблиц в самый низ файла style.css , который присутствует на хостинге сайта
  • Переместите наш файл стилей к себе на хостинг и подключите его

Файл style.css подключается внутри тэга с помощью скрипта . В том случае, если файл со стилями лежит не в той же самой папке, что и основной файл html, то к нему необходимо указать путь. В нашем файле со стилями каждый элемент имеет обозначение. При желании Вы сможете поменять параметры под себя, руководствуясь только базовыми навыками программирования.

Подключение файла PHP и его настройка

Как уже было сказано ранее, скрипт PHP отвечает за исполнение формы обратной связи. Однако для того, чтобы более или менее понять принцип работы языка PHP , необходимо прочитать большой объём литературы и провести приличное количество часов за практикой. Поэтому, как и в случае с CSS , мы предоставим Вам уже готовый файл с php-скриптом, который останется только прикрепить к документу с формой.

В отличие от файла style.css , файл с php-скриптом прикрепляется в свойствах самой формы. Начнём по порядку:

  • Шаг 1 . Откройте ранее написанный код и найдите строку с открытым тегом формы. Добавьте к нему свойства «action=»contact-form.php» » и «method=»post» ». Смотрите пример на скриншоте.

  • Шаг 2 . Скачайте наш php-файл и поместите его на хостинг в ту же папку, где находится html-документ с формой. Таким образом, php и html файлы будут взаимодействовать между собой.

  • Шаг 3 . Далее необходимо настроить скрипт под себя. Откройте файл и задайте переменные, присваивая им те же имена, что и в скрипте html. Если Вы добавляли в форму дополнительные поля, допишите их в скрипте php точно так, как показано на скриншоте.

  • Шаг 4 . Далее необходимо добавить ещё две переменных с адресом вашей электронной почты и темой письма, которая будет отображаться на вашем ящике. В строке с переменной «$address » укажите E-mail, а в строке «$sub » тему письма как показано на скриншоте.
  • Шаг 5 . В строке с переменной «$mes » настраивается формат письма, которое Вы получите на почту. Вы можете переписать его без изменений или отредактировать по собственному вкусу.

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

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

Подборка красивых дизайнерских форм обратной связи на HTML и CSS для разных целей
  • Опираясь на выше приведённые инструкции, Вы без труда сможете «нарисовать» форму обратной связи под свой собственный вкус. Однако, если у Вас нет времени или желания самостоятельно создавать форму с нуля, Вы можете найти в интернете уже готовые дизайнерские формы и обладая базовыми навыками HTML отредактировать их под себя.

  • Немного поискав, мы нашли для Вас подборку из 35 красивых всплывающих дизайнерских форм обратной связи, которые написаны на HTML и CSS . Данные формы подходят для таких движков, как WordPress и Joomla , имеют простую и лёгкую настройку из панели управления, а также прекрасно подходят для сайтов без движка.
ВИДЕО: Всплывающая форма обратной связи для сайта WordPress

Вы когда-нибудь хотели установить на свой сайт форму обратной связи? Наверняка Вы встречались с подобными скриптами. Как ни странно, готовые скрипты отправки формы на email пользуются большой популярностью (Вы можете убедиться в этом в любом архиве скриптов), причем их существует великое множество. Есть простые, в которых ничего не меняется, а есть сложные и большие системы, которые функционируют на mysql, позволяют динамически изменять любые поля, содержат кучу настроек… Но так ли они нужны? На мой взгляд необходимость в подобных системах очень сомнительна.

Тестировать отправку почты на домашнем компьютере не получиться. Для этого Вам необходим хостинг с поддержкой php и функциями отправки почты. Я рекомендую Вам хостинг-провайдера runweb.ru. Этот провайдер предлагает отличные тарифы, высочайшую скорость доступа и отличное обслуживание.

Методы отправки почты

Отправлять почту с сервера с помощью php можно двумя основными способами.
Я хочу рассмотреть оба этих способа по порядку.

Первый и самый простой — это использование php функции mail(). Функция очень простая и понятная, хотя отправка почты с использованием mail() имеет и ряд недостатков. Самый главный — письмо отправляется не напрямую, а через php. Одновременно программа php подставляет в письмо некоторые свои поля. Например, у Вас не получится корректно указать отправителя. В поле "from" (то есть от кого пришло письмо) в большинстве случаев будет стоять имя сервера. Все дело в том, что php подставляет свои заголовки в служебную строку письмо "from".

Тем не менее отправка почты с помощью функции mail() остается самым простым
способом отправить письмо с сервера. Давайте рассмотрим этот способ подробнее.

Функция mail() имеет следующий синтаксис:

mail($to, $subject, $body, $headers);

$to - это адрес получателя. Например, "[email protected]". $subject - тема письма. Например, "Вам пришло письмо". $body - текст сообщения. $headers - любые заголовки письма. Например, адрес отправителя будет выглядеть так: "from: [email protected]".

Вот полный пример отправки почты с помощью mail():

mail("[email protected]", "Тема письма", "Здравствуйте!nВам пришло письмо.", "from: site_name");

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

Теперь давайте посмотрим, как можно отправить письмо с помощью sendmail.

sendmail — это стандартная программа операционной системы unix, которая отправляет почту.
php может запускать unix-программы путем использования средства pipes (дословно "трубопроводы"). Это средство unix позволяет направлять данные из одной программы в другую, наподобие того, как мы пишем в файл. Только файлом в этом случае выступает программа (в частности, sendmail), которая и получает данные.

sendmail программа имеет множество параметров, мы будем использовать некоторые из них. Чтобы использовать sendmail, нужно открыть к нему поток (pipe). В php это делается использованием команды popen(), которая по синтаксису идентична команде fopen(). Путем использования popen() мы открывает поток к sendmail
для записи в него (помните, параметр режима "w"?), после чего можно отправлять в него данные обычной командой fputs(). Посмотрим, как полностью выглядит процедура отправки письма через sendmail:

В этой программе первое, что мы делаем — описываем rfc заголовки. rfc — это службные поля, которые содержат всю информацию о письме. Увидеть пример rfc Вы можете, например, в программе the bat!, щелкнув правой кнопкой мыши на тексте письмо и выбрав "rfc-822 headers" (название пункта может отличаться). Чтобы убрать их, повторите действия. В заголовке мы описываем поля "content-type", которые указывают что письмо текстовое и в кодировке windows-1251 (стандартная кодировка windows). В качестве кодировки также может быть использовано "koi8-r", это стандартная кодировка unix. В этой статье мы не будем рассматривать возможные rfc заголовки подробно. Мы сделаем это чуть позже,
когда будем ближе работать с почтой. Итак, после того, как мы описали служебные переменные и заголовки письма, мы открываем sendmail. Обратите внимание на путь к программе "/usr/sbin/sendmail". На разных серверах он может отличаться!
Если эта строка не работает, спросите у Вашего провайдера, где расположен sendmail. Далее указываются параметры: "-i -f$from — $recipients". Это стандартные параметры для отправки письма и в них подставляется два поля: $from — от кого, $recipients — адреса получателей. В нашем случае переменная $recipients содержит всего один адрес. На самом деле можно использовать несколько адресов, указывая их через пробел:

$recipients = "[email protected] [email protected] [email protected]";

Далее мы записываем в поток сначала заголовки письма (переменная $text_headers), потом отделяем их символом переноса строки и записываем текст сообщения. Последний шаг — закрытие потока и проверка на ошибку. При правильном выполеннии в переменную $result помещается ноль, а если возникла ошибка, в нее записывается номер ошибки.

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

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

Наша форма обратной связи будет представлять собой один скрипт. Этот скрипт будет выводить форму и отправлять письмо.

contact.php:

Обратная связь

Прямая связь
Ваше имя: *
Ваш email: *
Ваш сайт:
Ваше сообщение: *

Поля, отмеченные звездочкой (*) должны быть заполнены.

Теперь давате рассмотрим, как работает эта программа. Выполнение начинается со строки "if (!$a) show_form();", так как до этого указана функция, которая, естественно, не выполняется. В этой строке мы проверяем, была ли попытка заполнения формы (из формы, как Вы видите, передается переменная $a, которая и проверяется в этой строке). Если такой попытки не было, вызывается функция show_form(), которая выводит форму.

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

Итак, в этом посте вы научитесь быстро создавать простую форму обратной связи без знания HTML, CSS, PHP и химии. Эта форма готова к использованию без всяких лишних заморочек.

Ну, что же, приступим к созданию простой HTML формы обратной связи.

Способ-1

Шаг №1
Чтобы создать HTML форму обратной связи для сайта, вам следует создать файл с расширением ".PHP ". Дайте название файлу "mail.php " и вставьте в него вот такой скрипт:

Итак, строка №1 - здесь указываете адрес главной страницы. После отправки сообщения посетителя автоматически перенаправит по адресу, который вы укажите. Также укажите время, через которое посетитель перенаправится на главную страницу (у меня 6 секунд).

строка №2 - кодировка отображения UTF-8

строка №11 - это самая важная строка! В этой строке вам следует вписать свой электронный почтовый ящик, на который вы хотите получать сообщения с сайта.

Шаг №2
Вставьте в новом файле готовый код формы обратной связи между тегами и назовите файл, например "kontakt.html ".

Форма обратной связи..php" method="post">

Ваше имя*

Электронная почта*

Тема сообщения

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

в строке №2 укажите путь к файлу "mail.php ", у меня в примере он https://сайт/mail.php

Вот и все. Если остановиться на этом этапе, то ваша форма обратной связи будет работать на сайте, но вид ее будет не очень привлекательный. Это исправимо - нужно к форме прописать стили в CSS файле.

Итак, вставьте в файл "style.css " вот такой код:

#submit { font-family: sans-serif; color: #ffffff; font-size: 18px; padding: 0px; text-decoration: none; box-shadow: 0px 1px 3px #666666; -webkit-box-shadow: 0px 1px 3px #666666; -moz-box-shadow: 0px 1px 3px #666666; text-shadow: 1px 1px 3px #666666; background: -webkit-gradient(linear, 0 0, 0 100%, from(#ce1515), to(#8b0d0d)); background: -moz-linear-gradient(top, #ce1515, #8b0d0d); } #submit:hover { background: -webkit-gradient(linear, 0 0, 0 100%, from(#8b0d0d), to(#ce1515)); background: -moz-linear-gradient(top, #8b0d0d, #ce1515) } #respond input, textarea { -webkit-transition: all 0.30s ease-in-out; -moz-transition: all 0.30s ease-in-out; -ms-transition: all 0.30s ease-in-out; -o-transition: all 0.30s ease-in-out; outline: none; padding: 3px 0px 3px 3px; margin: 5px 1px 3px 0px; border: 1px solid #DDDDDD; } #respond input:focus, textarea:focus { box-shadow: 0 0 5px rgba(81, 203, 238, 1); margin: 5px 1px 3px 0px; border: 1px solid rgba(81, 203, 238, 1); }

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

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

тогда откройте файл "mail.php " и "kontakt.html " через бесплатный и в меню перейдите в
"Кодировки" => "Преобразовать в UTF-8 без BOM"
.

Способ-2

Можно сделать только один файл обратной связи с расширением "php ", например, с названием "kontakt.php ", и в этот файл вписать все коды, скрипты и стили, о которых я расписывал чуть выше. Но все таки кое-какие изменения в коде мы сделаем. Это будет выглядеть вот так:

Оформление ссылок #submit { font-family: sans-serif; color: #ffffff; font-size: 18px; padding: 0px; text-decoration: none; box-shadow: 0px 1px 3px #666666; -webkit-box-shadow: 0px 1px 3px #666666; -moz-box-shadow: 0px 1px 3px #666666; text-shadow: 1px 1px 3px #666666; background: -webkit-gradient(linear, 0 0, 0 100%, from(#ce1515), to(#8b0d0d)); background: -moz-linear-gradient(top, #ce1515, #8b0d0d); } #submit:hover { background: -webkit-gradient(linear, 0 0, 0 100%, from(#8b0d0d), to(#ce1515)); background: -moz-linear-gradient(top, #8b0d0d, #ce1515) } #respond input, textarea { -webkit-transition: all 0.30s ease-in-out; -moz-transition: all 0.30s ease-in-out; -ms-transition: all 0.30s ease-in-out; -o-transition: all 0.30s ease-in-out; outline: none; padding: 3px 0px 3px 3px; margin: 5px 1px 3px 0px; border: 1px solid #DDDDDD; } #respond input:focus, textarea:focus { box-shadow: 0 0 5px rgba(81, 203, 238, 1); margin: 5px 1px 3px 0px; border: 1px solid rgba(81, 203, 238, 1); } Форма обратной связи.

Ваше имя*

Электронная почта*

Тема сообщения

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

Внимание: еще раз повторюсь: сохранить этот файл нужно обязательно в расширении "php ", иначе работать не будет.

Обратите внимание на строчку в коде №70 . Как видите, я оставил "action " пустым, так как сам обработчик формы обратной связи находится на одном файле.

Вот и все!!! Надеюсь простая HTML форма обратной связи для сайта действительно была для вас простой.

Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓

Получай обновления блога!!! Подпишись:

Последние новости категории: Популярные статьи: 274 Ответов на комментарий - Простая HTML форма обратной связи для сайта

Куда потом загружать mail.php и kontakt.html и как вывести форму на отдельной странице?

mail.php и kontakt.html загружаете на хостинг, где лежит ваш сайт. Если быть более точным – в корень сайта.
kontakt.html – это уже отдельная страничка для формы (пример №1). Я может вас не правильно понял?

Николай отвечает:
10.06.2016 в 13:39

Степан спасибо за рабочую форму обратной связи. У меня стояла раньше, но возврат на сайт не работал. А ваша работает! У меня старая перестала работать поставил вашу. Оказалось с 18 мая маил ввёл жёсткие меры по борьбе со спамом и перестали письма с сайта приходить. Пришлось переходить на яндекспочту там всё в порядке пока.
Меня одно только настораживает что в вашей форме нет капчи. Может подскажите как добавить в эту же форму?

Здравствуйте, Николай! Вы мне дали новую интересную тему. Я думаю на этой неделя я выложу парочку статьей по теме “простейшая для формы обратной связи”.
Сможете подождать?

Дмитрий отвечает:
23.06.2016 в 05:15

Степан спасибо за прекрасный скрипт! Все супер! Но вот есть одна проблема, текст приходит в виде черных квадратиков (ютф проверял) что может быть? заранее спасибо!

Семен отвечает:
11.04.2016 в 22:06

Стоит сказать что есть еще один способ разместить форму обратной связи на своем сайте – это воспользоваться онлайн сервисом, который предоставляет визуальный конструктор веб-форм. Мне например нравится русскоязычный сервис – formdesigner.ru. Как по мне это отличный вариант для новичков, которым не хватает навыков программирования.

Привет! Спасибо за интересную статью! Напишите пожалуйста, что менять в style.css, чтобы увеличить размер полей ввода данных.

Понял. Спасибо!

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

Спасибо за ответ. Я разобрался­ с первым способом все работает. Моя
ошибка была. А как сделать, чтобы сообщение об отправке было
всплывающи­м, а не в новом окне. Спасибо если ответите.

Здравствуйте Степан,у меня не отправляются сообщения пишут Ошибка, сообщение не отправлено я все сделал как написано и почту поменял и это и в первом и втором случае

Здравствуйте Степан,файлы размещены на хостинге
расширение файлов в html и php и не работает

$mes = "Имя: $name \nE-mail: $email \nТема: $sub \nТекст: $body";

Что здесь не так подскажите пожалуйста в kontakt.html поменял названия форм вместо тема сообщения стало номер телефона а вместо текст сообщения адрес отправки

выходит вот такая ошибка Parse error: syntax error, unexpected T_STRING in /home/rxlwxpct/public_html/mail.php on line 12

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

Здравствуйте, Виталий! Возможно проблема в кодировке файла “mail.php”. Кодировка должна быть UTF-8, для этого откройте текстовый редактор Notepad++. В текстовом редакторе перейдите в меню сверху по вкладке «Кодировки» => «Преобразовать в UTF-8 (без BOM)». О кодировке почитайте .

Виталий отвечает:
26.06.2014 в 09:05

Я все сделал согласно Ваших инструкций, но ситуация не изменилась (вместо русских букв выводятся кракозябры)…
В общих настройках сайта у меня указано: используемая кодировка на сайте: windows-1251. Это как то влияет на результат?

Я использую первый способ. Загрузил mail.php и создал статическую страницу с файлом kontakt.html. Все работает, только есть указанная мной проблема…

Степан, я открывал в редакторе notepad++ файл mail.php и перешел по вкладке «Преобразовать в UTF-8 (без BOM)». Но это не помогло… Также я сменил почту с mail.ru на yandex.ru. Тот же результат: вместо русских букв печатаются кракозябры…

Виталий, что-то Вы делаете не так! У меня все работает!


Я вам на почту скинул ссылку. Попробуйте, заполните и отправьте форму.

Виталий отвечает:
30.06.2014 в 22:21

Степан, Ваша форма работает прекрасно. Ну а я что то сделал не правильно… Подскажите: что?

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

Степан, подскажите, пожалуйста, пошагово что я должен сделать с файлом (1.html) чтобы создать статическую страницу?
Я просто копирую весь код и переношу его в html на статическую страницу, после чего сохраняю. Может я что то не так делаю?
Также я не разобрался в какое место “style.css” нужно вставить соотв. код…

здравствуйте!скажите пожалуйста а если сайт ещё пока не на хостинге,а он у меня еще в процессе создания на жестком диске…форму установил но сообщение не приходит на e-mail

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

Здравствуйте, спасибо за форму, очень хорошо подошла для сайта, но есть проблема, после нажатия кнопки отправить не сообщение отправляется, а этот файл mail.php скачивается мне на компьютер, почему так? Спасибо=)

все я понял, мой хост не поддерживает php…спасибо=)

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

Доброе время суток. Отличная статья! Все очень понятно! Великолепно, я проискал 4 дня как сделать форму в очень подробном формате и легкую. Ваш сайт просто изюминка в интернете. У меня вопрос к вам Степан. Дело в том что я не хочу чтобы после отправки сообщения, происходил переход на стартовую страницу. Можно как то сделать чтобы просто сообщения вылезло – Ваше сообщение отправлено. И все?

Степан спасибо, И последний вопрос. Вот я хочу чтобы только можно было отправлять сообщение без имен и email. У меня получится такой код

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

И у меня когда отправляешь сообщение выходит что

“Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!”

Странное, что не так? А когда с именем и email все работает.

И еще где можно ширину изменить? в css? подскажите пожалуйста какая строчка

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

Форма заказа

Заполните форму обратной связи, и мы Вам перезвоним!

ВЫВОДИТ ВОТ ЭТО ПОСЛЕ ОТПРАВКИ. ПОЧЕМУ?
код формы вставил не в отдельный файл а сразу в index.html где находится всё меню и контент. Вставил в раздел контакты. Сайт самописный

C Новым Годом, Степан, и большое спасибо! Я несколько дней разными способами пыталась установить форму обратной связи, сегодня она, наконец, заработала! Только почему при незаполненном поле “тема” письмо не отправляется, а выходит надпись, что заполнить надо все поля. Ведь “тема” – необязательное поле? И при необходимости это поле ведь можно удалить?

Степан, благодарю за форму!
Планирую делать по 2 способу. Никак не могу понять что вставить в файл страницы сайта. Файл.php размещу в корневой каталог на хостинге, но ведь нужно что-то писать на страничке, где расположена форма? В самом html файле вставить какой-то код, нет?

Спасибо, Степан
К сожалению, так у меня ничего и не получилось
Я явно что-то не то вставляю в тело сайта((

Степан, я создала новый файл php. Куда скопировала то, что написано в способе 2, заменила нужные строчки.
Залила на хостинг.
Форма должна отразиться на странице index. моего сайта Этот файл у меня html. В этом файле должно ведь что-то прописываться, чтобы обращаться к файлу php?

Я все это очень внимательно прочитала и конечно же поняла совсем иначе))))
Спасибо, попробую напишу))))

К сожалению, все равно кривулька какая-то получается((

Проверил Ваш сайт, но не смог посмотреть на кривульку-форму .
Вы поставили другую форму? Кстати, на Вашей форме не работает капча.

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

Проблема решена, она была в тестовом хостинге.

Спасибо. Получилось и чисто, и все работает.

А у меня не работает ни первый вариант ни второй. файлы PHP
c хостинга [адрес удален] сказали что проблема не у них
адрес почты поставил свой

Хостинг признался после долгих пыток что их косяк
Написали что–Наблюдалась проблема в конфигурации Вашего аккаунта.
Теперь работает.
Проблема теперь в другом
На сайте с расширением.ru работает, а
на сайте с расширением.рф не хочет.
Хостинг клянётся и божиться, что проблема с кодом

После отправки на сайте появляется ошибка или просто письмо на почту не приходит?

короче проблема только в хостинге.
Написали ответ—- Мы восстановили возможность отправки писем с сайтов Вашей учетной записи.
Сразу вопрос, после чего восстановили…… восстановители хреновы

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

Вопросик! можно как то сделать чтобы при заполнении формы где пишется E-mail если напишешь что то от балды к примеру цифры или что то либо еще … Выдавало ошибку “Введите правильно свой E-mail” типо таго

Здравствуйте Степан.Во первых спасибо за ваш блог.Для меня это как учебник, постоянно бываю у вас в сайте. Много полезного. У меня вот такая проблема. Я взял от вас код и создал простую форму обратной связи. Все работает и письмо доходит. Вот только беда. Письмо доходить без текста. Пустое письмо.По какой причине, не могу понять. Пожалуйста, помогите мне в этом разобраться.Заранее спасибо. С ув.Акиф

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

Здравствуйте, Андрей! Вы проверяли письма в СПАСМ-е?

Андрей отвечает:
13.07.2015 в 13:06

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

Да, спасибо, я уже на 100% уверен, что проблема в хостинге. Переезжаю!

Сделал по способу номер 1 , но к сожалению сообщения не приходят,в чем беда?

Никита отвечает:
14.07.2015 в 22:05

вот по второму способу сделал,работает,но только одна почта,пробую другие – ничего не приходит.

Укажите, какие почтовые сайты не принимает и покажите, как вы заполнили строку №56

$address = "[email protected]";

Перенаправление происходит после отправки сообщения?

Никита отвечает:
15.07.2015 в 00:29

да перенаправление на сайт происходит,

$address = "[email protected]";

свою почту ставлю

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

Как дабавить либо вообще переобразовать код на вид:
Имя фамилия отчество..и тд.. то есть нужны доп поля

Добрый вечер,Степан! Ваш код действительно рабочий, огромное вам спасибо, за ваш труд! Подскажите пожалуйста:
1) какой командой в файле php можно задать обязательное или не обязательное поле? (сейчас все поля являются обязательными)
2) Каким образом можно добавить новое поле именно в php файле? (в html все понятно как сделать).

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

В чем может быть загвоздка?
А вообще спасибо, работает же. Впринципе можно с яндекса перенаправление на mail.ru сделать…

Здравствуйте, Борис! Вы на почте “mail.ru” в СПАМ смотрели? Может письмо туда попало

Борис отвечает:
30.07.2015 в 10:33

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

Не возможно, а точно. Что за хостинг? Я прочитаю про них.

Борис отвечает:
03.08.2015 в 10:25

Skyhost.ru
Последний год-два стали долго думать, техподдержка долго и часто не по теме. Но цена-качество)

Здравствуйте. у меня не получается форма обратной связи(((Почему – не знаю

Вот что мне ответила тех. поддержка
Проблема с отправкой писем возникает из-за того, что сервис mail.ru заблокировал получение почты с сервера, где расположен Ваш аккаунт. Мы занимаемся решением данной проблемы, однако ответ со стороны mail.ru, к сожалению, еще не поступил. В скором времени отправка почты возобновится. Приносим извинения за временные неудобства.

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

Добрый день!
Поднял локальный сайт на openserver.
Взял Вашу форму, Ваш скрипт, немного подправил. Сообщение отправляю на yandex почту.
То, что передается через input’ы превращается в вопросы. Стационарный текст отображается корректно.
Прошу помощи.

Ваше имя*


Дата консультации*


Время консультации*


Здравствуйте, Максим! Я думаю проблема в кодировке. Файл с обработчиком формы должен быть сохранен в UTF-8 без бом. Смотрите

Максим отвечает:
04.09.2015 в 18:20

Степан, спасибо. Но к сожалению, не помогло. Точно так же текст отображается вопросами.

Степан,
После Вашего совета проблема не устранилась.
Прошу рекомендации, как все-таки поступить?
Может ли быть проблема в Яндекс.Почте?

Проблема в кодировке 105%. Может быть такое, что сервер отдает только win-1251. Определите какую кодировку выдает сервак и преобразуйте из той, что выдается в ту, которую нужно на странице. Вот и все!

Максим отвечает:
21.09.2015 в 11:52

Степан, добрый день!

Получил ответ от разработчиков Яндекс.Почты.

“Проверили письмо - в нём не найдено указания на какую-оибо кодировку. Проверьте, пожалуйста, настройки Вашей формы. Кажется, она не формирует заголовок “Content type” и потому не передаёт информацию о кодировке.”

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

Максим отвечает:
23.09.2015 в 15:37

После очередной итерации всё заработало. Видимо, были проблемы с руками и кодировкой. Спасибо, Степан, за терпение и за столь удобный функционал!

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

Здравствуйте, Вячеслав! А Вы пробовали искать ответ на сайтах? В сети валом решений, как сделать отправку письма с вложенным файлом.
Если хотите, могу лично для Вас разработать php код, с помощью которого вы сможете получать письма с вложенным файлом на почту, но это будет стоить Вам денег.

Вячеслав отвечает:
16.09.2015 в 20:50

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

Степан, спасибо за простую и рабочую форму!
С Денвером дольше пришлось разбираться чем интегрировать форму в страничку, навести косметику и запустить.
Совсем не зная php – вставил и заработало!

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

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

Я вставил форму обратной связи по вашим описаниям, но позже отказался от нее. Но вы мне испортили этим страницу сайта. Постоянно открывается ваша страница, через 6 сек, и ни чего не могу поделать, даже когда полностью удалил вашу эту форму обр. связи. Это ВИРУС!?

Ищу как мне сделать скрипт на товарный одностраничник с апселлом. У вас самое

толковое объяснение, как отправлять сообщения на почту. Но мне нужно:
1. Отправляем на [почта скрыта]
2. Считываем данные с полей формы Имя и Телефон
3. При нажатии кнопки “Отправить” на форме, перебрасывает на дополнительную

страничка upsell.php. НО ПРИ ЭТОМ ДАННЫЕ С ПОЛЕЙ ФОРМЫ НЕ ОТПРАВЛЯЮТСЯ НА Е-МЭЙЛ,

А СОХРАНЯЮТСЯ-ОЖИДАЮТ КОМАНДЫ ОТПРАВКИ!!!
4. На странице с апселлом есть 2 кнопки (нет никакой формы):
а) если покупатель жмёт кнопку “Добавить в посылку”, то вступает в дело функция

отправки сообщения mail с собранными данными с полей формы и добавляется название

е-мэйл
Имя:
Телефон:
Название дополнительного товара.
б) если покупатель жмёт кнопку “Отказаться”, то вступает в дело функция отправки

сообщения mail с собранными данными с полей формы, но уже без добавления

дополнительного товара. Это всё выражается в конечном итоге в виде сообщения на

е-мэйл
Имя:
Телефон:

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

 Order form.

Name*

E-mail*

Phone*

Message:

Здравствуйте, Денис! Все верно у Вас. Должно работать, я даже перепроверил на локальном сервере. Посмотрите, не приходят ли письма в СПАМ?!

Здравствуйте!
Как к вашей форме добавить скачивание файла, который лежит в корне сайта?

Доброго времени суток Степан, на свой сайт установил вашу форму обратной связи (ФОРМУ 2) после отправки пишет Сообщение отправлено успешно. Но на почту ничего не приходит. Подскажите как исправить, заранее благодарен.

Здравствуйте на примере вашей формы делаю свою. Подскажите пожалуйста вот есть обязательные поля для заполнения а есть не обязательные как сделать не обязательные? у вас если не заполнить пишет “Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!”;
У меня в форме допустим можно прикрепить картинку но это не обязательно и вообще картинка придет на почту или нет???

Я бы с удовольствием но проверка быть должна и сообщение типа “сообщение отправлено через 6 сек вы будете перенаправлены” тоже должно быть в чем дело не знаю посмотрите плиз код?

И еще плюс ко всему вылетает ошибка 1,3,5,6 неопределенная форма???

И постоянно пишет “Вы заполнили не все поля, вернитесь назад и заполните необходимые поля! ” хотя я заполняю все до единого???

Степан я ведь жду)

Все нормуль у меня получилось. Нумерцию эту я тут написал ее в моем php файле нету. А про 11 строку я сразу понял что она для обязательных форм заполнения. А все дело оказалось

{$name = $_POST["adres"] {$email = $_POST["name"]

переменные укзаны не верно.)
А вместо того чтобы сидеть я читаю большую книгу Дмитрия Котеров, Алексей Костарев PHP 5.
Спасибо Вам за советы

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

Доброго времени суток еще раз Степан подскажите почему когда создаю файл с расширением php в корневой папке сайта при запросе: адрес сайта/файл php выдает
Not Found

The requested URL /cgi-bin/php4.fcgi/kontakt.php was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
файл же создан и находится в корневой папке. Как исправить? Заранее благодарен.

Здравствуйте!
При отправке сообщения выдает ошибку- “500: Не удалось выполнить запрос из-за внутренней ошибки на сервере.”
В чем может быть проблема?

Сделала по второму варианту, работает!Спасибо!)

Здравствуйте.Степан!
3 вечера прогоняю Ваши формы обратной связи.не идут. 1вариант нулевой.2-сообщение уходит но не доходит до ящика.Сайт на бесплатном хосте с поддержкой PHP.Можете ли мне помочь разобраться.готовых решений не ищу.С уважением. жду ответа

Здравствуйте, Вадим!
Вы заменили электронную почту?

$address = "[email protected]";

Vadim отвечает:
17.07.2016 в 02:17

Здравствуйте.Степан ещё раз. да. я всё перепроверил. работают оба варианта.но до ящика не доходит.скорее всего-проблема в бесплатном хостинге.Для уточнения могу прислать коды и данные сайта.т.к этот сайт своего рода учебный полигон а я человек с небольшим опытом в этом делe(пока).Ваше решение.стоит ли возиться?

Письмо должно прийти на ваш компьютер (Диск локального сервера/tmp/!sendmail)

Vadim отвечает:
23.07.2016 в 02:39

Отличное решение вопроса-а я в попыхах сразу не учёл этот вариант.как только “оформлю” это хозяйство-обязательно отпишу. спасибо за отзывчивость

Пишет Ошибка, сообщение не отправлено!

Лилия, проверил я еще раз свою форму, все работает. Смотрите в обработчик, там где-то какая-то переменная не правильно прописана или вообще нету.

Алена отвечает:
26.09.2016 в 12:03

Здравствуйте! попробовала форму №2, все работало, но письма приходили только с яндекс почты или если краказябры просто написать вместо адреса, с майла не доходят. Еще я добавила строку “Телефон” и где-то напортачила, теперь вообще не отправляется посмотрите плиз

Здравствуйте Степан. Вы случайно не узнали решение с mail.ru, почему не работает? Только что попробовал на хостинге, на поддомене своего сайта потестировать обе формы. Все работает хорошо и с почтой Гугл и Яндекс, но вот Мэйл.ру никак, письма не доходят, хотя отправка идет. Причем интересно, что не работает как если указать почту мыла $address. Так и даже если просто в форме отправитель оставит почту на мыле, а в $address будет стоять почта яндекса к примеру.

Не могу понять. как и что не исправлял, сервер при отправке запроса присылает ошибку 405 “Method Not Allowed”

The requested method POST is not allowed for the URL /mail.php.

как это можно побороть? Спасибо!

Спасибо, Степан! Проблема была как вы и сказали в сервере. Исправили. Теперь другой прикол: все поля заполнены, выводит сообщений, что все успешно отправлено, но потом вместо перенаправления на головной сайт, выводит сообщение “Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!”

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

И Вам, Дмитрий, спасибо за красивые слова.
Распишете в комментарии, что вы сделали и в каких файлах. В общем все, что касается формы.
Код вставляйте в комментариях через .
Посмотрю.

Дмитрий отвечает:
02.10.2016 в 11:55

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

Здравствуйте!
Ошибка в 32 строке “Z:\home\192.168.1.227\www\php\contact-form.php on line 32”

Echo "Письмо не отправлено, через 5 секунд вы вернетесь на главную;}

не стоит перед “;” одинарная кавычка ” ‘ “, вот так:

Echo "Письмо не отправлено, через 5 секунд вы вернетесь на главную";}

пробуйте.

ро отвечает:
06.10.2016 в 23:37

здравствуйте ещё раз. теперь он другую ошибку нашел в пустом хэдере в 28 строке, заполнил её, и теперь вот такая(((
что-то я в php не могу разобраться пока(((

Warning: Cannot modify header information – headers already sent by (output started at Z:\home\192.168.1.227\www\php\contact-form.php:1) in Z:\home\192.168.1.227\www\php\contact-form.php on line 28

перевёл файл php в утф-8 без бом, стал показывать без ворнинга, но иероглифы(((

и вроде бы это не страшно, на почту указанную письмо почему-то не приходит

ро отвечает:
07.10.2016 в 00:00

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

За комментируйте строку 28

//header("Refresh: 5; URL=https://hot-potato.studio");

Результат не изменился?

ро отвечает:
11.10.2016 в 21:22

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

ро отвечает:
11.10.2016 в 21:38

совершенно не пойму! везде стоит одинаковая кодировка utf-8, но всё равно приходит вот такое! как это исправить? если ставил без бом, то у меня на сайте появляются эти иероглифы. X-Sendmail-Cmdline: sendmail.pl -t -i
To: хххххххххххх@gmail.com
Subject: Сообщение с hot-potato.studio
X-PHP-Originating-Script: 0:contact-form.php
From: Родион Мальцев
Reply-To: ххххххххх@gmail.com

Сообщение с сайта Hot-potato.studio

Имя отправителя: Родион Мальцев
Электронный адрес отправителя: хххххххххххх@gmail.com
Телефон отправителя: +7964ххххххххх
Текст сообщения:
прарарарара

ро отвечает:
11.10.2016 в 22:37

всё перевёл в ANSI и всё заработало, почему так? и нормально ли ANSI использовать?

Степан, здравствуйте!

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

Упсссссссс! Александр, не сделал.
Нужно будет исправиться и этот вопрос подтянуть

Александр отвечает:
04.12.2016 в 12:21

Степан, здравствуйте!
А Вы так и не сделали еще отправку с капчей?

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

Добрый день Степан, 1 вариант испробовал, все работает, но когда приходит письмо вместо русских и литовских букв крючки, пробовал варианты с кодировками, не помогло.

Добрый день! Если честно, не поняла. Сайт php сделала, а как вставлять форму на нужную страницу в нужном месте?

Здравствуйте! вставил форму по Способу-1, все время пишет “Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!” хотя они все заполнены.подскажите пожалуйста в чем может быть причина

код обработчика:

Здравствуйте!
Код написан не верно.
В форме нет “name=”NAME”, name=”EMAIL”” и т. д.

Tim отвечает:
06.12.2016 в 12:33

Добрый день!
Форму вставила на страницу, спасибо.
Но не работает – письма не доходят, подозреваю, не так указала путь к файлы mail.hp
И, главное, при отправке сообщения выскакивает, что сообщение отправлено и через 6 секунд вы будете перенаправлены на сайn сайт
Степан, как это убрать? Где изменить запись?

Ой, сообщение поправила.)
А вот как написать путь к файлам корректно?
Если файл mail.php лежит в той же папке, public html, где и все страницы сайта, значит ли это, что нужно указывать путь, как к странице сайт.ru/mail.hph?
Заранее спасибо!

Степан! Все заработало! Это сообщение не доходят, когда я пытаюсь со своего адресе сама себе послать, а с других адресов, или если просто указать 123 вместо адреса – доходят.
Извините за беспокойство!
И еще раз СПАСИБО!

Уважаемый Степан!
Прошу Вас помочь, иначе сойду с ума. Не первый день бьюсь с отправкой почты с сайта. Два файла: mail.php и contacts.html Оба файла в utf-8. Сам сайт на хостинге ISP тоже в utf-8.
Проблема: писма на ящик приходят, но в зябликах в таком виде –

Имя пославшего: Игорь Электронный адрес: [email protected] Контактный телефон: 1111111111 Сообщение: Проверка СЃ сайта

В Notepad преобразовал (хотя до перекодировки было так

Имя пославшего: Игорь Электронный адрес: [email protected] Сообщение: РџР РћР’Р Р РљРђ

Вот код mail.php

Отправка почты идет со страницы *******/contacts.html

Поменял ящик на @ukr.net иначе на @rambler письма шли в спам.

Может Вы разберетесь? Спасибо за ответ.

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

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

Есть ли варианты, кроме как в div оборачивать, его центрировать, а содержание по левому краю выравнивать?

Да, этот вариант, единственный, приходил в голову, но руки пока не дошли, Новый Год на носу, как-никак Да и навыков web-программирования откровенно маловато, чтобы легко и непринужденно выровнять форму.

Спасибо! И с Новым Годом!

Доброго времени! Как сделать, что бы для клиента вместо майла для обратной связи был только номер телефона? Спасибо!

Здравствуйте, Степан! Помогите мне, пожалуйста. Я вторую неделю делаю форму обратной связи, перепробовала бесконечное множество форм, и сегодня у меня наконец-то получилось добиться, чтобы форма выдала ответ: Ваше сообщение отправлено. и это была именно Ваша форма. Однако по ней отсылаются только ту письма, в которых в качестве эл. адреса посетитель сайта указал не почтовый ящик на mail.ru. Хостинг написал мне на мою жалобу, почему письма не приходят, такой ответ:
Вероятно, форма на сайте подставляет адрес, указанный в поле “Электронная почта*” в качестве отправителя.

В данном случае могут возникнуть проблемы, если пользователь укажет любой почтовый ящик на mail.ru. В данном случае рекомендуем установить в качестве адреса отправителя адрес на базе Вашего домена. Скорректировали для этого txt spf запись, чтобы разрешит отправку с сервера хостинга для данного домена:
v=spf1 ip4:37.140.192.244 a mx include:_spf.mail.ru ~all

Как мне заменить адрес в mail.php?
Я попробовала заменить строку №5:

If (isset($_POST["email"])) {$email = $_POST["email"]; if ($email == "[email protected]") {unset($email);}}

адрес эл.почты на базе моего домена – он тоже сформирован на mail.ru, но не в этом дело, если вставить туда адрес на

[email protected]

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

Здравствуйте, Степан! Перечитала еще раз все комментарии и нашла ответ на свой вопрос, все исправила, все работает! спасибо огромное! Подскажите еще, пожалуйста, как-нибудь можно сделать так, чтобы создать маску для поля $etel с телефонным номером, чтобы если пользователь ввел номер телефона не целиком, форма бы ему на это указала?

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

Екатерина отвечает:
14.03.2017 в 05:32

Добрый день! Причина, наверное, в хостинге (у меня рег.ру). У них, видимо, какие-то проблемы с отправкой писем с ящиков mail.ru через сайт. Они мне настроили, чтобы письма, отправленные с почты на основе доменного имени, приходили без проблем, и я изменила строку 15 формы:

$send = mail ($address,$etel,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$address");

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

Степан, здравствуйте! Использовал первый вариант размещения формы и столкнулся вот с какой ошибкой при нажатии кнопки “отправить”: Parse error: syntax error, unexpected T_NS_SEPARATOR in /var/www/vhosts/***.plsk.regruhosting.ru/httpdocs/***.ru/mail.php on line 13
Код в обработчике:

Код в странице:

Напишите нам или закажите обратный звонок!

Ваше имя

Электронная почта

Номер телефона

Вам перезвонить?

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

Судя по тексту ошибки, понимаю, что где-то намудрил с символами в обработчике, но найти не могу – глаза сломал… Не наведете на мысль? Заранее благодарен!

Сергей отвечает:
05.03.2017 в 21:05

Нашел лишние ковычки, ошибка пропала. Но теперь другая беда… Письмо приходит, все нормально отображается, но поля словно не заполнены. То есть, как буд-то обработчик не подхватывает данные из формы html.
php преобразовал вот так:

Проверку заполнения реализовал через html:

Ваше имя

Электронная почта

Номер телефона

Вам перезвонить?

Хотите ли Вы получить электронный каталог?

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

Если проверку обязательного заполнения возвращать в php, то выдается сообщение, словно ни одной строчки в форме не заполнено. То есть при обоих вариантах, обработчик словно “не видит” заполнения на странице. Повторюсь, посьмо приходит, отображается корректно, категории “анкеты” имеются, но они пустые. Куда глядеть тут? Подскажите)

Я в коде у вас не нашел строку №9

If (isset($name) && isset($email) && isset($sub) && isset($ring) && isset($catal) && isset($body)){

Добавьте, в обработчик вот такой код:

Print_r($_POST)

Перепишите и отправьте мне, что Вам вывелось на экран.

Сергей отвечает:
06.03.2017 в 15:08

А куда именно в логическую цепочку нужно добавить?

Print_r($_POST)

В какую строчку?
Еще раз благодарю за внимание!

Добрый день, Степан! Огромное спасибо за статью) Делала все по 1-ому варианту – форма работает, но вот когда вставляю ваш код для оформления формы в style.css – ничего не меняется((Форма рабочая, но совсем невзрачная((
Помогите, пожалуйста!

Привет, я тут диплом пишу и решил вставить обратку, но без хостинга я так понимаю это не сделать? Ваш способ почему то не подходит или я что напутал с путями (

Спасибо! однако не работает. причем сработало один раз. как такое может быть,

ага. срабатывает если все писать латиницей. если кириллицей то либо не приходит либо вопросительные знаки. если указываю обратный майл от gmail то письмо проходит, если от mail.ru – то не проходит. как такое вообще может быть?

второй способ работает полностью, но если указать адрес отправителя на майл ру (list.ru ets) то письмо не приходит
с qip.ru nm.ru письма проходят нормально. с рамблера тоже. майлру и его домены где то блокируются.

Здравствуйте Степан!
Я воспользовался 1 формой. Сделал изменения под свой сайт, но почему-то письма на почту не приходят. Вы могли бы посмотреть, может я что-то напутал?
Буду благодарен за ответ.

Добрый день, Степан!
Из 2-х Ваших тем (настоящей и темы по обратной связи с капчей, попытался составить для себя одну форму обратной связи. Письма на почту приходят, с этой стороны все нормально. Вопрос в том, что нет перехода на главную страницу сайта. Появляется пустая страница с надписью. 5 секунд висит установленная в php-файле запись, потом идет запись, что не все поля заполнены (хотя заполнены все поля). Но видно, что каждые 5 секунд страница пытается обновиться. Прошу помочь с данной ошибкой.

Здравствуйте, подскажите пожалуйста, после вставки кода,у меня отображается текстом на странице эта часть:

Может ли быть, что Word press не видит эту часть кода?

Добрый день.
Степан, огромное спасибо. Все заработало!
Можете уточнить: как можно подкорректировать код, чтобы после отправки сообщения пользователь переходил на ту страницу, с которой он отправил сообщение (т.е. на предыдущую), а не на главную?

Заранее благодарен.

setTimeout("location.replace("https://адрес_сайта")", 5000);

Доброго дня Степан) Вопрос как подключить определение ip отправителя, добавил поле

If (isset($_POST["ip"])) {$ip = $_POST["ip"]; if ($ip == "") {unset($ip);}}

не выводися, Заранее спасибо.

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

Здравствуйте, Александр!
Если после отправки форму вы на сайте увидели сообщение “Сообщение отправлено успешно. Перейдите на главную страницу блога…”, это значит, то форма отправилась успешно.
Почему нет писем на почте во входящих?
1. Строка 54 – $address = “[email protected]”; исправьте на вашу почту.
2. посмотрите, не попали ли письма в СПАМ

Александр отвечает:
06.12.2017 в 09:23

Строка 54 исправлена на мою почту. В почтовом ящике в спаме тоже ничего нету. Может надо написать в техподдерку хостинга, но что писать не знаю?

попробуйте вот .
Вы можете от туда вылудить обработчик php и прописать под свою форму.

Александр отвечает:
06.12.2017 в 20:25

И эта форма тоже работает и не выдает ошибок, но письма на почту не приходят. Свою почту в ней менял. Видимо хоть хостинг и поддерживает php, но в настройках надо что-то включить, а что именно я не знаю.
Хостинг используется nic.ru Тариф 200
В техподдержку писал, но они молчат.

Такой вопрос. В форме есть где прописать на какой почтовый адрес отсылать письма, а вот где надо прописать с какого почтового ящика отсылать письма? Или это сам хостинг по умолчанию должен понимать?

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

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

Здравствуйте, Игорь!
В коде пункт №15:

{echo "Сообщение отправлено успешно, через 6 секунд Вы будете направлены на главную страницу блога сайт,где сможете продолжить ваш просмотр";}

добавьте к сообщению CSS класс со стилями и все (можно так):

{echo "

Сообщение отправлено успешно, через 6 секунд Вы будете направлены на главную страницу блога сайт,где сможете продолжить ваш просмотр

";}

if (isset($_POST[‘name’])) {$name = $_POST[‘name’]; if ($name == ”) {unset($name);}}
Можете пояснить что в этой строчке написано, что проверяется?

Здравствуйте. А вот как сделать отправку формы если у меня сайт на локальном сервере? Использую Open Server

Одной из наиболее часто встречающихся на практике задач является реализация формы обратной связи. Тобишь написание ее HTML кода, оформление ее на CSS, создание PHP скрипта, который бы обрабатывал полученные от пользователя данные и отправлял их на нашу почту, написание JS скрипта, который бы проверял форму на адекватность вводимых данных, защита нашего детища от спама, чтобы наш почтовый ящик не обвалился от атак ботов.

Все вышеперечисленные моменты будут рассмотрены в нашем обзоре и подробно прокомментированы.

Итак, начинаем создание формы обратной связи:

HTML

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

< form method= "post" action= "mail.php" > < div class = "left" > < label for = "name" > Имя: < input maxlength= "30" type= "text" name= "name" /> < label for = "phone" > Телефон: < input maxlength= "30" type= "text" name= "phone" /> < label for = "mail" > E- mail : < input maxlength= "30" type= "text" name= "mail" /> < div class = "right" > < label for = "message" > Сообщение: < textarea rows= "7" cols= "50" name= "message" > < input type= "submit" value= "Отправить" />

И визуально она выглядит сейчас следующим образом:

Согласен, пока все некрасиво и ничего не понятно, но мы только начали.

Рассмотрим приведенный выше код подробно:

  • < form method= "post" action= "mail.php" > …


    для того, чтобы создать форму необходимо использовать тег form. Именно он определяет начало и конец формы для интерпретатора кода. У него, как и у любого тега, есть целый набор атрибутов, но обязательных для работы формы всего два, это method (метод отправки запроса на сервер, для форм стандартно используют post) и action (указывает путь к файлу-обработчику формы, именно в этом файле будет содержаться скрипт на PHP, который после будет отправлять введенные пользователем значения нам на почту, в нашем случае мы видим, что это файл называется mail.php и лежит он в том же директории сайта, что и рассматриваемая нами страница).
  • < input maxlength= "30" type= "text" name= "name" />


    Далее у нас следуют инпуты. Это собственно сами поля формы в которые пользователи будут вводить необходимую нам информацию (type="text" говорит о том, что это будет текст). Атрибут maxlength указывает сколько символов может ввести пользователь в данное поле формы. Самый важный атрибут это name – он задает имя конкретного поля. Именно по этим именам в дальнейшем PHP скрипт будет обрабатывать поступающую в него информацию. При желании можно еще задать атрибут placeholder, который выводит внутри поля текст исчезающий при установке курсора внутри нее. Одной из проблем плейсхолдера является то, что он не поддерживается некоторыми старыми браузерами.
  • < label for = "name" > Имя:


    Используется в случае если мы отказались от плейсхолдеров. Обычная подпись поля, атрибут for сообщает к какому конкретно полю относится данная подпись. Значением указывается name интересующего нас поля.
  • < textarea rows= "7" cols= "50" name= "message" >


    Также как и инпут предназначен для введения пользователем информации, только на этот раз поле заточено для длинных сообщений. Rows указывает размер поля в строках, cols в символах. В целом они задают высоту и ширину нашего поля.
  • < input type= "submit" value= "Отправить" />


    О том, что это кнопка для отправки формы нам сообщает type="submit", а value задает текст, который будет внутри этой кнопки.
  • < div class = "right" >


    использованы только для дальнейшего визуального оформления формы.
CSS

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

Мы использовали данный код:

form { background: #f4f5f7; padding: 20px; } form . left, form . right { display: inline- block; vertical- align: top; width: 458px; } form . right { padding- left: 20px; } label { display: block; font- size: 18px; text- align: center; margin: 10px 0px 0px 0px; } input, textarea { border: 1px solid #82858D; padding: 10px; font- size: 16px; width: 436px; } textarea { height: 98px; margin- bottom: 32px; } input[ type= "submit" ] { width: 200px; float: right; border: none; background: #595B5F; color: #fff; text- transform: uppercase; }

Подробно расписывать CSS я не вижу смысла, обращу Ваше внимание лишь на ключевые моменты:

  • Не стоит писать оформление под каждый тег в форме. Старайтесь строить свои селекторы так, чтобы парой строк кода оформлять все необходимые Вам элементы.
  • Не используйте для переноса строк и создания отступов лишние теги по типу < br>, < p> и тд, с этими задачами прекрасно справляется CSS со свойством display: block и margin с padding. Больше о том, почему не стоит пользоваться < br> в верстке вообще можете почитать в статье Тэг br, а так ли он нужен? .
  • Не стоит пользоваться табличной версткой для форм. Это противоречит семантике этого тега, а поисковики любят семантичный код. Для того, чтобы формировать визуальную структуру документа нам достаточно тегов div, и заданных им в CSS свойств display: inline-block (выстраивает блоки в ряд) и vertical-align: top (не дает им разбежаться по экрану), задаем им необходимую высоту и вуаля, ничего лишнего и все расположено так, как нам нужно.
  • Для желающих экономить свое время на оформлении сайтов могу посоветовать пользоваться CSS фреймворками при создании сайтов, особенно самописных. Мой выбор в этом плане- Twitter Bootstrap . Урок по оформлению форм с его использованием можно посмотреть .

    PHP

    Ну вот и пришло время сделать нашу форму работоспособной.

    Заходим в наш корневой каталог сайта и создаем там файл mail.php, к которому мы ранее указывали путь в атрибуте action тега form.

    В конечном итоге его код будет выглядеть следующим образом:

    Ваше сообщение успешно отправлено

    Обсуждение HTML и CSS части этого документа можно пропустить. По своей сути это обычная страница сайта, которую Вы можете оформить по своему желанию и необходимости. Рассмотрим же важнейшую ее часть – PHP скрипт обработки формы:

    $back = "

    Вернуться назад

    " ;

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

    if (! empty ($_POST [ "name" ] ) and ! empty ($_POST [ "phone" ] ) and ! empty ($_POST [ "mail" ] ) and ! empty ($_POST [ "message" ] ) ) { //внутрення часть обработчика } else { echo "Для отправки сообщения заполните все поля! $back " ; exit ; }

    Тут мы прикручиваем проверку формы на наполненность полей. Как вы догадались, в части $_POST["name"] в кавычках мы пишем значение атрибута name наших инпутов.

    Если все поля заполнены, то скрипт начнет обрабатывать данные в своей внутренней части, если же хоть одно поле не было заполнено, то на экран пользователя выведется сообщение с требованием заполнить все поля формы echo "Для отправки сообщения заполните все поля! $back" и ссылкой для возврата на предыдущую страницу, которую мы создали самой первой строкой.

    Дале вставляем во внутреннюю часть обработчика формы:

    $name = trim (strip_tags ($_POST [ "name" ] ) ) ; $phone = trim (strip_tags ($_POST [ "phone" ] ) ) ; $mail = trim (strip_tags ($_POST [ "mail" ] ) ) ; $message = trim (strip_tags ($_POST [ "message" ] ) ) ;

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

    Проверки можно и усложнить, но это уже по вашему желанию. Минимальную защиту на серверной стороне мы уже поставили. Дальнейшее мы сделаем на стороне клиента используя JS.

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

    После чистки тегов добавляем отправку сообщения:

    mail ("почта_для_получения_сообщений@gmail.com" , "Письмо с адрес_вашего_сайта" , "Вам написал: " . $name . "
    Его номер: " . $phone . "
    Его почта: " . $mail . "
    Его сообщение: " . $message , "Content-type:text/html;charset=windows-1251" ) ;

    Именно эта строка и занимается формированием и отправкой сообщения к нам. Заполняется она следующим образом:

  • "почта_для_получения_сообщений@gmail.com" – сюда между кавычек вставляете свою почту
  • "Письмо с адрес_вашего_сайта" – это тема сообщения, которое будет приходить на почту. Можно написать сюда что угодно.
  • "Вам написал: ".$name." < br /> Его номер: ".$phone." < br /> Его почта: ".$mail." < br /> Его сообщение: ".$message – формируем сам текст сообщения. $name – вставляем информацию заполненную пользователем через обращение к полям из предыдущего шага, в кавычках описываем что значит это поле, тегом < br /> делаем перенос строки, чтобы сообщение в целом было читабельно.
  • Content-type:text/html;charset=windows-1251 - в конце идет явное указание типа данных передаваемого в сообщении и его кодировки.
  • ВАЖНО!

    Кодировка указанная в «голове» документа ( < meta http- equiv= "Content-Type" content= "text/html; charset=windows-1251" /> ), кодировка из сообщения Content-type:text/html;charset=windows-1251 и в целом кодировка файла PHP должны совпадать иначе в получаемых на почту сообщениях вместо русских или английских букв будут выводиться «кракозябры».

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

    Проверка формы на адекватность вводимых данных

    Чтобы пользователи по невнимательности не промахивались полями и заполняли все корректно стоит поставить проверку вводимых данных.

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

    Код скрипта вставляем в том же файле, где у нас располагается HTML часть формы. Для нашего случая он будет выглядеть так:

    < script> function checkForm(form) { var name = form. name. value; var n = name. match(/ ^[ A- Za- zА- Яа- я ] * [ A- Za- zА- Яа- я ] + $/ ) ; if (! n) { alert("Имя введено неверно, пожалуйста исправьте ошибку" ) ; return false ; } var phone = form. phone. value; var p = phone. match(/ ^[ 0 - 9 + ] [ 0 - 9 - ] * [ 0 - 9 - ] + $/ ) ; if (! p) { alert("Телефон введен неверно" ) ; return false ; } var mail = form. mail . value; var m = mail . match(/ ^[ A- Za- z0- 9 ] [ A- Za- z0- 9 \. _- ] * [ A- Za- z0- 9 _] *@ ([ A- Za- z0- 9 ] + ([ A- Za- z0- 9 - ] * [ A- Za- z0- 9 ] + ) * \. ) + [ A- Za- z] + $/ ) ; if (! m) { alert("E-mail введен неверно, пожалуйста исправьте ошибку" ) ; return false ; } return true ; }

    Ну а теперь обычный разбор:

    Для того, чтобы при нажатии на кнопку отправки формы, у нас происходила ее проверка вешаем запуск нашего скрипта на тег form:

    < form method= "post" action= "mail.php" onSubmit= "return checkForm(this)" >

    Теперь по пунктам забираем состав проверки:


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

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

    Исходные файлы текущей статьи вы можете скачать по .

    В этом уроке мы сделаем все максимально просто и своими силами. В частности, для отправки писем мы воспользуемся специальной функцией PHP под названием mail(), которая раньше часто использовалась для отправки писем.

    Начнем с синтаксиса функции mail . Данная функция имеет три обязательных параметра и два опциональных (не обязательных). Обязательные параметры:

    to — email получателя (также можно указать несколько адресов, перечислив их через запятую);

    subject — тема письма;

    message — текст письма.

    Из опциональных параметров практически всегда используется только первый, который отвечает за заголовки письма: кодировка, отправитель, тип письма и др.

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



    Просмотров