HTML форма обратной связи для сайта +PHP обработчик с защитой от спама

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

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


Содержание:

  1. Принцип работы формы обратной связи на html
  2. Создание макета
  3. Оформление CSS стилями
  4. PHP скрипт формы обратной связи с защитой от спама
  5. Вставка формы на страницу сайта
  6. Активный анти спам с вводом данных в поле
  7. Частые проблемы и их решение

Недавно я делал статью о том, как сделать форму обратной связи для wordpress с помощью плагина Contact Form 7. Также просто можно сделать форму обратной связи на Joomla и других популярных CMS.

Но, что делать сайтам, которые не используют популярные CMS? – Остается делать все руками.

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

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

Принцип работы формы обратной связи на html

Наша форма будет иметь 5 полей для ввода данных – имя, электронный адрес, телефон, адрес сайта, текст сообщения (вы сможете удалить или изменить их самостоятельно).

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

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

Конечная форма связи будет иметь вот такой вид:

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

Для работы контактной формы, созданной на html, требуется 3 элемента.

Первый отвечает за структуру самой формы, за тип и количество полей ввода данных. Это обычный html код.

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

Третий отвечает за внешний вид. Устанавливает размеры и расположение полей ввода данных, добавляет различные цвета и эффекты. Это все задается CSS стилями.

Демо версия формы

Настройку каждого из этих элементов мы с вами разберем по шагам.

Создание HTML макета

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

Для обозначения форм в html используется тег <form></form>, внутри которого заполняются необходимые параметры.

<form class="contact_form" action="contact-form.php" method="post">
	<p>
            <label for="name">Имя:</label>
            <input type="text"  name="name" placeholder="Введите ваше имя" required />
        </p>
        <p>
            <label for="email">Email:</label>
            <input type="email" name="email" placeholder="Введите электронный адрес" required />
            <span class="form_hint">Правильный формат "name@something.com"</span>
        </p>
        <p>
            <label for="tel">Телефон:</label>
            <input type="tel" name="tel" placeholder="Введите номер телефона" required />
            <span class="form_hint">Правильный формат "+7-123-4567890"</span>
        </p>
        <p>
            <label for="website">Сайт:</label>
            <input type="url" name="website" placeholder="Введите адрес вашего сайта" pattern="(http|https)://.+"/>
            <span class="form_hint">Правильный формат "http://someaddress.com"</span>
        </p>
        <p>
            <label for="message">Текст сообщения:</label>
            <textarea name="message" cols="40" rows="6" required ></textarea>
        </p>
	    <input name="bezspama" type="text" style="display:none" value="" />
        <p>
            <button class="submit" type="submit">Отправить сообщение</button>
        </p>
</form>

Начнем с первой строки.

class=”contact_form” – указываем класс, для того, чтобы в будущем задать CSS стили.

action=”contact-form.php” – указываем название файла со скриптом, который будет обрабатывать данные формы и осуществлять отправку сообщения. Если файл лежит в той же папке, что и страница с формой, то достаточно указать только название файла, если в другой, то нужно будет указать и путь к файлу.

Дальше идут 4 блока <p>, отвечающих за вывод полей для ввода данных, по названиям понятно, какой за что отвечает. Сами поля выводятся с помощью тегов <input>, внутри которого задаются следующие характеристики:

Type – отвечает за тип вводимых данных, text – обычный текст, email – электронный адрес, такие поля автоматически проверяются на правильность (должна присутствовать @), tel – телефон, url – адрес сайта.

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

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

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

pattern=”(http|https)://.+” – эта конструкция служит для проверки корректности поля веб сайт, указывает на то, что адрес обязательно должен содержать http://текст или https://текст, в противном случае будет ошибка.

Для некоторых полей задана всплывающая подсказка, которая появляется при выборе элемента. Ее задет <span class=”form_hint”>, где form_hint является классом элемента (его свойства прописываются в CSS). Текст во всплывающей подсказке для каждого поля контактной формы можно задать любой. Если такая фишка вам не нужна – просто удалите весь тег <span></span>.

Поля для ввода самого сообщения размечается тегом <textarea>, в котором cols задает количество символов поля в ширину, а rows число строк.

Защита от спама – невидимое поле с именем name=bezspama. У него стоит стиль display:none – это значит поле невидимо людям, но боты его будут заполнять на автомате.

И завершающий элемент любой формы – кнопка отправки сообщения, она задается тегом <button> </button>, имеющим свой класс для настройки внешнего вида и тип “submit”.

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

Оформление CSS стилями

Если вы посмотрите в браузере на то, что получилось, то увидите нечто корявое и непривлекательное. Для того, чтобы у нас получилась красивая форма обратной связи, придется поработать над ее стилями (html будет недостаточно).

Если вы владеете CSS, то задать оформление для всех элементов формы сможете без проблем, тут даже не потребуется моя помощь.

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

Ссылка на скачивание всех файлов формы в конце статьи.

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

  1. Скопировать содержимое файла в файл style.css, который уже есть на вашем сайте (добавьте в самый конец)
  2. Поместить файл, который я дал, на ваш хостинг и подключить его.

Подключаются файлы стилей следующим кодом <link rel=”stylesheet” media=”screen” href=”styles.css” >, размещаемым внутри <head></head>. Если файл со стилями (styles.css) находится не в одной папке с html страницей, то пропишите полный путь до него.

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

Настройка PHP кода (добавлена защита от спама)

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

Для сайтов, использующих кодировку windows-1251 и версию php 5.4+, в код нужно будет внести дополнение, связанное с функцией htmlspecialchars. Покажу его ниже. Иначе, вместо кириллицы будут приходить пустые поля.

Помните, в свойствах формы (в html файле) мы указывали параметр action=”contact-form.php”. Вам нужно создать файл с названием contact-form.php и поместить в него находящийся ниже код.

<?php

/* Задаем переменные */
$name = htmlspecialchars($_POST["name"]);
$email = htmlspecialchars($_POST["email"]);
$tel = htmlspecialchars($_POST["tel"]);
$website = htmlspecialchars($_POST["website"]);
$message = htmlspecialchars($_POST["message"]);
$bezspama = htmlspecialchars($_POST["bezspama"]);

/* Ваш адрес и тема сообщения */
$address = "pochta@kakoy-to-sajt.com";
$sub = "Сообщение с сайта ХХХ";

/* Формат письма */
$mes = "Сообщение с сайта ХХХ.\n
Имя отправителя: $name 
Электронный адрес отправителя: $email
Телефон отправителя: $tel
Сайт отправителя: $website
Текст сообщения:
$message";


if (empty($bezspama)) /* Оценка поля bezspama - должно быть пустым*/
{
/* Отправляем сообщение, используя mail() функцию */
$from  = "From: $name <$email> \r\n Reply-To: $email \r\n";
if (mail($address, $sub, $mes, $from)) {
	header('Refresh: 5; URL=https://biznessystem.ru');
	echo '
    
    Письмо отправлено, через 5 секунд вы вернетесь на страницу XXX%MINIFYHTML70dfd05c897fdd0e95429c16328a0ef113%';}
else {
	header('Refresh: 5; URL=https://biznessystem.ru');
	echo '
    
    Письмо не отправлено, через 5 секунд вы вернетесь на страницу YYY';}
}
exit; /* Выход без сообщения, если поле bezspama заполнено спам ботами */
?>

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

$название = htmlspecialchars($_POST["название"]);

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

Не все переменные мы берем из формы. Как минимум, адрес электронной почты, на который придет письмо (ваш адрес) указывается отдельно. В данном случае это переменная $address – впишите в ее значение свой электронный ящик.

Также, в данном примере явным образом задано значение переменной $sub – она будет выдавать тему письма. Можно добавить тему сообщения в HTML форму в виде текстового поля (наподобие name), и брать значение этой переменной оттуда.

В блоке формат письма настраивается то сообщение, которое получите вы. Он может отличаться от того, что было написано в поле textarea под названием message. Я просто сделал еще одну переменную $mes и включил в нее дополнительный текст и важные данные отправителя (имя, почту, телефон, сайт). Эту часть вы можете сконфигурировать так, как вам удобно.

Дальше идет отправка сообщения.

Чтобы получаемые вами письма подписывались именем отправителя, и в них включался их обратный адрес, а не адрес сервера, на котором находится ваш php файл, мы задаем новую переменную $from, в нее включаем имя и электронный ящик отправителя письма.

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

Вставка формы на страницу сайта

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

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

Скачать файлы контактной формы

Активный анти спам с вводом данных в поле

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

Я покажу как изменить код формы и PHP обработчик для использования этого метода антиспама. При желании вы можете не менять защиту с пустым полем, а добавить соответствующие строки в код и у вас будет работать одновременно 2 метода – по идее, должно быть более эффективно.

Первым делом нам необходимо добавить поле для ввода и вопрос в HTML код. В качестве основы у нас уже есть строка 25 (input name=“bezspama”). Это поле невидимо. Мы превращаем его в обычное. Для этого всю строку меняем на вот такой блок:

<p>
   <label for="bezspama">2+2*2=:</label>
   <input name="bezspama" type="text" required />
</p>

Вместо математического выражения 2+2*2 можете ввести любые данные – это визуальный вопрос для пользователя. Из поля input мы убрали стиль display:none и добавили обязательность заполнения.

Следующим шагом меняем данные в PHP обработчике, чтобы он делал проверку уже не на пустоту этого поля, а на правильность введенных данных. Проверка у нас делалась в строке 25 выражением empty($bezspama). Мы меняем это выражение и будем делать проверку равенства заполненного поля заранее заданному числу. В моем примере, математическое выражение равно 6, поэтому вся строка будет выглядеть вот так:

if ($bezspama==6) /* Проверка математического выражения*/

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

Для того, чтобы этот вариант защиты использовать в дополнение к изначальному необходимо:

  1. Добавить в HTML код блок для вывода нужного поля, но указать другой идентификатор вместо bezspama;
  2. Добавить в начало PHP обработчика присвоение переменной этого нового идентификатора;
  3. Перед строкой 25, где идет проверка на пустоту переменной bezspama добавить проверку новой переменной на соответствие заданному значению, как описано чуть выше;
  4. После строки с проверкой математического выражения вставить открывающую фигурную скобку “{“, так чтобы следующая команда if стояла после нее;
  5. Перед командой exit вставить еще одну строку с закрывающей фигурной скобкой “}”

После всего этого в вашей форме будут работать одновременно обе защиты от спама.

Частые проблемы и их решение

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

Иероглифы при кодировке windows-1251

Теперь об особенностях использования кодировки сайта windows-1251. Если у вас такой случай, то указанная выше строчка должна дополниться еще двумя параметрами для функции htmlspecialchars – ENT_COMPAT, ‘cp1251’. Выглядеть это будет вот так:

$название = htmlspecialchars($_POST["название"], ENT_COMPAT, 'cp1251');

Не приходят письма с некоторых или всех ящиков

Часто встречается ситуация, когда письма не приходят, хотя сообщение об успешной отправке появляется. Это означает, что хостинг функцию mail, отправляющую письмо, выполнил, а почтовый сервер получателя письмо не принял, посчитав его поддельным. Возникает это вследствие того, что сервер отправки сообщения не совпадает с сервером, указанным в адресе отправителя (стр. 28 переменная $from).

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

$from  = "Reply-To: $email \r\n";

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

Понравилась форма – можно поблагодарить автора


523 комментария на «“HTML форма обратной связи для сайта +PHP обработчик с защитой от спама”»

  1. Как убрать поле с сайтом, мне оно не нужно

    Ответить
    • Нужно удалить несколько лишних строк в коде:

      1. Удалите с 16 по 20 строки в html форме (теги

      где сказано про website)
      2. В php коде удалите 8 и 22 строки (задание и вывод переменной website)

      Ответить
    • Не приходить на почту сообщение. Все прописано правильно. Ни лишних символов ни пробелов.
      Что не так. Перенаправление на файл РНР есть, ваше сообщение отправлено, потом перенаправил на главную сайта, но на почту вообще нечего не приходит. Попробовал много форм, но результат 0. Все случилось после смены имени домена. Сижу на бесплатном хосте.

      Ответить
  2. Спасибо за статью, очень вовремя для меня 🙂
    Только у меня не работает что-то…
    Вроде все по инструкции сделал, но при нажатии на кнопку “Отправить сообщение” – открывается страница – на белом фоне написан php’шный код…

    Что делаю не так?
    Файл php лежит в той же папке, где и страничка с формой.

    Ответить
    • Уточните, где открываете файл – на компьютере или он уже на хостинге?
      На компьютере php код не работает.
      Если это происходит уже на вашем хостинге, то проверьте, работает ли там php.

      Ответить
  3. да, пробовал на компе.
    выложил на сервер, теперь ошибка:
    Parse error: syntax error, unexpected end of file in /home/user1159171/www/avtovoz.by/contact-form.php on line 30

    Ответить
    • добавил фигурную скобку в конце 34 строчки..
      теперь:

      Warning: Cannot modify header information – headers already sent by (output started at /home/user1159171/www/avtovoz.by/contact-form.php:1) in /home/user1159171/www/avtovoz.by/contact-form.php on line 24
      Письмо отправлено, через 5 секунд вы вернетесь на сайт

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

        Что касается кодировки и этой ошибки – обе проблемы связаны скорее всего с тем, что вы правили файл и при сохранении неверно выставили параметры.

        Подобные файлы нужно править в специализированном редакторе, например, Akelpad или Notepad++.

        Откройте файл в этом редакторе, при сохранении сделайте так:
        1. выберите кодировку, соответствующую вашему сайту. В моих файлах стоит UTF-8, если у вас сайт с другой кодировкой, выберите ту, которая у вас.
        2. снимите галочку BOM

        После этого все должно заработать как положено.

        Ответить
        • Почему после отправки письма браузер открывает страничку опять с кодом php:
          <?php

          /* Задаем переменные */
          $name = htmlspecialchars($_POST["name"]);
          $email = htmlspecialchars($_POST["email"]);
          $tel = htmlspecialchars($_POST["tel"]);
          $website = htmlspecialchars($_POST["website"]);
          $message = htmlspecialchars($_POST["message"]);
          $bezspama = htmlspecialchars($_POST["bezspama"]);

          /* Ваш адрес и тема сообщения */
          $address = "pochta@kakoy-to-sajt.com";
          $sub = "Сообщение с сайта ХХХ";

          /* Формат письма */
          $mes = "Сообщение с сайта ХХХ.\n
          Имя отправителя: $name
          Электронный адрес отправителя: $email
          Телефон отправителя: $tel
          Сайт отправителя: $website
          Текст сообщения:
          $message";

          if (empty($bezspama)) /* Оценка поля bezspama – должно быть пустым*/
          {
          /* Отправляем сообщение, используя mail() функцию */
          $from = "From: $name \r\n Reply-To: $email \r\n”;
          if (mail($address, $sub, $mes, $from)) {
          header(‘Refresh: 5; URL=https://biznessystem.ru’);
          echo ‘Письмо отправлено, через 5 секунд вы вернетесь на сайт XXX’;}
          else {
          header(‘Refresh: 5; URL=https://biznessystem.ru’);
          echo ‘Письмо не отправлено, через 5 секунд вы вернетесь на страницу YYY’;}
          }
          exit; /* Выход без сообщения, если поле bezspama заполнено спам ботами */
          ?>

      • Еще проверьте, нет ли лишних пробелов перед

        Ответить
  4. кстати, письмо пришло 🙂
    только с кодировкой что-то не то 🙁 краказяблы в письме

    Ответить
  5. 1. Правил РНР в редакторе Notepad++. Выбрал кодировку UTF-8 (без ВОМ)
    2. Кодировка у меня на сайте стоит кириллица (наверное это Windows-1251?).
    В таком раскладе письмо приходит, но краказяблами. Если ставлю кодировку UTF-8, то письмо вообще не приходит. (менял кодировку только страницы с формой)
    3. Добавил строчку перед отправкой:
    $from .= “Content-type: text/plain; charset=\”utf-8\””;
    Теперь письмо приходит правильное.
    Но, русские буквы (слова) с формы не приходят в письме, выглядит так:

    Имя отправителя:
    Электронный адрес отправителя: alex@dfgd.ru
    Телефон отправителя: +37529 123-45-67

    Если имя написать в форме латиницей, то все ок.

    Что еще попробовать?

    Ответить
    • Кодировка всех файлов должна быть одинаковой – и html и php.
      Пересохраните php файл в той же кодировке.
      Если не получится, пришлите мне ваши исправленные файлы – я проверю их на своем хостинге.

      Ответить
      • Поставьте кодировку

        И в фаиле PHP пропишите вместо
        $name = htmlspecialchars($_POST[“name”]);
        вот так $name = htmlspecialchars($_POST[“name”], ENT_COMPAT, ‘cp1251’);
        Это для того, чтоб на вашу почту приходили сообщения написанные по русски, так же пропишите и в сообщениях: $message = htmlspecialchars($_POST[“message”], ENT_COMPAT, ‘cp1251’);
        Если не прописать вот так, то приходить будет только емаил

        Ответить
  6. отправил свой файл РНР на почту

    Ответить
    • Поправил php файл (исправления на картинке во вложении, там же правленный файл). Вы поставили лишнюю скобку “}”.
      У меня на хостинге все работает, сообщения приходят в правильной кодировке.

      PS: Зря вы не пользуетесь CSS.

      Ответить
    • Спасибо! Завтра попробую, надеюсь поправлю похожую ошибку

      Ответить
  7. Все хорошо и сообщения приходят, но почему – то не присылаются имя и сообщение… В письме приходит только емаил отправителя.

    Ответить
    • До вашего сообщения разбирались с похожей проблемой Алексея (предыдущего коментатора). На латинице имя отправителя у него приходило, на кирилице нет.

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

      Ответить
    • Дополню свой комментарий. Подобная проблема наблюдается у сайтов, использующих кодировку windows-1251, если на вашем хостинге работает версия php 5.4 и выше (с этой версии одна из функций стала работать иначе).

      Решение:
      ——————
      В php коде в функции htmlspecialchars() необходимо добавить еще 2 параметра – ENT_COMPAT, ‘cp1251’ – для каждой переменной, использующей кирилицу.

      Например, заменив: htmlspecialchars($_POST[“name”]) на
      htmlspecialchars($_POST[“name”], ENT_COMPAT, ‘cp1251’).
      ——————

      Ответить
  8. Да! Все заработало!

    Добавил, как ты и написал, еще один параметр в функцию htmlspecialchars: , ENT_COMPAT, ‘cp1251’
    Все теперь работает как надо.

    Спасибо за решение, за форму и за поддержку!
    Давно хотел свою форму, чтобы не зависеть от сторонних сервисов…

    Теперь, когда основа работает, буду разбираться с CSS – делать красиво 🙂
    Жму руку!

    Ответить
  9. Здравствуйте! Спасибо за форму. Если не затруднит посмотрите www. russervic.ru. Тоже с кодировкой траблы. все в UTF-8, все файлы в одной папке. Письма приходят в виде ??????. И предупреждения Письмо отправлено, через 5 секунд вы вернетесь на сайт также. Возможно ли приукрасить загружаемую страницу с предупреждением? Чтобы не белый лист. Ну и с кодировкой не яно.
    Спасибо.

    Ответить
    • По поводу сообщения о 5 секундах – вы можете сделать отдельную красивую страницу, куда будет перенаправляться пользователь после отправки сообщения. Параметр refresh сделать 0 (мгновенное перенаправление).

      По кодировке – может быть вы указали ENT_COMPAT, ‘cp1251?? для сайта на utf-8 этого не нужно.

      Ответить
  10. в таком виде ????? приходят только строки обозначающие имя, адрес, сообщение…а сам текст отображается доступно

    Ответить
  11. Что-то даже css не могу нормально подключить((
    Стили то совсем не видно, то отчасти только. Как-будто конфликт какой-то.
    А можно добавить сюда добавление картинки?

    Ответить
    • 1. Чтобы понять что происходит со стилями можно включить браузер в режиме отладки – он покажет какие стили применяются к элементу.
      2. Картинку можно выложить на хостинг картинок, а сюда добавить ссылку на нее.

      Ответить
  12. Не переадресовывается на указанную страницу после заполнения формы.
    Форма: gusmatic.ru/zakaz.html
    Нужная страница после заполнения формы: gusmatic.ru/thank_you.html

    Все остальное работает, письма приходят, все читается. Редирект должен происходить моментально, т.е. задержка 0 сек. Пробовал и Location и Refresh – все одно. Открывается пустой эйчиэмэль с надписью “Письмо отправлено, через 0 секунд вы перейдете на сайт Гусматик”, и ничего далее не меняется.

    Ответить
    • А если оставляете с задержкой больше нуля, то идет переадресация?

      Ответить
  13. Пробовал 5 и 3. Не идет.

    Ответить
    • Проверьте свой php файл, возможно при редактировании вы допустили какую-то ошибку. Можете прислать мне на почту (akmid81(собачка)gmail.com) – я посмотрю.
      Если ошибок в файле нет, то причина может быть в хостинге, может он команду header не воспринимает – это можно у тех. поддержки спросить.

      Ответить
  14. Письмо отправил вчера на почту, но ответа не получил. Хостинг запрашивал – техподдержка говорит команда работает, только если после нее ничего не стоит… Пробелы все в документе убрал какие нашел, условие проверки на ботов упрощал (удалял), даже с простым условием переадресации не хочет почему то работать.

    Ответить
    • Письмо не получил, повторите еще раз. То, что вы упрощали условия проверки на ботов ни на что не влияет, раз у вас показывается строка о том, что переадресация скоро пройдет, значит весь код выполняется.

      Что хостинг имеет ввиду насчет того, что после команды ничего не стоит? Команда header должна стоять до того как будет выводиться содержимое страницы, в данном случае выводимое строкой echo.

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

      Ответить
  15. А как защетить от взлома э тот php файл? Что бы его не могли редактировать, скачать, или через него зайти в другие деректории сервера где лежат другие сайты.

    Ответить
    • Поставьте права доступа 755 – это разрешает вносить в файл изменения только вам.

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

    Ответить
    • После 29 строки нужно добавить еще одну конструкцию с функцией mail на второй адрес (само собой надо задать этот адрес переменной, например, $adress1.
      Будет примерно вот так:
      if (mail…) {if (mail…) {тут все header, echo вместе с else}} exit;

      Ответить
      • Достаточно прописать получателей через запятую в $address = "1@mail.ru, 2@mail.ru";

        Ответить
  17. Спасибо за хороший скрипт.
    Подскажите откуда берется всплывающая подсказка “Заполните это поле.” при попытке отправить пустое письмо, где эту надпись можно отредактировать?

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

      Ответить
  18. Такая же проблема, как и у Дмитрия. Сайт ни в какую не хочет переадресовываться на нужную страницу. И ответ техподдержки похожий. Не удалось как-нибудь решить?

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

      Ответить
  19. Приветствую. Подскажите, какая может быть причина не отправки письма?

    Ответить
  20. т.е. письмо какбы отправляется, появляется сообщение, что письмо отправлено. Но в почтовом ящике его нет

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

      Ответить
  21. из кода обработчика удалил лишь строки:
    $tel = htmlspecialchars($_POST[“tel”]);
    $website = htmlspecialchars($_POST[“website”]);
    и все связи с ними.
    Я вот думаю, имеет ли смысл, уточнять у хостера о работоспособности функции mail

    Ответить
    • РЕШЕНО. Оказалось все банально просто. Доблестный сборщик почты он Яндекса, все письма посылал СПАМ. абсолютно случайно заметил их там. Спасибо.

      Ответить
      • Я папку спам постоянно проверяю, туда часто полезные письма попадают.

        Ответить
  22. У меня есть своя форма. Есть поле имя и телефон. Хочу добавить поле e-mail. Беру копирую к примеру код который относится к полю “имя” вставляю ниже кода первых двух полей, и в нем заменяю под e-mail, но третьего поля не появляется. В чем причина подскажите как сделать правильно?

    Ответить
    • Поле для ввода выводится тегом input – вы эту строку вставляете?

      Ответить
  23. Input вставляю, но поля не появляется

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

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

    Ответить
    • По какой-то причине не выполняется функция mail, проверьте правильность ее написания и наличие/правильность переменных, относящихся к ней – это единственное условие, проверяемое для выдачи сообщения об ошибке.

      Ответить
      • Как проверю все переменные отпишусь.

        Ответить
  25. Спасибо за форму и подробное объяснение.
    Такая ситуация: нужно поставить 8 форм на одну страницу – 8 кнопок групп с разным расписанием занятий. Формы полностью одинаковы, а вот на почту нужно чтобы приходил заголовок конкретно той группы, в которую хочет записаться пользователь. Как это осуществить? 8 практически одинаковых обработчиков – как-то не особо правильно наверное. Может, можно это сделать в одном, но как?

    Ответить
    • Тема письма задается переменной $sub. В скрипте она задается в явном виде текстом. Если мы хотим, чтобы обработчик был единым, то нужно эту переменную брать со страницы из конкретной формы. Как вариант, задать дополнительное поле в форме с именем sub и значением по умолчанию (разным для разных форм). Чтобы это поле не было видно людям, надо сделать его скрытым, так же как защита от ботов сделана.
      Тогда, в зависимости от формы будет подставляться в переменную sub то значение, которое соответствует форме.

      Ответить
  26. Здравстуйте! письмо отправляется, но на почте приходит следующее:
    “Мы не можем проверить подлинность отправителя. Рекомендуем вам быть внимательнее при совершении действий, указанных в письме. Подробнее

    Сообщение с сайта service-ast-sport@mail.ru.

    Имя отправителя: wer
    Электронный адрес отправителя: 269081999@mail.ru

    Текст сообщения:”
    в чем именно причина?

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

      Ответить
  27. Дмитрий, спасибо за вашу работу.
    Вроде бы все нормально, но вот проблема, как и у остальных. Заполняю форму, идет отправка, письмо получаю, но нет редиректа на нужную страницу, а только ошибка:
    Warning: Cannot modify header information – headers already sent by (output started at …./contact-form/contact-form.php:1) in ……/contact-form/contact-form.php on line 30
    Письмо отправлено, через 5 секунд вы вернетесь на сайт…
    И все!!! Причем вообще ничего не менял, кроме почты и ссылки на сайт. Только попробовал со временем поиграть, но увы, работает, но не до конца.

    Ответить
    • Проверьте, нет ли перед командой header пробела, если есть, то удалите его.

      Ответить
  28. Да все проверил, Вы уже об этом много раз писали. Прочел всю ветку все перепробовал.
    Ну да ладно, я то уже другой скрипт нашел (он работает), но речь не о том. Я бы посоветовал проанализировать и может немного доработать, выявить причину из-за чего у части пользователей он работает с ошибками и устранить ее.

    Ответить
    • Каким методом реализована переадресация в скрипте, которым вы воспользовались?
      Я бы с удовольствием выявил причину, но на двух моих хостингах все работает как часы, а дорабатывать что-то не видя проблемы очень сложно.

      Ответить
  29. Дмитрий, не сочтите за рекламу, вот ссылка на готовую форуму (может вам то же она будет интересна), что я использовал tutorialzine(точка)com/2009/09/fancy-contact-form/ . На просторах интернета нашел ее частично переведенную и заточенную под русский язык (хотя немного и коряво), вот ее и использовал. Дополнительные поля в ней добавить очень быстро, редактируются 2 файла (самой формы и что должно приходить владельцу). Может сделаете и ее обзор? Думаю будет многим интересно. Если надо, то могу выложить в облако уже то, что переделал для себя.

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

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

      В приведенном вами скрипте очень большой и мудреный код (на мой взгляд) гораздо сложнее моего (даже JavaScript добавлен), при этом никаких преимуществ нет (у меня еще и русские буквы в имени не стал принимать). Кроме реализации математической капчи, а ради нее городить такой огород смысла нет. У меня защита сделана проще и эффективнее.

      Ответить
  30. Здравствуйте!
    Помогите… Форма заполнена, жму отправить — скачивается файл contact-form…
    В чем может быть проблема?
    Спасибо заранее.

    Ответить
    • Так и не скажешь, надо смотреть, что меняли в коде.

      Ответить
  31. Добрый вечер,ночь.
    Сделал все как вы написали,поля заполнил,жму отправить выходит ” Сообщение не отправлено! и переход на стр левую”
    Я даже вставлял ваши исходники.. все ровно все так же..
    В чем может быть проблема?

    Ответить
    • Страница, на которую осуществляется переход указывается вами в коде, по умолчанию стоит мой блог biznessystem.ru.
      По поводу не отправленного сообщения, возможно вы ошиблись при редактировании переменной $adress или $email – проверьте их корректность.
      Если все в порядке там, то выкладывайте свой файл на яндекс диск и ссылку дайте, я посмотрю.

      Ответить
      • Чертос два! Я мучался около двух дней,перебирая столько php кодов и скриптом для отправки.. но ни что не работало.. оказывается вся суть была в пробном периоде на хосте timeweb,там не отсылается пока не оплатишь за хост) Спс вам,у вас хорошая форма,прикольный дизайн..
        Только как например сделать,чтобы еще можно было прикреплять файлы?

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

  32. Хотелось бы узнать еще,вот например у меня сайт чисто на HTML,без движка.
    Возможно ли создать там регистрацию? чтобы люди могли авторизоваться и т.д.. если например создать базу php и настроить ее. а то говорят,без CMS этого не сделать.

    Ответить
    • По сути вы сейчас говорите о создании самописного движка. Уж проще использовать готовый.

      Ответить
      • Тогда вопрос в следующем,как например перенести свой сайт на движок?
        Вот например устанавливаю я, Joomla or Wordpres. у них там создается как бы свой шаблон и т.д… но что делать,если мне нужен именно мой шаблон с HTML?Как правильно его вставить что ли.. не могу правильно сформулировать,но думаю идея понятна?)

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

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

    Ответить
    • Не приходит совсем имя или поле для имени приходит пустым?
      Если не приходит совсем, значит, что-то недосмотрели когда правили – проверяйте код.
      Если пустым, то, возможно, у вас сайт с кодировкой win1251 – решение описано в конце статьи (возможно, вы не обратили внимание на это).

      Ответить
  34. все что ввожу в поле имя, приходит пустым, а все остальные поля приходят заполнеными не могу понять почему,

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

      Ответить
  35. Решил испробовать ваш скрипт.Создал форму обратной связи,в файл отправки сообщения скопировал код скрипта с сайта,ничего не изменял.При отправки сообщения появляется письмо не отправляется.В чём может быть проблема.

    Ответить
    • спасибо разобрался отличный скрипт.Оказывается на хостинге была отключена функция mail().А так всё работает!!!

      Ответить
      • Такое бывает с хостингами. Рад, что разобрались и форма заработала.

        Ответить
  36. Спасибо! Всё работает, но сперва приходили пустые письма затем не работала переадресация. В первом случае у меня слетели кавычки в строках объявления переменных php файла, во втором помогло сменить кодировку на utf-8 без BOM (в Notepad++). ещё раз спасибо!!!

    Ответить
    • С кодировками часто бывает проблема. Хорошо, что она у вас решилась.

      Ответить
  37. Добрый вечер. Большое Вам человеческое спасибо за выкладку частички своих знаний!!!! очень помогла в решении задачи! Есть одно затруднение правда – может сталкивались? при открытии с моего компа форма отображается как надо, все отправляет и т.д. а вот при открытии с другого компа из любого браузера форма отображается криво т.е. между именем строки и строкой ввода появляется огромный пробел, по величине примерно такой же как и поле ввода. Может быть подскажите где концы искать, а то у меня опыта совсем в этом деле нет! Это мой первый сайт. Заранее спасибо.

    Ответить
    • Для того, чтобы что-то посоветовать мне нужно увидеть проблему. Можете сделать отдельную страницу на сайте (невидимую для посетителей) и разместить на ней форму, после чего дайте ссылку на страницу мне – я гляну.

      Ответить
  38. ОГРОМНОЕ СПАСИБО!

    Ответить
  39. Сейчас уже можно не вникать во все тонкости программирования, а воспользоваться готовыми решениями. Есть куча онлайн генераторов форм обратной связи. Первый что попался – formdesigner.ru. За несколько минут можно сделать классную форму, да еще и настроить интеграцию с другими системами (email рассылки или CRM). Но как говорится выбирать приходится самому. Я например отдаю предпочтение онлайн сервисам с их огромными возможностями. Решать вам!

    Ответить
    • На бесплатных тарифах функционал в сервисах не ахти какой. В вашем примере нет защиты от спама, вариант дизайна только один, всего 100 писем в месяц и можно указать только 1 почтовый адрес администратора – хочешь больше плати.
      В собственном скрипте подобных ограничений нет.

      Ответить
  40. Добрый день! Внедрили Вашу форму, все отлично работает. Но возникла одна проблема, нужно добавить еще одно поля, где будет список html. Пользователь выбирает нужное, сейчас эта часть в письме не отражается. buhshkola.e58.ru

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

      Ответить
    • Если вы хотите включить в комментарий код, заключите его в теги <code></code>.
      По другому некорректно отображается.

      Ответить
  41. <?php

    /* Задаем переменные */
    $name = htmlspecialchars($_POST["name"]);
    $email = htmlspecialchars($_POST["email"]);
    $tel = htmlspecialchars($_POST["tel"]);
    $message = htmlspecialchars($_POST["message"]);
    $vubor = htmlspecialchars($_POST["vubor"]);
    $bezspama = htmlspecialchars($_POST["bezspama"]);

    /* Ваш адрес и тема сообщения */
    $address = "pbh58@yandex.ru";
    $sub = "Сообщение с сайта http://buhshkola.e58.ru/";

    /* Формат письма */
    $mes = "Сообщение с сайта buhshkola.e58.ru.\n
    Имя отправителя: $name
    Электронный адрес отправителя: $email
    Телефон отправителя: $tel
    Сайт отправителя: $website
    Текст сообщения:
    $message
    Курсы:
    $vubor";

    if (empty($bezspama)) /* Оценка поля bezspama - должно быть пустым*/
    {
    /* Отправляем сообщение, используя mail() функцию */
    $from = "From: $name <$email> \r\n Reply-To: $email \r\n";
    if (mail($address, $sub, $mes, $from)) {
    header('Refresh: 5; URL=http://buhshkola.e58.ru/');
    echo 'Письмо отправлено, через 5 секунд вы вернетесь на сайт buhshkola.e58.ru';}
    else {
    header('Refresh: 5; URL=http://buhshkola.e58.ru/');
    echo 'Письмо не отправлено, через 5 секунд вы вернетесь на страницу buhshkola.e58.ru';}
    }
    exit; /* Выход без сообщения, если поле bezspama чем-то заполнено */
    ?>


    <p>
    <form name="vubor">
    Выберите курс?
    <br><input class=col type=checkbox name=option1 value=a1 checked>Экономика и бухгалтерский учет
    <br><input class=col type=checkbox name=option2 value=a2>Основы предпринимательской деятельности
    <br><input class=col type=checkbox name=option3 value=a3>Бухгалтер-калькулятор организаций общественного питания
    <br><input class=col type=checkbox name=option4 value=a4>Кадровое делопроизводство
    <br /><br><input type=submit value="Отправить">
    </form>

    </p>

    </form>
    </body>

    Эта инфа не приходит

    Ответить
    • в форме нет параметра action (куда слать данные) и method. Или это вы не полный код формы привели?

      Ответить
      • напишите плиз часть кода который работает с учетом валидации, с 25 строки и до конца.

        И неплохо было бы развить тему и прикрутить урок как прикрутить нормальную капчу.

        Ответить
  42. Код неполный, не приходит вот эта строка: $vubor = htmlspecialchars($_POST["vubor"]);

    Ответить
    • В присвоении переменных должно присваиваться значение переменной, а не названия формы. В вашем случае имена чекбоксов option1, option2 и т.д., а в присвоении стоит имя формы – vubor.
      Если делаете с чекбоксами, то под каждый из них своя переменная должна присваиваться и уже их прописываем в теле письма.
      Возможно вы перепутали с вариантом выбора из списка – команды select и option, там имя переменной будет одно, а значения будут подставляться в зависимости от выбранного варианта. В общих чертах это вот так должно быть:
      <select class="col" name="vubor">
      <option value="a1">вариант 1</option>
      <option value="a2">вариант 2</option>
      <option value="a3">вариант 3</option>
      </select>

      Ответить
  43. В письме нет того, что выбрали

    Ответить
  44. Спасибо Дмитрий за вашу чудесную форму!
    Скажите пожалуйста можно ли к ней добавить капчу ну или другую защиту?
    Заранее благодарен.

    Ответить
    • Защита в форму уже встроена, я в посте описывал ее, внимательнее присмотритесь.

      Ответить
      • Да но хотелось бы капчу прикрутить!

        Ответить
  45. Дмитрий, ну это реально сделать? Для того чтобы усложнить отправку письма всякими спамщиками ботами и так далее.
    Бывает письма приходят с сайта и оно пустое, не имени, ни телефона, ни текста письма. Хотя стоит – required – на всех полях, но это видимо как то обходят.
    Если заполнять все графы, хоть на английском, хоть на русском, все нормально приходит.

    Ответить
    • Все сделать реально, но я ее не делал. Погуглите на эту тему, информации про добавление капчи немало. По моим ощущениям овчинка выделки не стоит, капчу тоже некоторые боты распознают, а объем кода увеличится существенно.

      Ответить
  46. Спасибо Дмитрий за вашу отличную форму! Работает отлично, но у меня два косяка.
    1. В теле письма всё отображается корректно, а в имени отправителя (From: $name) латиница корректная а у кириллицы слетает кодировка. В чем проблема?
    Сайт на HTML, с принудительной UTF-8 (прописано в .htaccess) Кодировка contact-form.php тоже UTF-8 (проверял и редактировал в muCommander)

    2. Где в коде настраивается параметр Required? У меня отправляется даже абсолютно пустая форма! Выводит сообщение про 5 секунд и переходит на заданную страницу. Письмо приходит с незаполненной формой. Подскажите, как исправить?

    Ответить
    • 1. Ищите чем отличается код для вывода имени от остальных переменных. Раз все поля нормально, и только с именем проблема, значит должно быть какое-то отличие.

      2. Required – это стандартный параметр, относящийся к формам, его настройка не требуется. Его можно обойти, но для этого пользователь должен будет править код формы. Просто так отправка пустых полей работать не должна – покажите где у вас стоит форма, я взгляну.
      Если нужна более жесткая проверка, то можно реализовать с помощью дополнительного кода на php, где будет проверяться заполнение переменных, на этом форуме такой вариант обсуждали cyberforum.ru/php-beginners/thread1393025.html

      Ответить
  47. Помогите решить проблему с кодировкой, уже почти все попробовал.
    Письма приходят такие:
    ???????–???????»?µ????? ?· ??°???‚?° mzhk.com.ua

    ?†??’? ???–?????€?°?????????°: ???»?
    ?•?»?µ???‚?€???????° ?°???€?µ??° ???–?????€?°?????????°:
    ???µ?»?µ?„???? ???–?????€?°?????????°: ???????‹??
    ???µ???° ???????–???????»?µ?????: ?‹???????‹??
    ???µ????‚ ???????–???????»?µ?????:
    ?‹???????‹?????‹ ???€???‹??

    Сторінка – mzhk.com.ua/contact.html

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

      Ответить
      • изменял кодировку страницы contact-form.php
        код
        header(“Content-Type: text/html; charset=utf-8”);
        header(“Content-Type: text/html; charset=windows-1251”);
        header(“Content-Type: text/html; charset=cp1251”);

        не работает

        Ответить
  48. УЖЕ ВСЕ РАБОТАЕТ!

    Ответить
  49. Доброго времени суток, Дмитрий! Все сделал как Вы прописали и все нормально, но есть одно но – над строчкой через 5 секунд Вы перейдете на сайт… прописывается строчка
    Warning: mail(/home/u151596082/.logs/php_mail.log): failed to open stream: No such file or directory in /home/u151596082/public_html/contact-form.php on line 27. Подскажите пожалуйста как ее убрать.

    Ответить
    • 27 строка закомментирована – она не должна влиять на работу скрипта. Странно, что выдает у вас ошибку. Можете ее удалить вообще.

      Ответить
  50. Сообщения приходят вот такие:
    ????????? ? ????? ??? ?????????.

    ??? ???????????: Борис
    ??????????? ????? ???????????:
    ??????? ???????????: 8-123-4546789
    ????? ???????????:
    ????? ?????????:
    проверка связи

    Пробовал менять кодировку с помощью Notepad на UTF-8 без BOM в файлах html; php; css
    Не помогает. Все то же самое.
    Что еще сделать?

    Ответить
    • ENT_COMPAT использовали при назначении переменных? кодировка сайта какая?

      Ответить
      • Кодировка UTF-8 без BOM
        ENT_COMPAT использовал но только с cp1251

        Ответить
        • Переменные у вас нормальные приходят, значит html код формы работает нормально.
          То что с вопросиками прописывается в php файле обработчике – где-то в нем причина.
          А текст в переадресации как отображается?

  51. Подскажите, раньше отправлялись сообщения с данной формы, а после настройки smtp перестали отправляться выскакивает “Письмо не отправлено, через 5 секунд вы вернетесь на страницу…”
    Возможно в этом косяк: /* Отправляем сообщение, используя mail() функцию */ как исправить с mail на smtp?

    Ответить
    • Я работал только с mail, в других вариантах не компетентен. Узнайте у хостера, почему mail может не работать на их серверах.
      Попробуйте искать ответы по SMTP на форумах.

      Ответить
      • Форма просто ваша очень хорошая и раньше все работало, как по маслу) Ну ладно, буду спрашивать и reg.ru, почему не работает. Спасибо за ответ!

        Ответить
    • Текст в переадресации так же вопросами

      Ответить
  52. Здравствуйте. Хорошая форма, но возникли 2 вопроса:
    1) вставил дополнительную графу с выбором из списка, так он отличается по внешнему виду. Как бы это поправить?
    2) при переходе обратно через 5 сек. новая страничка открывается в том окошке, где до этого стояла форма, а не во весь экран.
    Спасибо.

    Ответить
    • Внешний вид определяется CSS стилями. В данной форме стилевое оформление для списков не задано, поэтому, для изменения их внешнего вида вам необходимо добавить данные в файл style.css.
      Команда header открывает страницу в том же окне, где была открыта форма, если форма во всплывающем окне, то и переадресация идет в нем. Я понял, что вы хотите получить, но как это реализовать не знаю, не знаю возможно ли вообще.

      Ответить
  53. Форма огонь! всем рекомендую! Простая, легкая в установке и редактировании!

    Ответить
  54. Здравствуйте, после ввода данных открывается пустое окно, ни куда не перекидывает. Помогите

    Ответить
    • А письма отправляются?

      Ответить
      • Спасибо, вопрос решился. Я забыл подключить страницу.

        Ответить
  55. Здравствуйте, поставил вашу форму на сайт(из изменений: стили слил в свой файл .css, и из формы убрал раздел “веб сайт”) и вот какая закономерность: прописал свою почту на gmail.com, и когда отправляю письмо (пишу в форме тоже ….@gmail.com) то всё норм приходит, а если не с gmail.com но ничего не приходит, Подскажите в чём может быть проблема.Спасибо

    Ответить
    • В папке спам смотрели? Может быть туда попадают сообщения.

      Ответить
      • нет не приходят ни куда, пробывал даже почту на хостинге таже ситуация

        Ответить
        • О том что письмо отправлено сообщение есть или пишет что ошибка и письмо не отправлено?

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

    Ответить
    • То есть, кодировка букв в письме нормальная, а некорректная только надпись о переадресации? Если так, то странно, в одном файле не может частично совпадать кодировка, частично нет. Даже не знаю в чем косяк.
      Попробуйте поменять кодировку php файла, посмотрите что получится.

      Ответить
      • Спасибо. А как поменять его кодировку?

        Ответить
        • Откройте файл в редакторе Notepad++ и при сохранении будет выбор возможных кодировок.

        • Ясно. Я просто в brackets учусь. Но там тоже наверняка можно это сделать.
          Спасибо. Сделать отпишусь.

        • откройте файл php в notepad ++ ? там есть меню сверху “кодировка”

    • если сайт в кодировке UTF8(без BOM) то попробуйте в php файле поставить просто UTF8

      Ответить
      • Я понял, а где ставить эту кодировку. В тексте скрипта или при сохранении файла файла?

        Ответить
    • пишет отправлено

      Ответить
    • пишет отправлено всегда

      Ответить
  57. спасибо, решил проблему удалением заголовков from и reply-to

    Ответить
    • Спасибо, разобрался. Изменил кодировку на utf8 с Dom. Все работает!

      Ответить
    • Главное, чтобы без них проблемы с ответами на письма не появились.

      Ответить
      • Дмитрий, у меня та же проблема – работает все замечательно, письмо приходит на почту, читается (сохраняла в UTF8(без BOM)), но надпись о переадресации некорректная (поставила текст на латинице все хорошо) и не идет возврат на сайт, видимо, потому что он в зоне рф, кириллицей (ставлю сайт на латинице – все в порядке, переходит). Пробовала просто UTF8, но там как раз появляются в письме разнообразные значки. Получается, что проблемы с кодировкой именно в тэгах header и echo. Из обсуждения не поняла – как устранить проблему. Спасибо!!!

        Ответить
        • Во многих случаях кирилические домены в чистом виде использовать нельзя, их надо преобразовывать в латиницу (punycode). Например, этим сервисом – wwhois.ru/punycode.php
          Переадресация должна заработать.

        • Большое спасибо! все заработало!!!

    • Samarik:
      2016-02-24
      спасибо, решил проблему удалением заголовков from и reply-to

      У меня было один в один, именно твой совет по удалению строчки:
      $from = “From: $name \r\n Reply-To: $email \r\n”;
      из файла: contact-form.php
      и помог.

      Автору спасибо за форму

      Ответить
      • мне удаление данной строки помогло с отображением в Outlook, приходили и заголовки и сообщения в не читаемом формате , до этого перепробовал кучу советов и вариантов, кодировка везде UTF8 без ВОМ

        Ответить
  58. Здравствуйте!
    Хороший скрипт.
    Все поставил (сейчас на тестовом домене отрабатываю адаптивный шаблон), но письма приходят вида (майлы изменил):
    ___________________________________________________________________
    24 фев. в 22:21
    Константин , cot13@yandex.ru

    Кому
    che2015@yandex.ru

    Сообщение со страницы КОНТАКТЫ

    Имя отправителя: Константин
    Электронный адрес отправителя: coot13@yandex.ru
    Телефон отправителя:
    Текст сообщения:
    Тест
    ______________________________________________________________________

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

    Кодировки все utf-8 без бом, крякозябры больше нигде не проявляются…

    Что может быть?

    Ответить
    • То есть, имя заданное одной и той же переменной выводится в заголовке письма иероглифами, а в теле письма нормально?

      Ответить
      • Да, Дмитрий, именно так!

        Это при указании почты отправителя ящиков и яндекса и гугла…

        Если имя отправителя дать латиницей – нормально отображается…

        Сервер Дебиан, панель ISP 4 pro, версию PHP сейчас не скажу, но ставил все в августе прошлого года из последних репозитариев.

        Ответить
        • Честно, нет даже мысли почему так. Первый раз встречаюсь с тем, что в одном и том же письме в разных местах по-разному. Могу посоветовать только метод научного тыка – пробуйте менять кодировки php файла.

        • Догадываюсь, что только “научный тык”….

          Посмотрим, по идее, перенесу по окончании все на мастерхост, там же поменяю и почту получателя, – может, танцы с будном и не потребуются :).

          Отпишусь (через недельку – две)

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

          Декодер после расшифровки пишет: CP1251 → UTF-8.

          Думаю, особо не гадать, почему так…. Попробую убрать из

          $from  = "From: $name <$email> \r\n Reply-To: $email \r\n";  

          переменную имени $name, чтобы не раздражала. А в теле письма все правильно. Оттуда и возьму информацию об отправителе.

        • Что нагуглил по теме:

          Заголовки писем автоматически перекодируются в ANSI, тогда как в теле письма допускается UTF-8.

          Почта гугла допускает заголовки в UTF-8, яндекса – нет. Вот у меня письма, уходящие с корпоративной почты домена на ящики сотрудников в Гугле, отображаются с нормальными заголовками, в Яндекс почту – с крякозябрами.

          Видел решения, но для меня ( "0" в php) они сложны – пробовал доставлять в заголовок перекодировку в base64 – не получилось. (www.spravkaweb.ru/php/sovet/mail)

        • Насколько я понял, надо переопределить переменную from, добавить между 28 и 29 строчкой кода вот такую строку (надо проверять, заработает или нет):

          $from = '=?utf-8?B?'.base64_encode($from).'?=';

  59. Как сделать чтобы и письмо отправлялось и файл автоматически скачивался с сервера?

    Ответить
    • Если в качестве целевого URL на который переадресовывается пользователь после отправки сообщения поставите ссылку на файл, то пользователю будет предлагаться скачать этот файл.

      Ответить
  60. да файл скачивается, но остается белая страница с надписью "Письмо отправлено, через 5 секунд вы вернетесь на сайт".

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

    Ответить
    • Строку с echo уделите и сообщения не будет. У меня приведет частный пример работы формы после отправки сообщения. В фигурных скобках может быть абсолютно любой html код – что хотите, то туда и вставьте.

      Только как одновременно переадресовать на главную и запустить скачивание я не знаю, либо одно, либо другое. Может кто-то более разбирающийся в php подскажет – на форумах поспрашивайте.

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

    Ответить
    • Может хостинг отключил функцию mail – узнайте в поддержке.

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

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

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

      Ответить
    • У вас Вордпресс на сайте, чего вы мучаетесь. Поставьте плагин Contact Form 7 – на порядок меньше настроек и проблем, инструкция здесь.

      Ответить
  64. Здравствуйте Дмитрий, спасибо за ответ, о Contact Form 7 я знаю и использую его. Дело в том что я занимаюсь Web разработкой, вернее начал заниматься недавно и начал с создания лендингов. Когда создаю ленд на Вордпресс то применяю этот замечательный плагин но многим клиентам нужна просто верстка с рабочими формами, поэтому я в поиске разных решений, в общем как то так.

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

      Ответить
  65. Здравствуйте, сделал все по инструкции и тоже нет переменных.

    Подскажите пожалуйста

    так выглядит код php

    <?php

    /* Задаем переменные */
    $name = htmlspecialchars($_POST["name"]);
    $email = htmlspecialchars($_POST["email"]);
    $tel = htmlspecialchars($_POST["tel"]);
    $ploshad = htmlspecialchars($_POST["ploshad"]);
    $collustr = htmlspecialchars($_POST["collustr"]);
    $coltrub = htmlspecialchars($_POST["coltrub"]);
    $coltoch = htmlspecialchars($_POST["coltoch"]);
    $colugl = htmlspecialchars($_POST["colugl"]);
    $address = htmlspecialchars($_POST["address"]);

    Ответить
    • Я бы настоятельно рекомендовал читать внимательно статью до конца, если что-то не выходит и полистать комментарии. Ваш случай описан многократно, под основным кодом php указана поправка которая требуется сайтам с кодировкой windows-1251

      Ответить
  66. Здравствуйте! Как отключить этот эффект, когда ты обновляешь страницу то форма обратной связи с уменьшенного формата быстро увеличивается нормальный формат (который необходим)?

    Ответить
  67. В стилях обязательно удалите этот блок:
    .contact_form p {
    width:650px;
    margin:7px 10px 7px 10px;
    padding:0px;
    }
    Иначе замучаетесь искать, что же поля в разнобой.
    Так как здесь указано для верхней части страницы, а у Вас будет в своей части.

    Ответить
  68. Здравствуйте! Проблемка у меня, помогите пожалуйста!
    всё сделал по инструкции, только CSS поменял но думаю не по тому глючит.
    Состав преступления:
    Когда нажимаю отправить поевляетя ошыбка 500 – Ошибка сервера.
    вот ее текст: “На сайте произошла ошибка при получении ru.reklamer.net/contact-form.php?sfera=wewqwe&doljnosti=asd&tekst=qf&file=&imia=fasegq&nomer=erg&mail=er%40saf.safc. Возможно, сайт временно недоступен или настроен неправильно.”
    Как думаете в чем здесь дело?

    Ответить
    • Я бы задал вопрос хостеру – ошибка 500 спрятана в серверных настройках скорее всего.

      Ответить
  69. Все время пишет что письмо не отправлено и перекидывает на выбранную мной страницу =( нид хэлп

    Ответить
    • Функция mail, видимо, не выполняется. Вопрос к тех. поддержке хостинга.

      Ответить
  70. На хостинге апаче стоит на винде. Мучался что htaccess не работает. Может как то связано?

    Ответить
  71. Пасиба

    Ответить
  72. Помогите, пожалуйста!
    Добавил код в style.css на сайт в самый конец, создал php в корне сайта на хостинге, добавил html код на страничку.
    Внес коррективы – указал свой адрес почты в форме и т.п. но все равно ошибка.
    подскажите, что делаю не так?

    Ответить
  73. Добрый день!
    Проблема с кодировками, что можно сделать? На клиент Outlook приходит письмо с кракозябрами, просмотр письма через Веб-клиент или Iphone всё нормально на русском.
    При открытии письма в Outlook он показывает, что кодировка Кирилица KOI-8, меняю кодировку на utf-8 (как и написан весь сайт+форма php, почему показывает кодировку KOI-8 при получении не понятно) и всё-равно кракозябры. Подставляя другие кодировки результат нулевой. Где может быть подводный камень?

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

      Ответить
  74. Свой вопрос решил.
    Спасибо.

    Ответить
    • Каким образом удалось решить, если не секрет? В чем была проблема?

      Ответить
      • Вроде путь не верно указал до php файла в админке.
        Ну а кодировку я решил не мудрить и после отправки выходит текст на английмком языке – Thank u!
        Так было быстрее.

        Сложнее было определить в цсс размер поля, чтобы не ломать шаблон при выводе на мобильных устройствах.
        Там базовая указана в 500 пикселей. Вручную убирал названия полей, остпвил лишь текст внутри поля – введите e-mail и т.п.

        Благодарю за код и файлы!

        +-+ С наилучшими пожеланиями, Альбинас Казлаускас Бизнес-тренер +7-981-721-65-58 pret-a-portrait.ru

        Ответить
  75. Помогите пожалуйста!
    Всё сделала как описано, с кодировкой все в порядке – UTF8.
    Письма приходят, НО! все поля пустые, не на русском не на латинице. В чем может быть проблема?
    (Форма внизу на сайте kasior-belgorod.ru)

    Ответить
    • Что корректировали в файлах? Может быть переменные из формы не отправляются в php обработчик – проверьте соответствие полей.

      Ответить
  76. Спасибо. Буду искать

    Ответить
  77. Благодарю за чудесный скрипт. И не надо платить горе программистам и жуликам из разных сервисов с абонентской платой.

    Ответить
  78. а на joomle 3 это можно реализовать?

    Ответить
    • Данный скрипт никак не привязан к определенной CMS, работает где угодно.

      Ответить
      • А можно подробней по поводу реализации на joomla. Вставил Html код на странице, прописал полный путь на стили и php код, форма на странице отображается, но при нажатии на кнопку ни чего не происходит, не читает php код

        Ответить
        • Значит, что-то неверно прописали. В значении атрибута action проверьте правильность пути к php обработчику.

  79. Здравствуйте. Перестали работать формы заявок на сайте.При нажатии кнопки заказать звонок,выдает сообщение” Ошибка скрипта send.php” . Перепробовал разные скрипты,без изменений. Хотя на другом хостинге копия этого сайта работает без проблем. Может есть какие специальные настройки на хостинге,которые причастны к обработке этих форм? Первый раз такая проблема. Буду очень благодарен за дельные советы.

    Ответить
    • Вам стоит обратиться в поддержку хостера. Может быть, они заблокировали функцию mail или что-то еще.

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

    Ответить
    • Данная форма обратной связи подходит и для Джумла и для Вордпресс и для других движков сайта, она не привязана никаким образом к определенной CMS. Все что требуется – это поддержка вашим хостингом PHP (сейчас это есть везде).

      Ответить
  81. Здравствуйте Дмитрий.
    Я добавил в стили:

    Выбор 1

    Выбор 2
    Выбор 3
    Выбор 4

    Выбор 5

    Выбор 6

    А как теперь сделать в php, что бы на почту приходил выбранный вариант?

    Ответить
    • В стиле для списка select name=’menu’, в value=”first”, value=”second” и так далее. Какую функцию написать в php для отправки на почту?

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

      Ответить
  82. //

    //Выбор 1

    //Выбор 2
    //Выбор 3
    //Выбор 4

    //Выбор 5

    //Выбор 6
    //

    Ответить
  83. Можете написать пример?

    Ответить
    • Когда вы задаете дополнительное поле, вы ему прописываете какое-то имя, в вашем примере – menu.
      Дальше значение этого поля вписываете в переменную через:
      $menu = htmlspecialchars($_POST[“menu”]); (я об этом в статье рассказывал в статье)
      Затем переменную вставляете в тело письма в блоке /* Формат письма */

      Ответить
      • Спасибо

        Ответить
  84. Добрый день, Дмитрий!

    Великолепная форма, работа супер!
    Установил на сайт – письма приходят, с кодировкой без проблем, спасибо!
    Не могу пока разобраться почему нет переадресации через “refresh”, письмо отправляется, но спустя 3 секунды – переадресации не происходит, на экране остается надпись “Письмо отправлено, через 5 секунд вы вернетесь на сайт” и все… более ничего к сожалению.
    В чем может быть загвоздка или причина?
    Заранее благодарен!

    Ответить
  85. Что-то с BOM записями.. решил вопрос через meta http-equiv=”refresh.)
    Думаю как теперь сделать refresh не на конкретную страницу, а на возврат к предыдущей, на шаг назад, туда откуда заполняли форму, так как форма не для одной странички. Буду благодарен совету.)
    Спасибо!

    Ответить
    • Когда делал форму не смог придумать как реализовать такое, моих познаний не хватило. Надо искать где-то по форумам.

      Ответить
  86. Испробовал все способы, письма приходят в виде

    п?п?я? п?я?п©я?п?п?п?я?п?п?я?: п?п?п?п?п? п?п?п?п?я?я?п?п?п?я?п? п?п?я?п?я?:
    п?п?п?п?я?п?п? п?я?п©я?п?п?п?я?п?п?я?: п?п?п?я? п?я?п©я?п?п?п?я?п?п?я?:

    Ответить
  87. Вроде бы все хорошо ни каких ошибок но письма не приходят,в чем может быть ошибка?

    Ответить
    • Варианта 2:
      – хостинг не дает выполнять отправку писем (функция mail);
      – почтовый сервис не пропускает входящие
      По первому пункту – обращайтесь в поддержку хостинг компании, по второму – попробуйте использовать разные почтовые сервисы.

      Ответить
  88. Не приходят на почту письма, почему?

    Ответить
  89. Все нормально, разобрался.

    Ответить
  90. Добрый день! Форма отличная, спасибо!
    Но есть проблемы:
    1. Письма не приходят на ящики mail.ru
    Написал в поддержку хостинга, они ответили что “Письмо не принял mail.ru, ответ Вы можете прочитать ниже:
    Jun 5 08:32:52 bmx0 [38521]: 1b9Qg5-0009zh-Ue ** dic_triumph@mail.ru R=dnslookup T=remote_smtp: SMTP error from remote mail server after end of data: host mxs.mail.ru [217.69.139.150]: 550 5.7.1 This message was not accepted due to domain owner DMARC policy (RFC 7489)”

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

    Тема: Сообщение с сайта
    От: dic_triumph@mail.ru
    Дата: Вск, 5 Июнь 2016 10:48
    Кому: mail@podgol.com
    Срочность: Обычное
    Настройка: | Скачать | Исходный текст

    ????????? ? ????? podgol.com.

    ??? ???????????: ??????????????
    ??????????? ????? ???????????: triumph234@mail.ru
    ??????? ???????????: +7-935-6578000
    ????? ?????????:
    ????????????!

    Подскажите пожалуйста как решить эти вопросы!

    Ответить
    • По первому пункту остается использовать другой почтовый сервис.
      А по второму – в комментариях были разобраны разные проблемы – что из этого конкретно вы пробовали, а что нет?

      Ответить
  91. Форма работает отлично!
    Только если все слова набирать латинницей.
    А если кириллицей, то получается чушь полная.

    Вот:
    Телефон отправителя: 907360734067`0476`45
    Текст сообщения:
    Хочу на семинар

    А если форму закачать на чистый домен, то все работает, а ни на одном сайте – нет!

    И ни один совет, ни один форум, ни один скрипт не помогает, хоть ты тресни!
    Что делать?

    Ответить
  92. оказалось фигня. нужна простая переконвертация кодировки переменных:

    $pn = iconv (‘utf-8’, ‘windows-1251’, $pn);
    $pname = iconv (‘utf-8’, ‘windows-1251’, $pname);
    $action = iconv (‘utf-8’, ‘windows-1251’, $action);

    Вопрос отпадает.

    Ответить
    • Благодарю, что отписались. Я про такое не знал, кому-то пригодится.

      Ответить
  93. Огромное спасибо за форму, все работает как часы, если разобраться с кодировками))
    Я добавил Вашу форму в модульное окно на сайте, и хотелось бы узнать, что нужно редактировать в php-коде формы чтобы во время отправки сообщения не осуществлялся переход на страницу “Письмо отправлено, через 5 секунд вы вернетесь на сайт XXX'”?
    Можно ли как-нибудь сделать так, чтобы статус отправки сообщения отображался в том же модульном окне, без перенаправления на другую страницу?
    Заранее спасибо!

    Ответить
    • вместо строк с 29 по 35 оставить только mail($address, $sub, $mes, $from)), тогда переадресации и сообщений не будет

      Ответить
      • Все сделал как Вы написали, но теперь вместо отправки сообщения выдает ошибку “сайт пока не может обработать этот запрос”

        Ответить
  94. Спасибо за статью! Всё очень просто и доходчиво. Как только настроил правильно окружение своего сервера, форма сразу запустилась. Только с sendmail и чёртовым TLS возился пару дней, будь неладны эти mail.ru и прочие…

    Ответить
  95. Одна только маленькая добавочка: Я удалил из запроса строки с e-mail и адресом сайта – они мне не нужны. Актуально – номер телефона. Только проверка по идентификатору “tel” не работает – в строку можно забить что угодно и письмо отправляется – защиты от невписывания номера телефона, к сожалению, нет. Есть другие решения

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

    Ответить
  97. А как сделать форму, чтобы в полях были:
    1. выбор по списку с несколькими вариантами
    2. выбор да или нет
    3. выбор одного из нескольких вариантов

    Ответить
    • У form есть много возможностей, все их описать в рамках статьи нереально. В частности select и option позволяют в качестве полей устанавливать выпадающий список, checkbox – элементы для выбора. Есть и другие, но думаю этих двух вам хватит, как их правильно настраивать можете посмотреть, например, здесь – ab-w.net/HTML/html_forms.php

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

    Ответить
  99. Разобралась сама)
    Все получилось! Еще раз большое спасибо за форму!

    Ответить
    • Евгения, здравствуйте.

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

      Ответить
  100. Хорошая форма, один вопрос, почему-то не работает перенаправление на сайт после отправки какие могут быть причины

    Ответить
  101. Добрый день! Долго искал простое и подходящее решение для установки формы обратной связи на свой сайт. Ваша – понравилась, но после отправки сообщения почему-то выпадает 404 ошибка с сообщением о том, что страница contact-form.php не найдена, хотя и она лежит в той же папке, что и страница, в которую вложена форма, и перенаправление после нажатия на кнопку “отправить” должно идти на главную страницу.
    Подскажите пожалуйста, в чем может быть проблема? Спасибо!

    Ответить
  102. C 404 ошибкой разобрался – по-разному файлы назвал. Но зато теперь вылазят две другие ошибки:
    во-первых, сообщения не отправляются, и я никак не могу найти ошибку в коде, если кто увидит, подскажите пожалуйста;
    и второе – когда выводится сообщение пользователю об отправке или неотправке письма – сообщение не выводится кирилицей, а “левыми символами” – что здесь может быть?

    Ответить
    • Единственная причина не отправки писем, с которой я сталкивался – запрет хостером функции mail (при условии, что ошибок в коде нет) – спросите у них на этот счет.
      По иероглифам вместо кириллицы – много обсуждений в комментариях выше – почитайте, скорее всего ваша проблема уже была решена.

      Ответить
    • У меня та же проблема была! Блин я забыл что на днях файл contact-form.php переименовал на contact_form.php то есть дефис – на _ поменял и забыл)

      Ответить
  103. Доброй ночи. Запрета не было(проверял созданием тестового php файла с самой простой функцией отправки писма – все отправлялось). Оказалось, что письма шли просто оставались на хосте с ошибкой “Mail failure – malformed recipient address”. Проблемму решил создав на хосте новый адресс, с которого сделал перенаправление уже на нужный мне(первоначальный), а в контакт-форм указал как раз новосозданный адрес на хосте.
    Но вот проблема с вывдом сообщений об отправке/неотправке письма остались – кирилица=иероглифы, латиница – все норм, и это при том, что в самом письме все приходит идиально: и тело и отправитель – на каком бы языке форма не замолняламь…
    кодировки везде одинаковые…

    Ответить
  104. Добрый день. Форма супер, но есть одно но, почему то один раз отправил с формы, всё пришло на мою почту, всё супер без каракулей и т.д., но вот после отправки, попробовал ещё раз отправить и письма уже не приходят)))

    Ответить
  105. Добрый день Читатели Блога, и те кто ищет форму обратной связи. Работаю я с системой DLE и хостингом hostiq^com^ua(вместо ^ ставим точку), сам переехал к ним от рег ру, по функционалу мне этот хостинг очень нравится, но суть моего поста не об этом.
    У DLE есть стандартная форма обратки. НО…
    Столкнулся с такой проблемой. (месяца 3-4 назад) конечный емайл на которые приходили письма был от системы Яндекс, заметил баг что перестало приходить половину писем! Меняю емайл, толку ни какого, делаю емайл-домен на хостинге, опять не приходят письма от mail.ru и кривых емайлов… Меняю хостинг (потому что тех под сома не понемала в чем дело, показывала логи и ошибки и говорила что у нас всё исправно. Но ведь и в правду на хостинге всё исправно было! И решил вс равно проверить весь сайт на другом хостинге). Сменив хостинг, заливаю весь сайт, сайт становится на ура всё отлично! Настало время тестов, и опять та же лажа! Меняю форму обратной связи на эту что в верху автор прописал, и опять тот же баг!!!

    Начал искать пути решения этого трабла! Так как в программирование не очень селен, а за помощью обращаться не люблю, ведь тогда попадёт весь интерес решения задачки, перешурстил весь Гугл и Яндекс! Толи мои ключевые запросы были туповатые, да я и если честно не мог правильно сформулировать запрос XD)))

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

    То есть есть сайт (я занимаюсь распространением косметики) к примеру gid-avon.ru (это моя творческая студия в ней и ведутся все разработки, а потом переносятся на основной домен)
    И создаем к примеру два емайла Получатель pol@gid-avon.ru и отправитель otp@gid-avon.ru

    Ответить
  106. Создаем форму обратной связи с дополнительными полями ЕМАЙЛ! (куда будет вписываться емайл клиента, а емайл отправитля otp@gid-avon.ru будет равен $email смотрим в коде)
    Тут указаны мои дополнительные поля, кому что не понравится просто тупо удалите их из php и html разобраться все очень просто описывать этого не буду.

    /* Задаем переменные */
    $name = htmlspecialchars($_POST["name"],ENT_COMPAT, ‘cp1251’); /* Фамилия Имя Отчество: */
    $f1 = htmlspecialchars($_POST["f1"]); /* Ваш E-Mail: (емайл клиента!!!!) */
    $f2 = htmlspecialchars($_POST["f2"],ENT_COMPAT, ‘cp1251’); /* Почтовый индекс: */
    $f3 = htmlspecialchars($_POST["f3"],ENT_COMPAT, ‘cp1251’); /* Дата рождения в формате ДД/ММ/ГГГГ */
    $f4 = htmlspecialchars($_POST["f4"],ENT_COMPAT, ‘cp1251’); /* Серия и номер паспорта */
    $f5 = htmlspecialchars($_POST["f5"],ENT_COMPAT, ‘cp1251’); /* Код подразделения */
    $f6 = htmlspecialchars($_POST["f6"],ENT_COMPAT, ‘cp1251’); /* Дата Выдачи (дд/мм/гггг) */
    $f7 = htmlspecialchars($_POST["f7"],ENT_COMPAT, ‘cp1251’); /* Кем выдан */
    $f8 = htmlspecialchars($_POST["f8"],ENT_COMPAT, ‘cp1251’); /* Адрес Проживания (обл, город, улица, дом, кв) */
    $f9 = htmlspecialchars($_POST["f9"],ENT_COMPAT, ‘cp1251’); /* Адрес Регистрации (обл, город, улица, дом, кв) */
    $f10 = htmlspecialchars($_POST["f10"],ENT_COMPAT, ‘cp1251’); /* Были ли Вы раньше уже Представителем Avon? */
    $tel = htmlspecialchars($_POST["tel"]); /* Номер вашего телефона */
    $bezspama = htmlspecialchars($_POST["bezspama"]); /* АНТИ СПАМ */

    /* Ваш адрес и тема сообщения */
    $address = "pol@gid-avon.ru"; /* Ваш E-Mail: (емайл получателя!!!) */
    $sub = $f1; /* теме сообщения присваеваем сам код емайла клиента */
    $email = "otp@gid-avon.ru"; /* а тут мы показываем что наш емайл будет являться отправителем */

    Ответить
  107. И ёщё, косяк ридиректа не в ХОСТИНГЕ!!! А в том что у вас кодировка файлов не совпадает!!!! Именно из за этого и не работает ридирект! В чем был у меня косяк.
    DLE кодировка win 1251
    Я создаю статическую страницу и кладу туда нужный мне код хтмл вызывающий форму! Но, так как движок создает страницу с win1251 то кодировка не совпадает с php! и вследствие этого не срабатывает переброс на нужную страницу! Решение, если мы хотим что бы форма вписалась в дизайн, не то делаем так переходим на ту страницу где мы хотим её повесить, нажимаем Ctrl+U и копируем весь исходник страницы в файл с расширением .html мета тег с кодировкой удаляем и вписываем utf8 И на всякий случай прогоняем через кодировку utf-8 без BOM, стираем ненужный контент и вставляем нашу форму! ВСЁ!

    Ответить
  108. И ещё из этих исходников я выкинул мне ненужное поле $message если что скопируйте всё что нужно из исходников автора блога!

    Так, автор блога я дарю тебе новую ветку для размышление, так как описанное мною выше можно переписать и написать очень качественную статью. Суть в том этого урока, что больше ни когда ни одного письма не затеряется!!! Что очень важно в моей работе (одна такая заявка не пришедшая ко мне несёт убыток от 500 до 1000 рублей!!! )

    Почему я посчитал нужным выложить это здесь? Да потому что я взял исходники автора)))

    Ниже найдёте ссылку на архив

    Ответить
  109. https://yadi.sk/d/JUJdRYB9tDnza

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

    ВСЕМ ДОБРА)

    Ответить
  110. Простите о печатался в php вам нужно указать вместо
    $sub = $f2; /* теме сообщения присваеваем сам код емайла клиента */

    Вот это
    $sub = $f1; /* теме сообщения присваеваем сам код емайла клиента */

    так как $f1 это емайл
    а $f2 это индекс поля

    В общем ни когда не бойтесь эксперементировать!

    Ответить
  111. Стоит задача запустить данную форму на сайте на бесплатном хостинге. Функция mail() на таких хостингах, как показывает практика, или не работает, или работает через раз. А нужен стабильный результат. Нашёл обход – использовал данный скрипт в сочетании с библиотекой github.com/PHPMailer/PHPMailer/ на бесплатном хостинге, где работает ВордПресс.
    Работало до последнего времени. Однако: 1. как выяснилось, почему-то работает с Хромом, но не работает с IE. 2. и в Хроме тоже перестало работать. Дмитрий, прошу помочь. Готов выслать исходники для анализа.

    Ответить
    • Начните с запроса в тех поддержку по поводу работоспособности функции.
      Работает ли форма в том виде в каком выложена у меня без ваших изменений?

      Ответить
  112. …все возможные фокусы с кодировками перепробовал. Все файлы в UTF-8 без BOM, проставлено в HTML и в PHP в header() на тему кодировки также танцы с бубном выполнены. Устал танцевать. К хостеру ещё не обращался, вдруг он чего-то там с глобальными настройками кодировок намудрил. Если Вы, Дмитрий, рассудите, что всё у меня по уму, буду с хостером вместе танцевать.

    Ответить
    • Алексей, скиньте мне на почту ваши исходники, посмотрю что у вас там. barsorel174ru@yandex.ru

      Ответить
  113. Дмитрий, добрый день. Столкнулся с огромной проблемой. У меня html сайт. Установил Вашу форму (за нее отдельное спасибо), но письма приходят с вопросительными знаками. То есть, кроме почты отправителя (которая указана латиницей) я больше ничего не вижу кроме каракуль.
    Самое интересное то, что я пробовал делать все, что указано в этой статье. Сайт у меня на UTF-8, но все равно перепробовал все. Результат нулевой.
    Кстати, прошлая форма связи имела такие же проблемы.
    P.S. Письма отправленные через форму могу прочитать только со штатных почтовых клиентов продукции Apple (то есть, если я открою пришедшее мне письмо с Айфона или Айпода, то я четко вижу все содержимое, а если с компьютера или андроида, то одни вопросительные знаки).
    Прошу помочь мне, если это возможно. Моя почта 1984.denis.smirnov@gmail.com
    Заранее Вам благодарен

    Ответить
    • Здравствуйте, Денис. Все известные мне причины и решения в комментариях уже обсуждались. Возможно, вы пропустили какое-то из них.
      Что именно вы делали и какой результат получался?

      Ответить
      • Дмитрий. Для начала я проверил в какой кодировке мой сайт. Сайт в UTF-8
        1. Все равно попробовал добавить ENT_COMPAT, ‘cp1251’);
        Получалось примерно следующее:
        $name = htmlspecialchars($_POST[“name”], ENT_COMPAT, ‘cp1251’);
        $email = htmlspecialchars($_POST[“email”]);
        $tel = htmlspecialchars($_POST[“tel”]);
        $website = htmlspecialchars($_POST[“website”]);
        $message = htmlspecialchars($_POST[“message”], ENT_COMPAT, ‘cp1251’);
        $bezspama = htmlspecialchars($_POST[“bezspama”]);
        Это также не помогло и я убрал эту функцию, потому как с ней и без нее результат один и тот же.
        2. Через notepad++ преобразовывал в UTF-8 без BOOM и с другими вариациями. Все равно результата никакого.

        Ответить
        • В utf-8 сохранены все файлы и эта же кодировка указана в метатеге страницы? Может быть какой-то из файлов не в ней?
          А если установить кодировку 1251 на сам сайт и на скрипт, что выходит?

  114. Дмитрий, доброе время суток!
    Спасибо большое за форму, и достаточно все понятно и подробно расписано.
    Но я не могу понять, почему выскакивает предупреждение в строке, если из вашего примера, то в 30 строке, все сообщения доходит, все в правильной кодировке, но нет обратного перенаправления на установленную страницу. Помогите, направьте куда надо.
    Пробовал на разных хостингах. Ошибка такая:
    wpesshop.ru.host1491574.serv63.hostland.pro/forms/ – на этом ресурсе.
    Warning: Cannot modify header information – headers already sent by (output started at /home/host1491574/wpesshop.ru/htdocs/www/forms/contact-form.php:1) in /home/host1491574/wpesshop.ru/htdocs/www/forms/contact-form.php on line 44
    Письмо успешно отправлено, сейчас вы вернетесь на сайт yandex.ru

    Ответить
  115. Дмитрий, проблема решилась таким образом.
    в 28 строке убрал в конце строки лишний пробел, возможно он не влияет не на что, и все три файла заново преобразовал в UTF-8 без BOM. и все заработало

    Ответить
    • Да, пробел там ни к чему, правда, у меня он ни на что не влиял.

      Ответить
  116. Дмитрий скажите мне такую вещь, после отправки формы выходит сообщение о том что оно отправилось, но оно не пришло, проверяю через open server, вообще через него оно отправиться или нужно непосредственно через хостинг это делать?

    Ответить
    • Open Server, насколько я знаю, предназначен для локальной работы сайта, не уверен, что он функцию mail выполняет. Я им не пользуюсь, не могу на 100% ответить.

      Ответить
      • Ну я так понимаю если сайт будет на хостинге, то скрипт отправки письма выполнится 100%

        Ответить
        • Если в настройках хостинга нет запрета, то все работать должно

  117. А как изменить фон для сообщения :
    Ваше письмо отправлено, через 5 секунд вы вернетесь на сайт?
    Спасибо

    Ответить
    • этот текст может быть заменен любым HTML кодом с тегами задающими нужный формат

      Ответить
      • Дмитрий, а можно слегка подробней и если можно с небольшим примером.
        Не совсем вас понял.
        Спасибо

        Ответить
  118. Здравствуйте! скрипт работает на ура! письма отправляет, правда они в спам падают, но это поправимо. я уткнулся в проблему со стилями. открываю локально демо-индекс, всё правильно, заливаю на хостинг этот файл (без изменений кода) добавил только цвет фона, поля рассыпаются по странице, вот так: такси-горки10.рф/feedback.html. понимаю что причина банальна, но в 5 часов утра мой мозг отказывается искать проблему. если не сложно, ткните носом, где я накосячил! спасибо!

    Ответить
    • В стилях для объекта .contact_form label удалите свойство float: left;, без него ровно форма встает.

      Ответить
  119. спасибо! встало как надо!

    Ответить
  120. Как в Вашей форме вообще убрать перенаправление на другую страницу.
    Т.к я хочу сделать всплывающее окно

    Ответить
    • строки с командой echo удалите

      Ответить
  121. Notice: Use of undefined constant «name» – assumed ‘«name»’ in /var/www/cl68580/data/www/centrofon.ru/contact-form.php on line 6 Notice: Undefined index: «name» in /var/www/cl68580/data/www/centrofon.ru/contact-form.php on line 6 Notice: Use of undefined constant ‘cp1251’ – assumed ‘‘cp1251’’ in /var/www/cl68580/data/www/centrofon.ru/contact-form.php on line 6 Warning: htmlspecialchars(): charset `‘cp1251’’ not supported, assuming iso-8859-1 in /var/www/cl68580/data/www/centrofon.ru/contact-form.php on line 6 Notice: Use of undefined constant «message» – assumed ‘«message»’ in /var/www/cl68580/data/www/centrofon.ru/contact-form.php on line 9 Notice: Undefined index: «message» in /var/www/cl68580/data/www/centrofon.ru/contact-form.php on line 9 Notice: Use of undefined constant ‘cp1251’ – assumed ‘‘cp1251’’ in /var/www/cl68580/data/www/centrofon.ru/contact-form.php on line 9 Warning: htmlspecialchars(): charset `‘cp1251’’ not supported, assuming iso-8859-1 in /var/www/cl68580/data/www/centrofon.ru/contact-form.php on line 9 Письмо не отправлено, через 5 секунд вы вернетесь на страницу

    Выдает такую ошибку, до этого постоянно было ” ошибка в такой-то строчке contact-form”
    Что делать?

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

      Ответить
  122. Большое спасибо!

    Ответить
  123. Доброе время суток!
    Я обратился в тех поддержку хостинга reg.ru и вот что они мне ответили/
    —-
    Судя по заголовкам, данная проблема возникает из-за того, что в проблемном сообщении отсутствует заголовок вида:

    Content-type:text/plain; charset = utf-8

    По стандарту rfc1341, в случае отсутствия заголовка, указывающего кодировку сообщения, почтовые клиенты используют кодировку по умолчанию(US-ASCII). Так как в проблемном сообщении отсутствует соответствующий заголовок, почтовый веб-интерфейс не корректно отображает кириллические символы в проблемных сообщениях. При этом некоторые почтовые клиенты(и почтовые веб-интерфейсы GMail) в случае отсутствия соответствующего заголовка, указывающего кодировку сообщения, пытаются самостоятельно подобрать подходящую кодировку, что-бы подобные сообщения отображались корректно. К сожалению, Roundcube не поддерживает подобный не стандартный функционал.

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

    $from.= “Content-type: text/plain; charset=\”utf-8\” \r\n”;

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

    Ответить
    • Благодарю, что отписались. Я с такой проблемой не сталкивался, кому-то наверняка поможет решение.

      Ответить
    • Спасибо большое, помогло!

      Ответить
  124. Здравствуйте!
    Форма замечательная, понятна и легко редактируется. Использую под быстрый заказ в 1 клик na-yarmarku.ru/plitka-dlya-kuhni-ispaniya-monopole-antique.shtml , давно искал и вот вроде нашел большое человеческое спасибо!!!
    Единственное, с чем запарка, ровно как и у многих – абракадабра в почте.
    Если все оставлять как есть – все что обработано htmlspecialchars приходит нечитаемо, (типа васек трубачев), остальное в тексте письма – нормально. Добавление ” , ENT_COMPAT, ‘cp1251’ ” ситуации не меняет. Перекодировка contact-form.php, index.html, styles.css в utf-8 с ВОМ или без него дает “результат”: сообщение в форме, что письмо отправлено – нечитаемо, имя отправителя и заголовок письма – нечитаемо, текст письма – нормально. Добавление различных кодов из обсуждения – результат “0”, а так хочется довести до ума)

    Ответить
  125. Здравствуйте!
    Пытался убрать “абракадабру” всеми перечисленными в обсуждении способам, но получается что либо в тексте письма кириллица нечитабельна, либо в заголовке и “письмо отправлено” в форме связи каляками написано. Декодер в каждом случае пишет CP1251 ? UTF-8. Хостинг сказал, что проблемы в коде, но помочь не может.

    Ответить
  126. Спасибо! Все работает, пришлось немного помудрить так как самописная CMS’ка) Да и стили даже не пришлось использовать, как раз под дизайн подстроился.

    Ответить
  127. Спасибо. Всё грамотно и понятно объяснил.

    Ответить
  128. У меня почему-то приходят все пустые поля, одни названия, значений нет.

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

    Ответить
  129. Я попробовал но у меня не вышло((( Решил, что не судьба и стал юзать конструктор форм testograf.ru/ru/blog/forma-obratnoj-svyazi.html Там можно создать любое количество форм, контактных, форм обратной связи или форм заказа для сайта. Короче все, что угодно. Добавляйте любые поля, включая загрузку файла.

    Ответить
    • В бесплатном варианте нельзя отключить рекламу сервиса в форме.

      Ответить
      • да это фигня, за то быстро и удобно

        Ответить
  130. Добрый вечер!

    <?php

    /* Задаем переменные */
    $name = htmlspecialchars($_POST[«name»], ENT_COMPAT, ‘cp1251’);
    $email = htmlspecialchars($_POST["email"]);
    $tel = htmlspecialchars($_POST["tel"]);
    $website = htmlspecialchars($_POST["website"]);
    $message = htmlspecialchars($_POST[«message»], ENT_COMPAT, ‘cp1251’);
    $bezspama = htmlspecialchars($_POST["bezspama"]);

    /* Ваш адрес и тема сообщения */
    $address = "info@ddumsk.ru";
    $sub = "Сообщение с сайта ddumsk.ru";

    /* Формат письма */
    $mes = "Сообщение с сайта ddumsk.ru.n
    Имя отправителя: $name
    Электронный адрес отправителя: $email
    Телефон отправителя: $tel
    Сайт отправителя: $website
    Текст сообщения:
    $message";

    if (empty($bezspama)) /* Оценка поля bezspama – должно быть пустым*/
    {
    /* Отправляем сообщение, используя mail() функцию */
    $from = "From: $name rn Reply-To: $email rn”;
    if (mail($address, $sub, $mes, $from)) {
    header(‘Refresh: 5; URL=http://ddumsk.ru/partner.htm’);
    echo ‘Письмо отправлено, через 5 секунд вы вернетесь на сайт http://ddumsk.ru‘;}
    else {
    header(‘Refresh: 5; URL=http://ddumsk.ru’);
    echo ‘Письмо не отправлено, через 5 секунд вы вернетесь на страницу http://ddumsk.ru‘;}
    }
    exit; /* Выход без сообщения, если поле bezspama чем-то заполнено */
    ?>

    На ответной странице всё отображается корректно
    На почту приходит всё без крокозябров, но имя и тескт сообщения не отображается.
    Перепробовал уже всё, что мог :(((
    Буду признателен за помощь!

    Ответить
    • У вас поля для имени и текста единственные заданы в cp1251, остальные без этого – копайте в данном направлении.

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

    Ответить
    • В папке спам писем нет

      Ответить
      • В результате долгих ковыряний оказалось, что отправляет письма только на почтовые ящики в зоне .com., как в примере. Если мыло в зоне ru письмо не отправляет.

        Ответить
        • Стоит задать вопрос хостеру, почему не отправляются письма. Сам скрипт на yandex и mail почту письма шлет нормально.

        • не совсем правильно написал, письма отправляются на все ящики, но если только отправитель указал свое мыло в зоне com, если в графе email стоит мыло в зоне ru, письма не приходят. Это тоже настройки хостингах? На двух разных хостах тоже самое.

        • Это было замечено ещё на движке Дле. У меня был сайт где форма обратной связи была типа “корзины” ну или “Стол заказов”. Ну и как то заметил что стало мало заказов приходить на почту… Писал хостерам – те писали мы не виноваты в этом) Хостинг был Рег ру, переехал на другой хостинг, проблема осталась… После всех попыток понять в чем проблема у меня сдали нервы. И воспользовался таким способом
          Создаем переменную
          $f1 = htmlspecialchars($_POST[“f1”],ENT_COMPAT, “cp1251”); /* Ваш E-Mail: */ в этот блок и будет вводиться емайл вашего клиента.

          $address = “bla@yandex.ru”; (конечный емайл)

          $email = “bla2@yandex.ru”; (отправочный емайл)

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

  132. Вопрос решен следующим образом.

    В строчке
    $from = “From: $name \r\n Reply-To: $email \r\n”;

    Удалил From: $name \r\n
    Оставил только $from = “Reply-To: $email \r\n”;

    Письма стали приходить.

    Комментарий хостера:
    “В заголовок From необходимо вписывать всегда почтовый ящик Вашего сайта, а вот в заголовки Return-Path или Reply-to необходимо указывать ящик, который указал пользователь. Если вписывать в заголовок From ящик пользователя, то такое письмо будет являться поддельным и блокироваться почтовым сервисом.”

    Ответить
    • Добавил ваше решение в текст статьи, благодарю за помощь. Я с такой проблемой не сталкивался, но кому-то пригодится.

      Ответить
  133. Прошу прощения написал не точно
    В строчке
    $from = “From: $name \r\n Reply-To: $email \r\n”;

    Удалил From: $name \r\n

    Оставил только
    $from = “Reply-To: $email \r\n”;

    Ответить
  134. Комментарии здесь режут $email после From

    Ответить
  135. Добрый вечер.
    Сайт ddumsk.ru и форма PHP в UTF-8.
    Всё отлично работает! Только не приходит имя и текст отправителя :(((
    В чём может быть причина?

    Ответить
  136. Здравствуйте, форма работает, отправляет.
    Но он не пишет кто отправил, его сотовый, его почту.(Сайт на хостинге, сделано все точь в точь как у вас.)

    Ответить
  137. Добрый день!

    Уже проскакивал вопрос о том, как продублировать письмо и тому, кто заполнял форму на сайте.
    Можете ли выложить код для тех, кто не силен в пхп?
    Спасибо!

    Ответить
    • После команды mail($address, $sub, $mes, $from)), ставим точку с запятой (;) и пишем еще одну функцию mail, только с другими переменными:
      вместо $address – $email
      вместо $from – $address
      $sub – это тема сообщения, ее можно оставить без изменений, а $mes – это текст сообщения – вместо нее по аналогии прописать переменную типа $mes1 с нужным текстом письма

      Ответить
      • Дмитрий, спасибо за ответ.
        Вопрос синтаксиса: выскакивает ошибка:
        Parse error: syntax error, unexpected ‘{‘ (то есть самая первая фигурная скобка)

        if (mail($address, $sub, $mes, $from)); (mail($email, $address, $mes)){
        header(‘Refresh: 0; URL=/success’);
        }
        else {

        header(‘Refresh: 0; URL=/badrequest/’);}
        }
        exit; /* Выход без сообщения, если поле bezspama заполнено спам ботами */
        ?>

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

        Ответить
        • пробел поставьте перед ней

        • К сожалению, пробел не помог.

        • Я не внимательно посмотрел, делаем функцию вот так (вместо && можно попробовать and – это логические “И” в php – нам надо выполнение обоих условий):
          if (mail($address, $sub, $mes, $from) && mail($email, $address, $mes)) {

      • еще у вас во второй функции mail 3 переменных, вы пропустили $sub

        Ответить
  138. Спасибо автору, всё работает.

    Ответить
  139. Добрый день Дмитрий!
    Форма хорошая, установил на сайт во всплывающем окне. Жаль при отправке выдаёт 404.
    В чём может быть проблема? Не нужно ли, помимо html, css и php ещё и подключение к js?

    Ответить
    • А зачем там js, если она на php?
      Какой адрес страницы у 404 ошибки?

      Ответить
  140. Просто выдаёт путь до файла contact-form.php и ошибка 404…
    посмотрите:
    goszakaz24.ru/katalog-uslug/stroitelstvo-zdanij-i-sooruzhenij/
    кнопка “заказать услугу” вверху.

    Ответить
    • Вы убрали из скрипта переадресацию на заданную страницу? Поэтому после отправки браузер остается в файле contact-form.php. Либо верните эту команду, либо надо городить огород типа как в этой теме обсуждается – cyberforum.ru/php-beginners/thread1407509.html

      Ответить
      • В том то и дело, что ничего из Вашего скрипта не убирал (за исключением поля “сайт”), а в переадресации только поменял адрес Вашего сайта по умолчанию, на свой.
        Но тем не менее, отправка письма тоже не происходит.

        Ответить
        • А, так вы не написали, что отправки письма нет. Значит у вас скрипт не выполняется совсем. Задайте вопрос хостеру – может быть у них нет поддержки какой-либо функции.

        • Добрый день, Дмитрий. Спасибо за ответ. Но так как в нём нет функции ответа, я пишу новое сообщение.
          Функция mail() на хостинге работает. В чём может быть причина не отправки письма?

        • А зачем вам нужно несколько разных способов выводить форму? У вас же стоит плагин contact form7, почему через него все не выведете?

  141. Добрый день.
    Такая ошибочка:

    Notice: Undefined variable: email in /var/www/altastroynn/data/www/altastroy-nn.ru/templates/sj_maxshop/contact-form.php on line 28

    Помогите решить пожалуйста

    Ответить
    • Не задана переменная email, проверяйте ее, что-то не так сделали с этой переменной либо в php, либо в html коде формы

      Ответить
  142. плагин contact form7 установлен с перезагрузкой страницы. Переадресация на другую страницу – mail.php. После отправки сообщения, появляется – “Ваше сообщение успешно отправлено”. Задание у меня сделать форму во всплывающем окне.
    Так вот вставляя шорт-код от contact form7, у меня при отправке сообщения информацию не выводит, а просто окно пропадает. А при повторном нажатии на кнопку – открывается окно уже с сообщением об отправке, которое пропадает только после перехода на другую страницу. Не могу понять в чём загвоздка. Ну и в принципе хотел разобраться в работе данного узла без применения плагина.

    Ответить
    • Как вариант, проверять с какого места php код не выполняется. Я бы попробовал убрать функцию проверки на спам и отправки сообщения, а вывел бы сначала просто список заданных переменных – этим проверим передаются ил данные из формы. Дальше заново подключать удаленные функции.

      Ответить
      • Дмитрий, вот смотрите какая оказия. Убрал из php кода – action=”contact-form.php”, – всё то же самое, переходит на 404: Страница не найдена. Но, тестовое письмо на почту доставлено. Есть у Вас какие соображения на этот счёт?

        Ответить
        • action вы убрали не из php кода, а из html кода формы. Может быть у вас разные формы конфликтуют между собой (contact form 7 и эта)?

  143. Убрал из html конечно. Но непонятно, как в таком случае система находит php обработчик? Ведь в html коде именно action=»contact-form.php» – указывает на него. Отправка письма идёт.

    Ответить
    • Дмитрий, я деактивировал contact form 7, и письма перестали отправляться. Значит они отправлялись обработчиком contact form 7.
      А новый обработчик так и не видит. Я вернул action=»contact-form.php», и всё равно ничего не меняется. 404 и отправки нет.

      Ответить
  144. Предположил, что проблема в модальном окне. Установил форму на свободное поле, без модалки, – всё те же проблемы.

    Ответить
  145. Дмитрий, несмотря на то, что файл contact-form.php у меня находится в той же папке, я прописал путь до него. Это решило проблему. Начало появляться сообщение об отправленном письме и “через 5 мин вы вернётесь….”.
    Но сообщение на почту не приходит.

    Ответить
    • Хорошо, часть проблемы устранили. Конфликт форм можно убрать переименованием php файла – задайте ему любое произвольное имя и в action пропишите его – это чтобы абсолютный путь не надо было прописывать.
      Теперь насчет не прихода писем:
      1. Проверьте папку спам, если нет, то
      2. В конце статьи есть пункт “Частые проблемы” – там описано одно из наиболее распространенных решений, если не помогло, то
      3. В комментариях к статье вопрос с не приходом писем всплывал часто – почитайте, возможно у кого-то была аналогичная проблема, если не помогло, то будем думать дальше.

      Ответить
  146. Я всё проверю, хотя это не спам – точно.
    Дмитрий, а есть способ сообщение об отправке получить в том же всплывающем окне, что и форма?

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

      Ответить
  147. Упростил значение $from и письма начали приходить. Спасибо Дмитрий! Теперь буду искать решение по выводу сообщения.

    Ответить
    • Если мне попадется решение – выложу тут или ссылку вставлю.

      Ответить
  148. Большое спасибо!!!!!!

    Ответить
  149. Здравствуйте, подскажите форма на сайте выглядит коряво. Строчку добавил. $название = htmlspecialchars($_POST[“название”], ENT_COMPAT, ‘cp1251’); нет изменений. Все файлы в одной папке лежат. Куда копать?

    Ответить
    • Коряво в смысле дизайн съехал или буквы иероглифами? Форму используете как отдельный html файл или добавляете внутрь кода страницы?

      Ответить
      • разобрался, спасибо за форму!

        Ответить
  150. Здравствуйте. Скажите пожалуйста, почему не происходит переход на обратную страницу? т.е. сообщение отправилось, новое окно “Письмо отправлено, через 5 секунд вы вернетесь на страницу naverx.ru/contact.html” Но, нет возврата? За ранее, спасибо.

    Ответить
    • 30 строку в скрипте пришлите посмотреть.

      Ответить
      • Спасибо за скорый ответ))30 строка:

        header(‘Refresh: 5; URL=http://naverx.ru/contact.html’);

        Ответить
        • Хм, думал может что-нибудь изменили при правке кода, но вроде все в порядке.
          Пока есть только одна мысль – спросить у хостера, может какие-то особенности для refresh у них есть, почему функция не выполняется.

      • А можно на странице, там где “Сообщение отправлено, через 5 секунд вернетесь”, добавить кнопку “Вернуться обратно”?

        Ответить
      • или для этого требуются серьезные знания? Я просто, только-только начал осваивать html, и чуть-чуть поглядываю на php.

        Ответить
        • Вот посмотрите на описанный здесь вариант – phpfaq.ru/newbie/na_tanke#http, по идее после отправки должно возвращаться на прежнюю страницу. Пока не пробовал, можете сами протестить вариант. Если получится – не пропадайте и отпишитесь, я добавлю в статью.

      • Спасибо за подсказку, но как-то для меня сложно решать подобного рода вопросы. А так, проблему решил методом добавления между 32 и 33 строкой в php файле. Хоть как-то))

        Ответить
        • что именно добавили?

      • Да, странно, что я код не прописал. Приношу извинения. А код выглядит так: “” И благодаря данному коду, после странички “Спасибо” браузер возвращается обратно на страницу “контакты”.

        Ответить
        • код в ответ автоматом не вставляется, надо вписать его в тег <code>код</code>

      • У меня к вам вопрос, вы не подскажете, вот только что создал простенький сайт, выложил в “яндекс.вебмастер” , а там написано:”Данные скоро появятся”. Что делать дальше с этим сайтом? и когда сайт появится в поисковике яндекса? За ранее, спасибо.

        Ответить
        • Как роботы Яндекса соберут по нему информацию, так и отобразятся данные. Сколько точно по времени это займет сказать не могу – зависит от сайта. Чаще всего меньше суток.

      • Теперь понял)) <meta http-equiv="refresh" content="5;http://naverx.ru/contact.html";>

        Ответить
      • Понял, спасибо за ответ по поводу сайта, буду ждать)

        Ответить
      • Доброго времени суток! У меня теперь следующая проблема…письмо не доходит до адреса. Емайл адрес прописал, во время отправки пишет:”Письмо отправлено” и так же возвращает обратно.

        На счет переадрессации я понял, что это были проблемы с сервером, т.к. они мне прислали сегодня письмо о некоторых неполадках и их решили и поэтому сейчас работает от команды Refresh: 5; URL=http://naverx.ru (как и должно было быть). Только вот, до почты письма не доходят….

        Ответить
      • И снова добрый день. Должен сказать, что сегодня почему-то почта заработала…не могу понять, почему так? Вчера не работала, а сегодня заработала, хотя я ничего для этого не делал…. С чем это может быть связанно? Что-то с сервером?

        Ответить
        • Может быть и с сервером, я так точно не отвечу. Бывали и у меня случаи, когда с чем-то мучаешься, потом раз и само заработало.

      • Тогда значит, это наверное чудо :)) Классная форма, спасибо))

        Ответить
  151. Благодарю, запрос отправил хостеру и буду ждать ответ.

    Ответить
  152. “Сайт:

    pattern не работает. Что угодно можно написать в строке, все проглатывается и отправляется.

    Ответить
  153. Пишет такую ошибку
    Warning: Cannot modify header information – headers already sent by (output started at /var/www/u0218412/data/www/xn--24-7-43dfor1a2a0dwaj2a1n.xn--p1ai/contact-form.php:1) in /var/www/u0218412/data/www/xn--24-7-43dfor1a2a0dwaj2a1n.xn--p1ai/contact-form.php on line 28
    Письмо отправлено, через 5 секунд вы вернетесь на сайт КрафтСервис

    Ответить
  154. Проблему с абройкадаброй в переадресовке можно решить иначе.
    В переадресовку можно вставить картинку с написанным текстом.
    Вот так:

    Ответить
  155. Дмитрий дай Бог тебе здоровья. Действительно рабочая форма, для меня как для новичка лучшего для HTML-сайта просто не найти. Есть только один вопрос. Мне надо чтоб при отправке либо страница не менялась, либо появлялся дубликат страницы где эта форма стоит.
    Короче чтоб было понятнее я хочу чтоб при отправке появлялось модальное окно, а не банальная страница с простяцким текстом. Скачал исходник окна от сюда:( ruseller.com/lessons.php?rub=2&id=1556) и ну ни как не получается объединить этих два произведения в одно.

    Ответить
  156. if (empty($bezspama)) /* Оценка поля bezspama – должно быть пустым*/
    {
    /* Отправляем сообщение, используя mail() функцию */
    $from = “Reply-To: $email rn”;
    if (mail($address, $sub, $mes, $from)) {
    header( “Location: http://www.uvasnachas.ru/#openModal” );}

    else {
    header( “Location: http://www.uvasnachas.ru/#openModal-2” );}
    }

    Вот тут я что-то запутался (((

    Ответить
    • Тут не все так просто. Проблема вашей задумки в том, что выполнение php скрипта приводит к закрытию изначальной страницы и, есил не делать переадресацию, вы получите белый экран (пустую страницу). Как сделать то, что вам хочется простым путем я не знаю, а форма изначально делалась как очень простая.

      Ответить
  157. smartlanding.biz/forma-obratnoj-svyazi-v-modalnom-okne.html Вот тут я нашёл решение своей проблемы, но меня смущает довольно большое количество файлов, либо там ссылки на сайт прячутся либо вирусняк. Я бы с удовольствием воспользовался Вашей версией на основе ихнего исходника

    Ответить
    • Там модальное окно сделано на javascript, который в моей форме не используется, по этой причине там и дополнительные файлы (собственно скрипты).

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

    Ответить
  159. Дмитрий – это наверное специальное имя для PHP-профессионалов. У меня другая форма (с модальным окном) тоже от Дмитрия только другого )) Дим подскажите пожалуйста что может быть причиной неработающей формы в модальном окне? Обращаюсь к Вам т.к. почему то думаю, что вы лучший из Дмитриев )

    Ответить
    • Про профессионала это вы громко сказали, в php я самый что ни на есть любитель, так, кое-что понял, когда необходимость возникала.
      А без модального окна ваша форма работает, если ее просто в код сайта запихать? Я думаю от этого плясать, чтобы понять в форме дело или в привязке к окну.

      Ответить
  160. Вот то и интересно, что БЕЗ модального окна форма работает, это меня прям вымораживает, вчера до утра экспериментировал, но так ни чего и не добился ((

    Ответить
    • Пути к файлам, которые обрабатывают форму относительные или абсолютные (полный url)? Если относительные, попробуйте заменить на полные.

      Ответить
  161. Здравствуйте.

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

    Ответить
  162. Спасибо за отличную форму, все работает, но у меня возникла проблема. Во всех браузерах незаполненная форма не отправляется, но в браузере сафари на маке и с айфона спокойно отправляется пустая форма. Т.е. я могу не заполнять поля и нажать кнопку отправить письмо. На почту естественно приходит пустое письмо. Как можно это исправить? Повторю, что в остальных браузерах параметр required не дает отправить незаполненное поле.
    Спасибо!

    Ответить
    • Оказывается, сафари не поддерживает данный атрибут. Вот тут есть вариант решения – stackoverflow.com/questions/23261301/required-attribute-not-work-in-safari-browser

      Ответить
      • Супер! заработало. Я заменил в форме required на required = “true”. Затем после кода самой формы вставил скрипт:

        var form = document.getElementById(‘formID’); // form has to have ID:
        form.noValidate = true;
        form.addEventListener(‘submit’, function(event) { // listen for form submitting
        if (!event.target.checkValidity()) {
        event.preventDefault(); // dismiss the default functionality
        alert(‘Пожалуйста, заполните форму’); // error message
        }
        }, false);

        Спасибо огромное!

        Ответить
  163. Здравствуйте Дмитрий! Установил Вашу форму. Проверил, отправив со своего же компьютера письмо, – пришло без проблем. Но от других пользователей не приходят письма. Сделал такую же запись: $from = “Reply-To: $email rn”; Также поставил свою почту. Кодировка: utf-8. Подскажите, пожалуйста, в чём ещё может быть причина и как можно проверить работу почты, и найти эту причину?

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

      Ответить
      • Тысячу извинений! Всё работает. Хотя перед тем, как к Вам обратиться, проверял с помощью знакомых и сообщений не получал. А сейчас сработало. Прям чудеса творятся. Благодарю за форму!

        Ответить
  164. Поместил форму с обработчиком в папку conact своего сайта
    форма – conact/contact.php, переименовал с ndex.html
    обработчик – conact/contact-form.php
    Теперь, если вместо строки домен/conact/contact.php поставить домен/conact/contact-form.php и нажать enter, пустое письмо летит на почту. Подскажите, пожалуйста, как можно защититься от этого. я так понимаю – это для хакеров есть лазейка?

    Ответить
    • Через этот файл нет возможности получить доступ к внутренним ресурсам сайта, так что для хакеров лазейки нет.

      Ответить
      • Это радует, благодарю за помощь!

        Ответить
        • Добавил: if(empty($_POST)) die; в самом верху обработчика, теперь, если кому-то вздумается побаловаться, пустое письмо, уже, не полетит на почту.

        • Благодарю что поделились улучшением.

  165. как жму отправить вот это лезет

    Warning: Cannot modify header information – headers already sent by (output started at Y:homeform.ruwwwcontact-form.php:1) in Y:homeform.ruwwwcontact-form.php on line 30
    Письмо отправлено, через 5 секунд вы вернетесь на страницу XXX

    Ответить
  166. Подскажите пожалуйста, не приходят письма на почту. В чем может быть проблема?
    <?php
    /* Здесь проверяется существование переменных */
    if (isset($_POST['name'])) {$name = $_POST['name'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['adress'])) {$adress = $_POST['adress'];}
    if (isset($_POST['email'])) {$email = $_POST['email'];}
    if (isset($_POST['chasi'])) {$chasi = $_POST['chasi'];}

    /* Сюда впишите свою эл. почту */
    $address = "тут моя почта на яндексе";

    /* А здесь прописывается текст сообщения, \n – перенос строки */
    $mes = "Тема: Заказ очков VR BOX. \nИмя: $name\nТелефон: $phone\nАдрес: $adress\nEmail: $email\nКомплект: $chasi";

    /* А эта функция как раз занимается отправкой письма на указанный вами email */
    $sub='Заказ'; //сабж
    $email='Заказ ‘; // от кого
    $send = mail ($address,$sub,$mes,”Content-type:text/plain; charset = utf-8\r\nFrom:$email”);

    ini_set(‘short_open_tag’, ‘On’);
    header(‘Refresh: 3; URL=index.html’);
    ?>

    С вами свяжутся

    body
    {

    background: #22BFF7 url(zakaz.jpg) top -70% center no-repeat;

    }

    setTimeout(‘location.replace(“/index.html”)’, 3000);
    /*Изменить текущий адрес страницы через 3 секунды (3000 миллисекунд)*/

    Ответить
    • Вы уверены что тот участок, что указан у вас как функция отправки сообщения это делает?
      У вас там стоит только присвоение переменной $send.

      Ответить
  167. Значит проблема все таки здесь? Нужно сменить, так понимаю? Не сильно шарю в php

    Ответить
    • Лучше, конечно, задавать вопросы по скрипту автору у которого вы его взяли. Либо используйте другой обработчик, если у того автор неизвестен, например, приведенный в этой статье.

      Ответить
  168. Спасибо Вам от душенски!
    Благодарен Вам!

    Ответить
  169. Добрый день
    Прошу прощения за глупый вопрос, а где меняется цвет текста в полях для заполнения?
    У меня получилось белое на белом.. Нашел где поменять цвет фона поля, но где менять сам цвет текста, не нашел.
    Заранее благодарен.

    Ответить
    • В файлах цвет подсказок не задан и использует тот, который есть по умолчанию на сайте. Чтобы изменить, надо добавить в css файле в блоке:
      .contact_form input:required, .contact_form textarea:required
      свойство:
      color: #000000
      где вместо нулей указывается любой нужный цвет (нули это черный)

      Ответить
  170. Спасибо огромное за быстрый ответ.
    И спасибо за форму!

    Ответить
  171. Долго думала как же избавиться от спама (очень не хотелось ставить капчу или чекбоксы), а всё оказалось вот так просто 🙂
    Огромное спасибо автору!!! Это просто гениальное решение!

    Ответить
  172. Здравствуйте, Дмитрий, скажите. пожалуйста, почему на адрес xxx@gmail.com почта приходит, а на доменный адрес компании на яндексе xxx@companyname.ru письма не приходят. В спаме тоже нет. ???? В чем может быть проблема???

    Ответить
    • Проблемы с неприходом писем обсуждались в комментариях не раз. Что из этого вы пробовали?

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

    Ответить
    • 1. Добавьте в форму соответствующее поле в html коде (блок с тегами label и input, укажите name=”gorod”)
      2. Задайте переменную $gorod в файле contact-form.php
      3. Вставьте переменную $gorod в текст письма

      Ответить
      • Спасибо, работает.

        Ответить
  174. Добрый день.

    Приходит кадабра. Не знаю, как побороть.

    а?аМб? аОб?аПб?аАаВаИб?аЕаЛб?: аАаВаОаЛаАб?аЛаОб?
    а­аЛаЕаКб?б?аОаНаНб?аЙ аАаДб?аЕб? аОб?аПб?аАаВаИб?аЕаЛб?: б?аВаАаЛаОаДаОаВб?аА
    аЂаЕаЛаЕб?аОаН аОб?аПб?аАаВаИб?аЕаЛб?: б?9182798792834
    аЁаАаЙб? аОб?аПб?аАаВаИб?аЕаЛб?:
    аЂаЕаКб?б? б?аОаОаБб?аЕаНаИб?:
    sick;jksjdf;kj;sdl;kjklj;k
    hgfuk;lkwe;flksdf
    аАаАаАаЛаЛаЛаДаДаДб?б?б?б?

    Ответить
    • причем, символы на латинице отображаются нормально, а русские очень странно. В код по 1251 вставлял, не меняет ровным счетом ничего. 🙁

      Ответить
  175. Не работает. Хостер дал ответ:
    На данный момент письма блокируются нашим спам фильтром.
    01 Feb 2017 20:13:12 (GMT +03:00) MID: 239799903 Show Details

    SENDER: 119132@linwebng05.hostingspace.pro
    RECIPIENT: admin@marina-sk.com
    SUBJECT: ?????????????????? ?? ?????????????????????? ???? ??????????????
    LAST STATE: Message 239799903 aborted: Dropped by CASE
    Судя по всему, проблема в скрипте, отвечающем за формирование тела письма.

    Обращаем Ваше внимание, что письма с вашего сайта не должны отправляться с нашего общего домена.
    [Отправитель конверта 119132@linwebng05.hostingspace.pro]

    Рекомендуем выполнить следующие действия:
    1. Настройте TXT записи для домена следующего вида v=spf1 ip4:77.221.130.0/24 ~all
    2. В почтовом скрипте в поле From необходимо указать реальный ящик на вашем домене – это требуется для корректной работы SPF записи.
    3. Настройте return-path в почтовом скрипте, к примеру, mail($addr,$subj,$msg,$headers,” -f domain@domain.com“);
    в пятый параметр и добавьте Return-Path (domain@domain.com – реальный ящик на вашем домене).

    подскажите пожалуйста как надо исправить код. Заранее Благодарю.

    Ответить
    • Они вам все написали, изменение в скрипте – это только указание электронной почты вашего домена в адресе получателя (переменная $address) и добавление 5 параметра в функцию mail (29 строка).
      Все остальное – это сделать почту на своем домене, настраивается это на каждом хостинге по разному – если в админке не получается разобраться самостоятельно, спросите в поддержке – есть ли инструкция.

      Ответить
  176. Добрый вечер Дмитрий!!!
    Помогите пожалуйста сделал все по инструкции!! Теперь можно ли проверит форму обратной связи не заливая сайт на хостинг например в денвере!! Если да то тогда нужно ли будет все HTML файлы поменять на PHP? P.S. У меня это мой первый опыт при создании сайта подправите если задал вопрос не корректно??????

    Ответить
    • Проверьте на денвере, я не тестировал, но не вижу причин по которым не должно работать. html на php менять не нужно, расширения сделаны такими какие требуются.

      Ответить
  177. Спасибо вам огромное!!!!!!! Все работает но были проблемы с кодировкой настроил все в самом денвере! Очень полезная статья и вы оперативно отвечаете на сообщения! Удачи вам в вашей работе!!!

    Ответить
  178. Добрый день, в чем может быть проблема, письмо приходит но тело пустое, данные которые заполняются посетителем почему то не прописываются в $mes

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

      Ответить
  179. да Вы правы, ошибочка закралась в разметку, спасибо за форму.

    Ответить
  180. еще вопросик, на мейл в mac os все разборчиво, в w10 outlook – крякозябль, проблемка кодировки 1251?

    Ответить
  181. разобрался проблема в outlook

    Ответить
  182. Добрый день, в чем может быть проблема после нажатия на отправку письма получаю сообщение письмо не отправлено

    Ответить
    • Не срабатывает функция mail. Если нет ошибок в коде – вопрос к хостеру.

      Ответить
  183. Добрый день.
    Подскажите решение проблемы. Если код php стоит в изначальном виде (как представлен на сайте) все работает, но после отправки сообщения, через пять секунд идет пере направление на сайт https://biznessystem.ru. Меняю в строке header(‘Refresh: 5; URL=https://biznessystem.ru’); адрес сайта на адрес в зоне рф, т.е домен на кириллице, автоматически в конце адреса подставляется /kontact-form.php и перенаправление обратно на сайт не идет. т.е постоянно стоит надпись “Письмо отправлено, через 5 секунд вы вернетесь на страницу XXX”. На латинских доменах все работает (проверил несколько штук)

    Ответить
    • Вы кирилический домен в формате punycode пишете или прямо на кирилице? Надо в пуникоде.

      Ответить
  184. Спасибо, Дмитрий. Все заработало!

    Ответить
  185. Дмитрий, спасибо за форму. Отличное, понятное решение для новичков. Работала полгода нормально. Со вчерашнего дня стал приходить спам с периодичностью в 5мин. Пока не удалил php файл с сервера – ничего не помогало. Думаю как решить проблему.

    Ответить
    • Можно поиграться с добавлением простых математических защит, типа введите сумму (разность, произведение) и проверять результат на соответствие. Изначально форма очень простая, поэтому сложных защит в неё добавлять не хотелось.

      Ответить
      • Тоже стал спам наваливать постоянно,как в ней добавить капчу? помогите пожалуйста. или еще какую нибудь защиту. А то просто почту закидало спамом. =(

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

      • Помогите пожалуйста=)

        Ответить
      • Сделал. Но почему то теперь сразу вылетает чистый лист. Ну переходит на белый экран.
        Типо как бота ловит. И попробывал старую форму убрать. Все равно так.

        Ответить
      • а все получилось. посмотрим завтра день. будут письма приходить или нет.

        Ответить
      • Все равно пустые письма приходят =(

        Может как то от индексации надо закрыть? может это яндекс бот ходит? или что еще может быть?

        Ответить
        • Пустые поля может пропускать браузер safari, он не воспринимает атрибут required.
          Решений без яваскрипта я не нашел.
          Попробуйте сделать как описано тут – adminway.ru/kak-zastavit-rabotat-atribut-required-dlya-input-v-starykh-versiyakh-ie

  186. Подскажите как мне добавить на сайт на котором уже есть форма защиту от спама
    где размещать код в файле index.html и где размещать код в файле php покажите пожалуйста

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

      Ответить
  187. Спасибо большое за статью! Поблагодарил)

    Ответить
  188. Добрый день. Вашей формой ОС пользуюсь. Очень удобно. Возникла проблема с доменом на кириллице выдает 405 Not Allowed, как то обойти можно? Спасибо.

    Ответить
    • Вы уверены, что связано именно с кириллическим доменом? У меня нет ответа на вашу проблему. Начните поиск решения с запроса к хостеру – может они в курсе причин такой ошибки.

      Ответить
  189. здравствуйте, Всё работает , но проблема в проверке правильности указания математической цифры , как сделать так что бы при указании не той цифры горел красный свет? и не отправлял письмо если цифра указана не правильно.

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

      Ответить
  190. Письмо не отправлено, через 5 секунд вы вернетесь на страницу Dodge
    письмо никак не могу отправить помогите
    код изменил, css не трогал:

    кодировка utf-8
    у обоих

    Ответить
    • Кодировка для этой ситуации значения не имеет. Не выполняется функция mail – это вопрос к хостингу, скорее всего она заблокирована у них.

      Ответить
  191. Форма классная СПАСИБО!

    Но есть вопрос, как сделать, чтобы не было перезагрузки страницы, то есть добавить ajax.

    Ответить
    • Эта форма на php и html изначально, ваша просьба повлечет существенные изменения и усложнит ее. Кроме того я в аяксе ноль 🙂
      Можете посмотреть, например тут – vk-book.ru/prostaya-forma-obratnoj-svyazi-na-php-i-ajax/

      Ответить
  192. Здравствуйте!!!

    У меня на ДЕНВЕРЕ все работала, но когда залил сайт на хостинг сообщение не приходят!!!!
    Служба поддержки пишет такое сообщение:
    Здравствуйте.

    Письмо отвергается почтовым сервером mail.ru, так как не проходит проверку DMARC.
    Согласно информации указанной в документации mail.ru:
    “Если отправленное сообщение не прошло проверку DKIM и SPF, то оно не пройдет и DMARC. Если же сообщение успешно прошло хотя бы одну проверку (DKIM или SPF), то и проверку DMARC сообщение пройдет успешно.”
    Информацию о DKIM и SPF Вы можете получить в свободном доступе сети Интернет.
    Рекомендуем указать в качестве отправителя письма в настройках сайта ящик на одном из Ваших доменов, делегированных на наши NS сервера. Для них корректные SPF записи указаны автоматически, и проверка должна быть пройдена.

    DKIM подпись для писем, отправляемых с хостингового сервера функцией php mail() указать, к сожалению, невозможно.

    Также, в качестве альтернативного решения проблемы Вы можете переключить свой сайт на отправку сообщений по протоколу SMTP.
    Для отправки по SMTP используются следующие реквизиты:
    – логин пользователя совпадает с электронным ящиком, созданным в разделе “Почтовый менеджер”;
    – пароль от электронного ящика;
    – сервер для отправки электронной почты – smtp.timeweb.ru;
    – порт 25 или 2525.

    Помогите разобраться как сделать чтобы форма обратной связи заработала!!!!!!

    Ответить
    • Ответ в письме вам прислали – сделайте себе почтовый ящик на собственном домене и укажите его в скрипте в переменной $adress

      Ответить
  193. Здравствуйте, Дмитрий!
    Благодарю, Вас, за такую замечательную статью! С PHP, я, увы, на вы. Поэтому статья очень помогла! Все отлично работает! Только маленький нюанс, после отправки сообщения, появляется не “Ваше сообщение отправлено, спасибо!”, а предложение в другой кодировке: ? ? ? ?’?°???µ ???????±?‰?µ?????µ ???‚???€?°???»?µ????, ?????°?????±??!
    Никак не могу понять, где ошибаюсь. Все остальное работает отлично! Можете подсказать, где проблема прячется? 🙂 Спасибо!

    Ответить
    • Вместо тексте “Письмо отправлено …”, попробуйте написать так:
      <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body>Письмо отправлено, через 5 секунд вы вернетесь на страницу XXX</body>

      Ответить
      • Благодарю! Всё работает отлично!!!

        Ответить
  194. что делать если письма не приходят

    Ответить
    • Прочтите ветку комментариев, в ней рассмотрено множество возникавших проблем.

      Ответить
  195. Возник вопрос с размерами шрифтов которые вводятся в полях, если размер placeholder можно изменить

    ::placeholder {
    color: red;
    font-size: 1.5em;
    }

    То как изменить размер шрифта который вводится ?

    и второе я так и не смог изменить размер кнопки 🙁 я не спец, так немного рукодельничаю

    пример возникших вопросов https://unitaxipro.ru/airport/airport-raschet.html

    Ответить
    • Меняйте стили:
      .contact_form textarea и .contact_form input

      добавьте туда font-size и все что нужно

      Ответить
  196. К вопросу о том, что после отправки письма не проходит перенаправление.
    Вот ответ техподдержки:
    В лог файле ошибок была обнаружена следующая ошибка:
    [Sun Sep 10 16:52:26 2017] [error] PHP Warning: Cannot modify header information – headers already sent by (output started at /var/www/vhosts/63/156139/webspace/httpdocs/bulvar21.ru/2017/php/contact-form.php:1) in /var/www/vhosts/63/156139/webspace/httpdocs/bulvar21.ru/2017/php/contact-form.php on line 28
    Данная ошибка информирует о том, что до установки заголовков были отправлены данные.
    Причина заключалась в BOM.
    В шаблоне файл contact-form.php с BOM. После преобразования формата файла в UTF-8 без BOM, перенаправление работает корректно.
    Наличие BOM в PHP скриптах приводит к тому, что HTTP заголовки отправляются в браузер до начала выполнения кода. Это вызывает ошибки при попытке в дальнейшем коде отправить заголовок (например переадресацию или код ответа).
    А форма отличная, даже цвета формы как раз в стиль оформления сайта. Спасибо.

    Ответить
    • Спасибо, что поделились решением.

      Ответить
      • Самое смешное, что при первой пробе, т.е. в том виде, как в шаблоне, я убрал BOM и всё работало. Потом, когда стал редактировать под себя, совсем забыл о нём и получил такой результат. При этом был уверен, что файл без BOM.
        bulvar21.ru/2017/faq.html

        Ответить
  197. Все отлично работает, подключил код к своей форме! Редиректа не было из за кодировки с BOM!!!! Спасибо!!!

    Ответить
  198. Дмитрий, а возможно ли сделать поинтересней страницу, на которой выводится сообщение о успешной отправке!?

    Ответить
    • Конечно можно. Это же макет, сделан для того, чтобы вы могли легко настроить визуально всё под себя. Делайте любой код и заменяйте им стандартную надпись.

      Ответить
  199. Дмитрий, а возможно, и если возможно, то как, сделать так, чтобы кроме сообщения на экране об успешной отправке, письмо дублировалось на адрес отправителя, т.е. к отправителю приходило бы письмо примерно с таким текстом:
    “Вы, или кто то, указал Ваш адрес в запросе с сайта ХХХ.

    Благодарим за обращение.
    Администрация сайта ХХХ”
    Что то типа такого.

    Ответить
    • Упс, пустая строка выскочила.
      Там предполагается, что дублируется форма сообщения с сайта.

      Ответить
    • Добавьте в код еще одну функцию mail с нужными переменными и отправка пойдет на 2 адреса. Можно добавить хоть миллион получателей.

      Ответить
      • Спасибо, всё получилось. Теперь приходит само сообщение, а отправителю приходит уведомление о том, что он (или кто то, указав его адрес) отправил сообщение. Приводится цитата сообщения, уведомление, что сообщение сгенерированно автоматически и не требует ответа.

        Ответить
  200. Добрый вечер!!! У меня проблема решено.
    Старый:
    Строка 29 if (mail($address, $sub, $mes, $from)) {
    Новый: замена
    Строка 29 if (mail($address, $sub, $mes,”Content-type:text/plain; charset = UTF-8\r\n $from”)) {

    Ответить
  201. Почему то после отправки формы остаётся уведомление – Письмо отправлено, через 5 секунд вы вернетесь на сайт XXX , а сам переход не осуществляется 🙁

    Ответить
  202. Дмитрий, добрый день. Я хочу добавить <input type="checkbox" и благодаря описанию в css получаю чекбокс в рамке заданного стиля. Как это можно обойти и избавиться от рамки?
    Конечная цель – чекбокс "я согласен с условиями конфиденциальности" и после этого активизировать кнопку.
    Спасибо

    Ответить
    • Прописать для чекбокса свой стиль и в нем задать нулевую рамку. Можно сделать через отдельный класс объекта или прямо в конкретном input type=”checkbox” style=”border:0;”

      Ответить
  203. Дмитрий, как правильно прописать стиль? Если я правильно понимаю checkbox – один из типов input. Input имеет описание стиля. Я попытался описать, как .contact_form input type=”checkbox” {…
    но, видимо я что-то делаю неправильно. Второй способ – в конкретном input попробовал вписать style =”border:0″ – ничего не меняется.
    Отдельный класс у меня работает на другом сайте, где нет конфликта с описанием в css:

    Cогласен <a HREF="soglasie.html" rel="nofollow"> с политикой конфиденциальности сайта </A>
    Но в этом случае он не работает

    Ответить
    • Может у вас рамка не стилем border задается? Посмотрите в отладчике какие атрибуты задают параметры рамки и в приведенном мной ранее примере поставьте вместо border

      Ответить
  204. <input class="input" type="checkbox" name="agreement" value="agreement" required /

    Ответить
  205. Добрый день! Подскажите пожалуйста, подключила вашу форму, но при отправке пишет “Письмо не отправлено, через 5 секунд вы вернетесь на страницу”. Подскажите пожалуйста в чем может быть дело?

    Ответить
    • Не выполняется функция mail, причиной может быть запрет на хостинге – запросите их техподдержку.

      Ответить
  206. Письма не приходят

    Ответить
  207.  спасибо большое!

    Ответить
  208. В скрипте как я понимаю все правильно и ошибок не должно быть. Я просто попробовала загрузить отдельно ваш скрипт и та же самая ошибка.

    Ответить
    • если были бы ошибки в скрипте, он бы совсем не выполнялся и выдавал системную ошибку

      Ответить
  209. Проблема спама, боты и поисковые пауки переходят по прямой ссылки на php скрипт site.ru/contact-form.php в итоге приходят пустые письма!

    Ответить
    • Вот ваш пример Демо версия формы biznessystem.ru/../contact-form.php
      Письмо отправлено, через 5 секунд вы вернетесь на страницу XXX

      Ответить
      • Добавьте вторую проверку на спам через простую математическую капчу, описанную в конце статьи. В примере на моем сайте она была не подключена, сейчас поставил, срабатываний от ботов нет.

        Ответить
  210. вот такая проблема после нажатия на кнопку “отправить”((
    Not Found

    The requested URL /contact-form.php was not found on this server.
    Помогите пожалуйста(

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

      Ответить
  211. Все работает. Но не редиректит(

    Где этот BOM убрать надо?

    Спасибо

    Ответить
    • Редактор Notepad++, в нем в панели есть закладка “Кодировки”.

      Ответить
  212. Классная форма. Спасибо за подробное разъяснение. У меня 2 вопроса.
    1. При нажатии на кнопку “отправить” может отправиться незаполненная форма
    2. Как сделать, чтобы форма отправляла данные одновременно на 2 разных е-мейла?

    Ответить
    • 1. Насколько я знаю, поля в форме не проверяет только браузер safari – у вас он? И, какие из вариантов защиты от спама вы подключили к форме?
      2. Чтобы на второй адрес отправить, необходимо вторую функцию mail добавить после первой. Продублировать 29 строку “if (mail($address, $sub, $mes, $from))”, заменив нужные переменные и закрывающую скобку где надо добавив.

      Ответить
  213. все сделал как у вас – после отправки пернаправляет contact-form.php – страница не доступна

    Ответить
    • проверьте куда положили файл и туда ли ссылается форма

      Ответить
  214. Здрасте.
    Не получается написать, не отправляется чет.

    Ответить
  215. Здравствуйте!
    Форма работает, спасибо!
    Только файл “contact-form.php” нужно сохранять в кодировке “utf-8 без BOM”, во всяком случае, у меня, только так заработало…

    Пожалуйста, подскажите, как к данной форме прикрепить капчу?

    Ответить
    • простая капча приведена в статье, сложные решения здесь специально не используются

      Ответить
  216. Здравствуйте, форма отличная, спасибо! Но как можно прикрепить фотографии к этой форме?

    Ответить
    • К этой никак.

      Ответить
  217. Подскажите как прикрутить текст при неверном ответе капчи, если ввел неверно капчу белый фон…

    Ответить
    • Перед командой exit после закрывающей скобки } можно вписать любой код с сообщением.

      Ответить
  218. Спасибо большое за форму, вставила ее, как раз подошла к моему дизайну.

    Но смотрю, что спамеры в основном у меня на сайте вводят вручную, хотя добавила обе защиты от спама. Теперь пробую варианты с проверкой на http, т.к. задолбали. Если знаете, подскажите пожалуйста

    Ответить
  219. Доброго времени суток!
    Заинтересовала ваша форма – взял на тестирование.
    Сразу выплыло, что если отправлять от 222@gmail.com или 333@mail.ru, то форма считает эти «емейлы» некорректными и требует «…ввести нормальный адрес…».
    Ну, я с этим уже сталкивался, поэтому сразу заменил «type=”email”» на «type=”text”» и теперь можно вписывать любую почту.
    Письма доходят нормально, без каких либо дефектов, но опять вылезло, после отправки =

    Warning: Cannot modify header information – headers already sent by (output started at /home/wm11020/domains/sam-okna.ru/public_html/web/myform/contact-form.php:1) in /home/wm11020/domains/sam-okna.ru/public_html/web/myform/contact-form.php on line 30

    Так как я прочитал все комменты несколько раз, то убрал пробелы, на всякий случай, от 26 строки по 39, включительно – ничего не изменилось, кроме цифры в «on line 30».
    Скажу сразу, что мне лично все эти перенаправления не очень нравятся….
    Я вообще всегда делаю открытие «Обратной связи» в новом окне.
    Человек, отправив письмо, просто закрывает его и возвращается на сайт.
    Поэтому я вот это =

    «{/* Отправляем сообщение, используя mail() функцию */
    $from = “Reply-To: $email \r\n”;
    if (mail($address, $sub, $mes, $from)) {header(‘Refresh: 5; URL=https://biznessystem.ru’);echo ‘ Письмо отправлено, через 5 секунд вы вернетесь на страницу XXX’;}
    else {header(‘Refresh: 5; URL=https://biznessystem.ru’);echo ‘

    Письмо не отправлено, через 5 секунд вы вернетесь на страницу YYY’;}}»

    заменил на это =

    «{echo “Сообщение отправлено успешно”;}
    else {echo “Ошибка, сообщение не отправлено!”;}»

    Эти строки можно заменить на какие угодно.

    В одном месте, по просьбе клиента, я вставил такое =
    «Спасибо за сообщение! Можете продолжить просмотр информации по теме на сайте”http://ваш сайт.com”»
    Сейчас хочу протестировать в кодировке «1251», иногда бывает надо, потом отпишусь….

    Ответить
    • благодарю за полезные комментарии

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

    Ответить
  221. А где писать свою почту и домен куда тебе будут приходить заявки от клиентов???

    Ответить
    • в файле contact-form.php, переменная $address, в тексте это написано

      Ответить
  222. Здравствуйте, при нажатии на кнопку отправить 404 ошибка
    zodchiydom.ru/forma.php
    Подскажите пожалуйста в чем проблема?

    Ответить
    • страница не найдена – файла нет в том месте куда ссылается форма, проверьте куда вы его положили

      Ответить
  223. Здравствуйте. Не подскажите как вставить форму в сайт. В общем на сайте есть обратная форма но она почему то не работает я попытался переделать на вашу.

    Send Message Now

    Your message has been successfully!

    Unable to send your message, please try later.

    <?php

    /* Задаем переменные */
    $name = htmlspecialchars($_POST["name"]);
    $email = htmlspecialchars($_POST["email"]);
    $message = htmlspecialchars($_POST["message"]);
    $bezspama = htmlspecialchars($_POST["bezspama"]);

    /* Ваш адрес и тема сообщения */
    $address = "alexy.ru@bk.ru";
    $sub = "Сообщение с сайта ХХХ";

    /* Формат письма */
    $mes = "Сообщение с сайта ХХХ.\n
    Имя отправителя: $name
    Электронный адрес отправителя: $email
    Текст сообщения:
    $message";

    if (empty($bezspama)) /* Оценка поля bezspama – должно быть пустым*/
    {
    /* Отправляем сообщение, используя mail() функцию */
    $from = "Reply-To: $email \r\n";
    if (mail($address, $sub, $mes, $from)) {
    header('Refresh: 5; URL=https://biznessystem.ru');
    echo '

    Письмо отправлено, через 5 секунд вы вернетесь на страницу XXX’;}
    else {
    header(‘Refresh: 5; URL=https://biznessystem.ru’);
    echo ‘

    Письмо не отправлено, через 5 секунд вы вернетесь на страницу YYY’;}
    }
    exit; /* Выход без сообщения, если поле bezspama чем-то заполнено */
    ?>

    Ответить
    • В чем вопрос? Для чего вы комментарий с кодом публикуете? Весь алгоритм установки описан в статье.

      Ответить
  224. Я использую CMS joomla, но захотел использовать именно вашу форму.
    1) Вставил html код на одной из страниц сайта
    2) На хосте закинул файл php в директорию сайта, папку images (сделал это специально, так как когда я прописываю путь к картинкам, то пишу так src=”images/картинка.jpg”, и картинка находится)
    3) когда я в форме нажимаю “Отправить”, мне выдает 404 ошибку и в конце урл настоящей страницы убирается последнее слово после / и добавляется /images/contact-form.php.

    что я делаю не так? из трех файлов я использую только php , код html прописываю на странице, css у меня другой.

    Ответить
    • 404 ошибка означает что файл не найден по указанному адресу.
      Что прописано в первой строке html кода формы в атрибуте action? Если php файл лежит не в корне, то надо указывать полный путь (_http://домен/папка/название файла и т.д.)

      Ответить
  225. Добрый день.
    Друзья попросили сделать обратную связь на сайте.
    Попробовала поставить Вашу.
    На попытку отправить письмо мне пишут:
    Warning: Cannot modify header information – headers already sent by (output started at /home/groomstu/public_html/contact-form.php:1) in /home/groomstu/public_html/contact-form.php on line 35
    Письмо не отправлено, через 5 секунд вы вернетесь на страницу _http://groom-studio-aa.ru/index.htm
    И кроме этого не возвращает на сайт. Помогите, пожалуйста, разобраться. Заранее огромное спасибо.

    Ответить
    • У других людей данная ошибка уже встречалась – воспользуйтесь поиском по комментариям (ctrl+f).

      Ответить
      • Спасибо огромное. Все получилось!

        Ответить
  226. Здравствуйте.
    Форма отличная. поставил защиту от спама. Но при введении неверного ответа идет открытие php файла-обработчика (белый екран).
    Что-то не так, или так надо?
    Спасибо за ответ)

    Ответить
    • Так и должно. Если хотите что-то выводить, то добавьте любой код перед exit

      Ответить
  227. Добрый день! Можно ли оставить, чтобы отправитель заполнял только поле “телефон” а остальные поля убрать?

    Ответить
    • можно, удалите лишнее из формы и скрипта, этот вопрос уже задавался, читайте комментарии

      Ответить
  228. когда я удаляю, то форма перестает отправлять письма

    Ответить
  229. пришло! Спасибо!!!!!!!!!!!!!

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

    Ответить
  231. не переходит на русские сайты( .рф), на (.ru) переходит а (.рф) не видит как ссылку, подскажите что нужно прописать?

    Ответить
    • кириллицу нужно переводить в пуникод – у Яндекса спросите как, онлайн конвертеры есть

      Ответить
  232. Добрый день!
    Спасибо за отличную форму!
    Всё работает отлично. Переделал под свои нужды.

    Вот только с одним моментом не знаю как справиться.
    Как в обработчике contact-form.php сделать, чтобы в приходящем письме у некоторых строк был жирный (bold) шрифт?

    Вот, к примеру, эти строчки:

    Имя отправителя
    Электронный адрес отправителя
    Телефон отправителя
    Сайт отправителя

    Если подскажите, буду очень благодарен! )))

    Ответить
    • Нужно в 4-й атрибут функции mail (в нашем случае это переменная from) дописать заголовки, что тело письма содержит html, а потом уже в сообщении вставлять теги. Писать долго, вот здесь посмотрите, этот момент расписан – tradebenefit.ru/otpravka-pisem-mail-php-i-css

      Ответить
      • Спасибо! Разобрался ))

        Ответить
  233. Электронный адреÑ￾ отправителÑ￾: roma40rico16@gmail.com

    Вот такое приходит в почту.., с чем связано ?

    Ответить
    • с кодировкой, читайте до конца статью и обсуждение в комментариях

      Ответить
      • Нашел решение в комментариях, спасибо!

        Ответить
  234. Здравствуйте. Спасибо за форму! Но сообщения приходят пустыми (без данных из заполненной формы), только текст из переменной $mes:
    Сообщение с сайта moisait.ru
    Имя отправителя: (пусто)
    Электронный адрес отправителя: (пусто)
    Телефон отправителя: (пусто)
    Сайт отправителя: (пусто)
    Текст сообщения: (пусто)
    Кодировка utf-8

    Ответить
    • Проверяйте переменные – соответствуют ли поля формы тому что присваивается в скрипте.

      Ответить
      • да, соответствуют

        Ответить
        • тогда смотрите правильно ли задан их вывод в тексте письма, можете проверить что в самих переменных вносится просто выведя их на странице без отправки сообщения.

        • у меня тоже самое

  235. вводил и цифры, и латинские и русские – не имеет значения

    Ответить
    • что-то при правке не так сделали – проверяйте

      Ответить
  236. Хорошая статья, принцип работы формы наконец понял 🙂 А вот про защиту спама отлично что написано. Когда-то намучился с разными формами, спамеры не отставали пока самодельные формы не сменил. С тех пор лишь Contact Form 7 использую для небольших форм и плагин uCalc от конструктора ucalc.pro. Там встроенная защита стоит, но можно и капчу при желании привязать.

    Ответить
  237. Спасибо за форму! “Благодарность” провел :))
    Однако, не все получилось гладко: при отправлении на почту Яндекса имя отправителя и сообщение отображаются “козябрами”, а при отправлении на Рамблер эти поля оказываются пустыми…. Перепробовал все советы, но корректной работы формы так и не добился. Может подскажите что….

    Ответить
    • Все подобные проблемы связаны с кодировкой, других причин нет (я не встречал). Нужно ковырять в этом направлении – сохранение самих файлов (используйте для редактирования notepad++) и указание в html коде сайта (meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″).

      Ответить
      • Да, действительно, проблемы были из-за кодировки! Все исправил, теперь работает отлично! Спасибо!

        Ответить
  238. Не приходит сообщение на почту
    но говорит,что отправил:
    Warning: Cannot modify header information – headers already sent by (output started at C:\OpenServer\domains\localhost\proekt\mail\contact-form\contact-form.php:1) in C:\OpenServer\domains\localhost\proekt\mail\contact-form\contact-form.php on line 30
    Письмо отправлено, через 5 секунд вы вернетесь на страницу XXX

    Ответить
    • OpenServer без настроек почту вроде не отправляет, насколько мне известно – эту тему проработали?
      Ошибка с заголовками в комментариях обсуждалась – полистайте выше.

      Ответить
  239. Доброе время суток. за форму спасибо, всё работает, письма на почту приходят, у кого не приходят, значит могут быть две причины – движок и шаблон в кодировки windows-1251, БД – default. Лучший вариант всё в UTF-8.
    Что касается проблемы
    Warning: Cannot modify header information – headers already sent by (output started at /home/user1159171/www/avtovoz.by/contact-form.php:1) in /home/user1159171/www/avtovoz.by/contact-form.php on line 24
    Письмо отправлено, через 5 секунд вы вернетесь на сайт
    Решить можно другим путём:
    1. убираем 30-ю и 35-ю строки header(‘Refresh: 5; URL=https://biznessystem.ru’);
    2. в самом верху, перед <?php вставляем
    3. вместо https://biznessystem.ru пишем название главной или любой другой страницы своего сайта
    Всё проверено и протестировано, переадресация работает, письма на почту приходят

    Ответить
  240. Здравствуйте, у меня тоже проблемка. Письма отправляются но приходят пустыми. Я тестирую отправку и выглядит вот так
    Сообщение с сайта Летотур-шоп.ру.

    Имя отправителя:
    Электронный адрес отправителя:
    Текст сообщения:
    Но вчера спамер пробился и все поля были заполнены.
    У меня же ничего не видно. Писал хостерам, сказали что ничего не ограничивают. С кодировкой все ОК

    Ответить
  241. Ого, данная форма пользуется популярностью уже как 4 года))) Респект автору!)

    Ответить

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

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