Всплывающая форма обратной связи

Александр Мальцев
90K
4
Всплывающая форма обратной связи
Содержание:
  1. Характеристики формы обратной связи
  2. Установка формы на страницу
  3. Как скачать форму обратной связи
  4. Как работает форма обратной связи
  5. Комментарии

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

Данная форма - это проект с исходным кодом, который расположен на GitHub по адресу: https://github.com/itchief/feedback-form-in-modal.

Предыдущие исходные коды проекта, который был выполнен на Bootstrap 3, можно скачать с GitHub по этой ссылке.

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

Представленная форма выполнена с использованием комопнентов Bootstrap 4 и jQuery. Серверный код фомы написан на PHP.

Другие характеристики формы:

  • открытый исходный код, проект доступен на GitHub;
  • отправка данных формы на сервер и получение ответа осуществляется без перезагрузки страницы, т.е. посредством технологии AJAX;
  • наличие графической капчи (для защиты от спама);
  • возможность прикрепления к ней файлов (по умолчанию до 5);
  • проверка данных формы (валидация) организована как на клиенте, так и на сервере;
  • отправка данных формы после успешной валидации на почту менеджера (администратора), и письма о доставке клиенту;
  • при отправке письма, файлы можно как прикрепить, так и отправить с помощью ссылок;
  • логирование отправки (данные сохраняются в файл message.txt).

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

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

1. Добавить кнопку или ссылку для вызова модального окна.

<!-- Кнопка, открывающая модальное окно -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#feedbackFormModal">
	Открыть форму в модальном окне
</button>

2. Создать модальное окно и поместить в него HTML код формы обратной связи.

<!-- Форма обратной связи в модальном окне -->
<div class="modal" id="feedbackFormModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="myModalLabel">Форма обратной связи</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">×</span>
        </button>
      </div>
      <div class="modal-body">

        <!-- Форма обратной связи -->
        <form id="feedbackForm" action="/feedback/process/process.php" enctype="multipart/form-data" novalidate>
          <div class="form-row">
            <div class="col-sm-6">
              <!-- Имя пользователя -->
              <div class="form-group">
                <label for="name" class="control-label">Имя</label>
                <input id="name" type="text" name="name" class="form-control" value="" placeholder="Имя" minlength="2" maxlength="30" required="required">
                <div class="invalid-feedback"></div>
              </div>
            </div>
            <div class="col-sm-6">
              <!-- Email пользователя -->
              <div class="form-group">
                <label for="email" class="control-label">Email-адрес</label>
                <input id="email" type="email" name="email" required="required" class="form-control" value="" placeholder="Email-адрес">
                <div class="invalid-feedback"></div>
              </div>
            </div>
          </div>
          <!-- Сообщение пользователя -->
          <div class="form-group">
            <label for="message" class="control-label">Сообщение (не менее 20 символов)</label>
            <textarea id="message" name="message" class="form-control" rows="3" placeholder="Сообщение (не менее 20 символов)" minlength="20" maxlength="500" required="required"></textarea>
            <div class="invalid-feedback"></div>
          </div>
          <!-- Изображения -->
          <div class="form-group attachments">
            <div>При необходимости прикрепите к сообщению изображения (до <span class="countFiles"></span>):
            </div>
            <div class="mb-1 text-muted">
              <small>максимальный размер одного изобржения 512 Кбайт</small>
            </div>
            <div class="alert alert-warning d-none mb1"><small class="attachments-error"></small></div>
              <div class="custom-file">
                <input type="file" name="attachment[]" class="custom-file-input" id="customFile1">
                <label class="custom-file-label" for="customFile1">Выбреите файл...</label>
                <div class="invalid-feedback"></div>
              </div>
          </div>
          <!-- Капча -->
          <div class="form-group captcha">
            <img class="img-captcha" src="/feedback/captcha/captcha.php" data-src="/feedback/captcha/captcha.php">
            <div class="btn btn-light refresh-captcha">Обновить</div>
            <div class="form-group">
              <label for="captcha" class="control-label">Код, показанный на изображении</label>
              <input type="text" name="captcha" maxlength="6" required="required" id="captcha" class="form-control captcha" placeholder="******" autocomplete="off" value="">
              <div class="invalid-feedback"></div>
            </div>
          </div>
          <!-- Пользовательское солашение -->
          <div class="form-group">
            <div class="custom-control custom-checkbox">
              <input type="checkbox" name="agree" class="custom-control-input" id="customCheck">
              <label class="custom-control-label" for="customCheck">Нажимая кнопку, я принимаю условия <a href="#">Пользовательского соглашения</a> и даю своё согласие на обработку моих персональных данных, в соответствии с Федеральным законом от 27.07.2006 года №152-ФЗ «О персональных данных».</label>
            </div>
          </div>
          <!-- Сообщение -->
          <div class="alert alert-danger form-error d-none">
            Произошли ошибки! Исправьте их и отправьте форму ещё раз.
          </div>
          <!-- Индикация загрузки данных формы на сервер -->
          <div class="progress mb-2 d-none">
            <div class="progress-bar progress-bar-success progress-bar-striped" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0">
              <span class="sr-only">0%</span>
            </div>
          </div>
          <!-- Кнопка для отправки формы -->
          <button type="submit" class="btn btn-primary float-right" disabled="disabled">Отправить сообщение</button>
        </form>
                
        <!-- Сообщение об успешной отправки формы -->
        <div class="alert alert-success form-success mb-0 d-none">Форма успешно отправлена. Нажмите на <a class="form-success-link" href="#">ссылку</a>, чтобы отправить ещё одно сообщение.</div>
      </div>
    </div>
  </div>
</div>

3. Подключить стили и скрипты используемых компонентов (jQuery, Bootstrap) и самой формы (main.css, main.js):

<!-- Подключение CSS файлов -->
<link rel="stylesheet" href="/feedback/vendors/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="/feedback/css/main.css">

<!-- Подключение JS файлов -->
<script src="/feedback/vendors/jquery/jquery-3.3.1.min.js"></script>
<script src="/feedback/vendors/bootstrap/js/bootstrap.min.js"></script>
<script src="/feedback/js/main.js"></script>

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

Загрузить форму можно с GitHub. Перейти на страницу проекта можно с помощью следующей кнопки:

Форма на GitHub

Архив форм на Github:

Версия 1.0 (Bootstrap 3)
Версия 2.0 (Bootstrap 4)

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

Скриншоты формы обратной связи:

1. Кнопка, посредством которой вызвается модальное окно с формой:

Кнопка, открывающая модальное окно с HTML формой

2. Вид формы в модальном окне:

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

3. Как происходит проверка полей формы:

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

4. Сообщение об успешной отправке:

Сообщение об успешной отправки формы обратной связи

Форма обартной связи в действии (видео):

Комментарии ()

  1. Марианна
    09 апреля 2021, 11:39
    Здравствуйте! Подскажите пожалуйста как убрать загрузку файлов и е-мейл изменить на поле телефона с вводом маски? А еще капча какая-то странная, все время не могу правильно ее набрать, правда видела в комментариях как ее убрать а заменить на другую.
    1. Марианна
      09 апреля 2021, 12:00
      Как убрать телефон нашла в комментариях ниже видео youtu.be/ui5GCMa81tM, посмотрю позже, еще видела коммент инструкция про телефон тоже. Осталось понять как правильно вырезать проверку загрузки файла, может кто-то знает?
      1. Александр Мальцев
        3 минуты назад
        Здравствуйте!
        Так просто закомментируйте или удалите эту разметку из html файла:
        <!-- Изображения -->
        <!--div class="form-group attachments" data-maxfiles="5" data-maxsize="512" data-validext="jpg, png, gif">
          <div>При необходимости прикрепите к сообщению изображения (максимум 5):</div>
          <div class="custom-file">
            <input type="file" name="attachment[]" class="custom-file-input">
            <label class="custom-file-label">Выберите файл...</label>
            <div class="invalid-feedback"></div>
          </div>
        </div-->
        
    2. Дмитрий Иванович
      06 апреля 2021, 23:14
      Добрый день Александр!
      Подскажите пожалуйста такую вещь:
      На сайте много разных форм — пользователи отправляют формализированные сообщения.
      Чтобы не менять каждый раз файл main.js, так-как количество форм может изменяться, я добавил к формам класс «feedbackForm» а к модальным окнам — атрибут «aria-hidden». и изменил main.js сл. образом:
      $(function () {
      	var form = $(".feedbackForm");
      	for (let i = 0; i < form.length; i++) {
      
      		form[i] = feedbackForm();
      		form[i].init({
      			id: '#'+$(form[i]).attr("id"),
      			isHideForm: $(form[i]).parents(".modal").attr("aria-hidden"),
      			maxFiles: $(form[i]).children(".attachments").attr("data-maxfiles"),
      			maxFileSize: $(form[i]).children(".attachments").attr("data-maxsize"),
      			validExtFiles: ['jpg', 'jpeg', 'gif', 'png']
      		});
      	}
      });
      Ну то есть попытался автоматизировать инициализацию форм
      Формы работать отказываются (((
      Что-то я сделал не так, а что не пойму? Не будет большой наглостью спросить у Вас совета?
      1. Дмитрий Иванович
        07 апреля 2021, 11:40
        Разобрался — тупанул)))
        Должно быть так:
        $(function () {
            let emailform = $(".feedbackForm");
            for (let i = 0; i < emailform.length; i++) {
        	form1= feedbackForm();
        	form1.init({
        	    id: '#'+$(emailform[i]).attr("id"),
        	    isHideForm: $(emailform[i]).parents(".modal").attr("aria-hidden"),
        	    maxFiles: $(emailform[i]).children(".attachments").attr("data-maxfiles"),
        	    maxFileSize: $(emailform[i]).children(".attachments").attr("data-maxsize"),
        	    validExtFiles: ['jpg', 'jpeg', 'gif', 'png']
                });
            }
        });
        
      2. Ivan Petrov
        03 апреля 2021, 17:18
        Здравствуйте, Александр. У меня возникла такая проблема. Форму нас сайт загрузил, подключил, почту настроил, отправка есть, но после успешной отправку не появляется всплывающее окно с сообщением что форма отправлена .....(пункт 4 в вашем уроке). Сбрасывает все данные .progress пробегает и все. Подскажите, пожалуйста, что делать?
        1. Александр Мальцев
          05 апреля 2021, 14:38
          Здравствуйте! Посмотрите какой ответ приходит от сервера (во вкладке Network)?
          1. Ivan Petrov
            05 апреля 2021, 20:32
            Спасибо.
        2. Nikifor
          06 марта 2021, 21:44
          Спасибо, форма обратной связи работает до 512 Кбайт! И с мобильного и с компьютера.
          Сделал чтобы можно было отправлять 7 Мбайт. Получилось отправлять, но только с компьютера.
          При отправке с мобильного — выдаёт ошибку «Файл не будет отправлен, т.к. его размер больше 512Кбайт».
          Пожалуйста, подскажите что и где надо исправить.
          1. Nikifor
            07 марта 2021, 17:53
            Добрый день! Проблему решил методом очистки памяти на Андроиде. Суммарный объём пересылаемых файлов не должен превышать установленного лимита. Спасибо всем! Всё получилось!
            1. Александр Мальцев
              08 марта 2021, 15:48
              Привет! Отлично!
          2. Владислав Шейдоровски
            01 февраля 2021, 15:22
            Здравствуйте, Александр! У меня возникла проблема с капчей. Установил 3 версии формы обратной связи. На каждой не выводилась капча(ошибка на скриншоте). Так же попробовал форму где только номер, логин и емейл, и каждый раз выводилась ошибка об отправке данных. Не подскажите, в чем может быть проблема? И заранее, большее вам спасибо) P.S — тестил чисто ваш файл из архива. На свою верстку ничего пока не переносил.
            1. Александр Мальцев
              02 февраля 2021, 16:08
              Здравствуйте! А какая версия php?
              1. Владислав Шейдоровски
                02 февраля 2021, 19:29
                Добрый вечер, Александр. Заранее поблагодарю за отличную форму, очень удобная и качественная. Версия — PHP 7.4. Установил на опенсервер, и проблему с капчей я исправил. Но почему-то при отправке — появляется та же ошибка с текстом как на скриншоте, хотя сообщение из инпутов с данными в логе сохраняется. Не знаете, что конкретно её может вызывать?
                1. Александр Мальцев
                  03 февраля 2021, 16:12
                  Привет! Скорее всего из-за неверной настройки почты. Нужно проверить этот момент.
                  1. Владислав Шейдоровски
                    03 февраля 2021, 19:24
                    Спасибо за совет, все заработало! Была проблема в почте. Еще раз благодарю за отличную работу)
            2. Владислав
              14 октября 2020, 22:19
              Здравствуйте!

              Как убрать в форме все поля, оставить только имя и номер телефона? Нашел в комментариях версию без капчи, но там бутстрап 4 версии). Я слабо шарю в коде, не получается капчу отключить

              Спасибо.
              1. Александр Мальцев
                17 октября 2020, 16:32
                Здравствуйте! А форма нужна на Bootstrap 3?
              2. Владимир
                29 августа 2020, 16:08
                Добрый день Александр!)

                Установил форму на сайт. Код немного подправил, убрал капчу, сообщение, файлы, и в целом валидацию данных. Добавил несколько полей. Все работает, но через раз. Т.е. при нажатии кнопки отправить письмо может уйти (выдаёт ошибку: Исправьте данные и отправьте форму ещё раз.), а может и не уйти. Не меняя введенных данных нажимаю несколько раз кнопку «отправить», до тех пор, пока не отправится. Я нуб в программировании, прошу помощи, подскажите, пожалуйста, в чем может быть проблема. Сайт с формой: wifi-radar96.ru
                1. Александр Мальцев
                  06 сентября 2020, 14:59
                  Привет! А как она открывается?
                2. Егор
                  27 июня 2020, 19:47
                  Привет. Загрузил форму на сайт, но сразу появляется ошибка, с чем это может быть связано?
                  Код подставлял копируя с сайта.
                  itchief.ru/assets/uploadify/8/e/b/8eb49fa0b56007cec4167c56d50ac190.png
                  1. Егор
                    29 июня 2020, 13:22
                    По прямой ссылке /feedback/index.html прохожу там все работает когда ставлю галочку о согласии на обработку персональных данных, но на основной странице не работает
                    1. Александр Мальцев
                      04 июля 2020, 15:38
                      Может не все js файлы подключили.
                    2. Александр Мальцев
                      28 июня 2020, 11:27
                      Привет! Не знаю, может вы почту не настроили или не туда скопировали. Всякое может быть. Чтобы в этом разобраться необходимо открыть в браузере вкладку Network, выбрать «process.php» и посмотреть какой ответ отправляет сервер. Если есть ошибки, то будут указаны на каких они строчках. В этом случае будет понятно из-за чего.
                      1. Егор
                        29 июня 2020, 12:59
                        Предыдущую ошибку исправил, но теперь не нажимается кнопка обратной связи. Если не трудно посмотри на тестовом сайте, что не так. За ранее благодарю! u79631.test-handyhost.ru/
                    3. igor
                      18 апреля 2020, 18:10
                      Доброго Александр!
                      Решил обновить форму обратной связи, но столкнулся с такой проблемой — при открытии в телефоне форма не адаптивная, выглядит как на большом экране, ничего не видно приходится раздвигать…
                      1. Александр Мальцев
                        20 апреля 2020, 15:44
                        Здравствуйте!
                        Для этого добавьте в раздел head файла «index.html» эту строчку:
                        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
                        
                        1. igor
                          20 апреля 2020, 22:20
                          спасибо!
                      2. Захар
                        18 апреля 2020, 12:27
                        Здравствуйте!
                        Не могу разобраться как на одной странице разместить 2 всплывающие формы v2.0. Одну добавил, она отправляется. Вторую добавил, process2.php создал, ссылку указал. ID поменял. Вызов выглядит так:
                        var form1 = feedbackForm();
                                form1.init({
                                    id: '#feedbackForm',
                                    isHideForm: true
                                });
                        
                                var form2 = feedbackForm();
                                form2.init({
                                    id: '#feedbackForm2',
                                    isHideForm: true
                                });
                        Но если первую форму не открывать, а во второй нажать отправить, то форма не отправляется, а в первой поля подсвечиваются как не прошедшие валидацию. Что я делаю не так? Ощущение, что при клике на кнопку второй формы вызывается первая.

                        UPD если в первой форме заполнить поля и закрыть ее, а во второй нажать кнопку отправить, то отправится первая форма.
                        1. Александр Мальцев
                          20 апреля 2020, 15:37
                          Здравствуйте! Для второй формы в HTML укажите соответсвующий id и значение атрибута action:
                          <form id="feedbackForm2" action="/feedback/process/process2.php" enctype="multipart/form-data" novalidate>
                          
                          1. Захар
                            20 апреля 2020, 16:00
                            Так и делал. В итоге все равно вызывается только первая форма. В результате использовал эту форму itchief.ru/php/feedback-form-for-website
                            С ней все получилось.
                        2. Кирилл Владимирович Ортынский
                          13 апреля 2020, 08:02
                          В общем разобрался во всем и со всем (по крайней мере в том что нужно), но вот беда… вставляю в html коде в форму поле телефон и вроде все норм, но происходит вот такая штука:
                          <img
                          src=«https://itchief.ru/assets/uploadify/4/b/9/4b9d9eea9c68e595c04e829c954ed4dcs.jpg» class=«fancybox thumbnail center»>
                          1. Александр Мальцев
                            13 апреля 2020, 14:20
                            Может какой-нибудь элемент не закрыли, проверьте разметку через валидатор.
                            1. Кирилл Владимирович Ортынский
                              13 апреля 2020, 14:42
                              перепроверил несколько раз, закрыто все. по network тоже смотрел все в порядке. Добавляю любой элемент, неважно, и такое ощущение что фон разрывает, убираю — все на месте
                              1. Александр Мальцев
                                13 апреля 2020, 14:59
                                Проанализируйте стили элементов с помощью инструментов разработчика и найдите из-за чего это происходит.
                          2. Кирилл Владимирович Ортынский
                            13 апреля 2020, 04:36
                            Доброго времени суток!
                            Форму интегрировал все прекрасно. Но при нажатии кнопку отправить выдает сообщение: Исправьте данные и отправьте форму ещё раз.
                            Все данные введены.
                            Подскажите, может я что то недонастроил? И подскажите, начинающему, где нужно указать почту куда должно приходить сообщение?
                            Спасибо большое
                            1. Кирилл Владимирович Ортынский
                              13 апреля 2020, 06:39
                              Нашел свои ошибки.
                              Только вот какой вопрос далее: если пользователь указывает не существующий e-mail, то показывается сообщение Исправьте данные и отправьте форму ещё раз. Возможно как то сделать так чтобы в этом случае было сообщение: Ваш e-mail не существует?
                              Заранее благодарю и огромное спасибо за ваши труды!
                            2. Сергио
                              09 апреля 2020, 23:52
                              Доброго времени суток,
                              Александр.

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

                              <br />
                              <b>Warning</b>:  require_once(../phpmailer/src/Exception.php): failed to open stream: Нет такого файла или каталога in <b>/home/users/e/olololo/domains/test.ru/feedback2020/process/process.php</b> on line <b>45</b><br />
                              <br />
                              <b>Fatal error</b>:  require_once(): Failed opening required '../phpmailer/src/Exception.php' (include_path='.:/usr/local/zend-5.6/share/pear') in <b>/home/users/e/olololo/domains/test.ru/feedback2020/process/process.php</b> on line <b>45</b><br />
                              
                              п.с. версия php 5.6
                              1. Александр Мальцев
                                13 апреля 2020, 14:27
                                Здравствуйте. Проверьте есть ли у вас phpmailer в feedback2020.
                                1. Сергио
                                  13 апреля 2020, 14:39
                                  всё присутствует.

                                  До этого пользовался вашими формами(скаченные года два назад) и было всё ок.

                                  перепроверил всё 100500 раз, все пути, папки.
                                  менял версии php. Проверял права доступа к файлам, папкам. Всё в норме.
                                  Не пойму в чем может быть дело…
                                  1. Александр Мальцев
                                    13 апреля 2020, 15:03
                                    Тут дело не в версии php. Это связано с тем, что он не может открыть файл «Exception.php» из-за того, что не нашёл его по указанному пути «../phpmailer/src/Exception.php».
                              2. Ахмет Шабакаев
                                20 марта 2020, 09:12
                                Здравствуйте.
                                Форму изменил (2.0.1 SMPT), протестировал — письма приходят на указанную почту.

                                У меня возникла проблема интеграции формы обратной связи в тело страницы. На лицо конфликт стилей и скриптов — изначально на странице использовались
                                css/bootstrap.min.css
                                js/bootstrap.min.js

                                при интеграции формы
                                feedback/vendors/bootstrap/css/bootstrap.min.css
                                feedback/vendors/bootstrap/js/bootstrap.min.js

                                При попытке скомбинировать либо не работает форма обратной связи либо происходит смещение основных форм страницы, пока самый лучший результат получился при использовании — css/bootstrap.min.css и js/bootstrap.min.js
                                скрипт и стиль из папки feedback отключены

                                Но скрытые формы вылезли,
                                <img
                                src=«https://itchief.ru/assets/uploadify/5/2/f/52f9fa2c72f03d1c536a1951a62a581ds.jpg» class=«fancybox thumbnail center»>

                                в затруднении, подскажите как сделать, так что бы было как форме обратной связи до интеграции?
                                1. Александр Мальцев
                                  21 марта 2020, 14:29
                                  Здравствуйте. В этой сборке используется Bootstrap 4, а у вас скорее всего третья версия. В этом случае вам нужно либо дописать стили, либо изменить их под третью версию. Например, эта сборка вообще отвязана от каких-либо CSS фреймворков, в ней все её стили находятся в «style.css». Поэтому посмотрите как вам лучше и доработайте визуальную составляющую формы под свой проект.
                                  1. Ахмет Шабакаев
                                    25 марта 2020, 14:00
                                    Доброго времени суток, Александр, в указанной сборке нет обхода ограничений хостинга в плане отправки сообщений?
                                    1. Александр Мальцев
                                      25 марта 2020, 16:09
                                      Здравствуйте! В этой сборке такого нет.
                                      1. Ахмет Шабакаев
                                        25 марта 2020, 16:53
                                        Я и смотрю, что по сравнению 2.0.1. не те настройки.
                                        Оставил старую форму (feedback_v.2.0.1_with_phone) — бутсрап 3, она полностью меня устраивает, но я её так и не проверил на работоспособность на хосте. С Денвером не получилось, на beget просят денег.
                                        feedback-form-in-modal-v.2.0.1 — бутсрап 4 с обходом ограничений хоста, но конфликт js и css
                                        feedback-modal-1.1 — бутсрап 3 с независимыми css, но опять ограничение хоста.
                                        feedback-name-email-phone-message — форма практически идеальная, но опять ограничение хоста…
                                        1. Александр Мальцев
                                          28 марта 2020, 15:26
                                          Теперь дошло про какие ограничения хостинга вы спрашивали :)
                                          Во всех свежих версиях различных форм обратных связей код для email отправки через SMTP имеется. Но, если в какой версии его нет, то вы можете добавить его туда самостоятельно.
                                          Для этого необходимо в php файл вставить 2 фрагмента.
                                          1. Добавить константы:
                                          const
                                          IS_SENDING_MAIL_VIA_SMTP = true, // выполнять отправку писем через SMTP
                                          // Если IS_SENDING_MAIL_VIA_SMTP установлен равным true
                                          MAIL_SMTP_HOST = 'ssl://smtp.yandex.ru', // SMTP-хост
                                          MAIL_SMTP_PORT = '465', // SMTP-порт
                                          MAIL_SMTP_USERNAME = 'alex@yandex.ru', // здесь нужно указать email пользователя с которого будет отправлять письмо (SMTP-пользователь)
                                          MAIL_SMTP_PASSWORD = 'пароль_от_почты_alex@yandex.ru'; // здесь нужно указать пароль от почты (SMTP-пароль)
                                          2. Вставить следующий код (после создания экземпляра класса PHPMailer и установления кодировки):
                                          ...
                                          $mail = new PHPMailer;
                                          $mail->CharSet = 'UTF-8';
                                          
                                          /* добавить этот код (для отправки письма по SMTP) */
                                          if (IS_SENDING_MAIL_VIA_SMTP === true) {
                                            $mail->isSMTP();
                                            $mail->SMTPAuth = true;
                                            $mail->Host = MAIL_SMTP_HOST;
                                            $mail->Port = MAIL_SMTP_PORT;
                                            $mail->Username = MAIL_SMTP_USERNAME;
                                            $mail->Password = MAIL_SMTP_PASSWORD;
                                          }
                                          ...
                                          
                                          1. Ахмет Шабакаев
                                            28 марта 2020, 16:15
                                            О да!!! Спасибо огромное!!!
                                    2. Ахмет Шабакаев
                                      21 марта 2020, 22:50
                                      Большое спасибо, попробую сделать так как В написали.
                                  2. Ахмет Шабакаев
                                    24 февраля 2020, 12:03
                                    Доброго времени суток. Александр, бьюсь с формой обратной связи, добавил окно с телефоном (встало криво, но вроде работает), добавил на beget по инструкции, пока не особо понял, как и куда прописать все настройки отправки информации с формы обратной связи на свой ящик. У Вас нет на сайте инструкции?

                                    P.s. У Вас от формы к форме в папке Process, то один файл process.php, то 2 (добавочный process_settings.php) и я не понял как все настроить надо для отправки.

                                    Заранее спасибо.
                                    1. Александр Мальцев
                                      24 февраля 2020, 14:04
                                      Добрый день!
                                      Тут нужно открыть файл «process_settings.php» и изменить значение этих параметров на свои значения:
                                      // от какого email будет отправляться письмо
                                      const MAIL_FROM = 'no-reply@mydomain.ru';
                                      // от какого имени будет отправляться письмо
                                      const MAIL_FROM_NAME = 'Имя_сайта';
                                      // кому необходимо отправить письмо
                                      const MAIL_ADDRESS = 'manager@mydomain.ru';
                                      
                                      Этот вариант без SMTP, если нужно отправить письмо через этот протокол, то в этом случае нужно доработать файл «process.php».
                                      1. Ахмет Шабакаев
                                        25 февраля 2020, 14:46
                                        // от какого email будет отправляться письмо
                                        const MAIL_FROM = 'no-reply@mydomain.ru'; — это почтовый ящик настроенный на сервере, правильно? Или можно так и оставить как 'no-reply@mydomain.ru'?
                                        1. Александр Мальцев
                                          25 февраля 2020, 15:07
                                          MAIL_FROM — это константа, содержащая email адрес, с которого как бы было отправлено письмо. При этом этот ящик не обязательно должен присутствовать на сервере. Но если вы вместо «mydomain.ru» не укажите свой домен, то хостер скорее всего не будет пропускать их через свой фильтр. Т.к. в этом случае вы могли бы слать свои письма от доменов, не принадлежащих вам (например, microsoft.com и т.д.).
                                          1. Ахмет Шабакаев
                                            25 февраля 2020, 16:19
                                            Я зарегистрировал домен beget (d96376ga.beget.tech) на Яндекс (подтвердил существование домена + МХ запись),
                                            <img
                                            src=«https://itchief.ru/assets/uploadify/1/7/8/178bdfc4c3f3c27b752c10e54109e0d4s.jpg» class=«fancybox thumbnail center»>


                                            создал ящик test@d96376ga.beget.tech,
                                            <img
                                            src=«https://itchief.ru/assets/uploadify/6/a/9/6a9d38a598820c68303a404f59d983acs.jpg» class=«fancybox thumbnail center»>


                                            добавил его в файл «process_settings.php» в строку const MAIL_FROM = 'no-reply@mydomain.ru';
                                            <img
                                            src=«https://itchief.ru/assets/uploadify/7/5/a/75a0972afbfe626e54a3dbb70a85b136s.jpg» class=«fancybox thumbnail center»>


                                            НО не работает=(
                                            <img
                                            src=«https://itchief.ru/assets/uploadify/3/9/1/391218fb9a321b57d6584b4684eb09bbs.jpg» class=«fancybox thumbnail center»>
                                            1. Александр Мальцев
                                              26 февраля 2020, 14:00
                                              В MAIL_FROM_NAME в этом случае тоже необходимо указать домен.
                                              1. Ахмет Шабакаев
                                                26 февраля 2020, 19:54
                                                Сделано
                                                <img
                                                src=«https://itchief.ru/assets/uploadify/d/1/e/d1e78342f488b7bfc6bcbfcb3cb48b78s.jpg» class=«fancybox thumbnail center»>


                                                Опять же ничего не проходит, но и явных ошибок нет.
                                                <img
                                                src=«https://itchief.ru/assets/uploadify/d/1/e/d1e78342f488b7bfc6bcbfcb3cb48b78s.jpg» class=«fancybox thumbnail center»>


                                                На beget тех.под ответил:
                                                «С нашей стороны нету ограничений на изменение MX записей для технического домена.
                                                Хочу заметить, что это домен предназначен для тестирования работы сайта на нем, а не размещения доменной почты.
                                                Функция php mail на бесплатном хостинге отключена. Форма обратной связи в этом случае работать не будет.»

                                                Что посоветуете в таком случае делать? Купить домен или есть еще какие-то бесплатные ресурсы?
                                                1. Ахмет Шабакаев
                                                  26 февраля 2020, 23:42
                                                  Еще добавили «вы можете переписать скрипт отправки, и отправлять письма через сторонние SMTP сервера, например: Yandex, Gmail, Mail.ru»
                                                  1. Александр Мальцев
                                                    29 февраля 2020, 13:12
                                                    Так, да, если функция mail отключена, то так отправить не получится.

                                                    Обновил форму на Github. Теперь есть возможность отправки формы на email через SMTP. Архив этой формы имеет версию 2.0.1.

                                                    Теперь можете взять эту форму и настроить её отправку через сторонний SMTP сервер. Для простоты теперь все php настройки находятся в одном файле «process.php».
                                                    1. Ахмет Шабакаев
                                                      13 марта 2020, 17:00
                                                      Александр, здравствуйте, напомните, пожалуйста, для того, что бы изменить форму 2.0.1 (добавить поле — Телефон, убрать отправку Сообщения и прикрепления файлов) необходимо внести изменения в HTML (index.html) — добавить\убрать соответствующие формы, php (process.php) — добавить\убрать поля и их проверку?
                                                      1. Александр Мальцев
                                                        14 марта 2020, 06:05
                                                        Здравствуйте. Да, изменения необходимо внести в 2 этих файла, а ещё в JavaScript в которой вы выполняете ициализацию формы и в шаблон письма «email.tpl».
                                                        1. Ахмет Шабакаев
                                                          17 марта 2020, 13:44
                                                          Здравствуйте.
                                                          Форму изменил, протестировал — письма приходят на указанную почту.

                                                          У меня возникла проблема интеграции формы обратной связи в тело страницы. На лицо конфликт стилей и скриптов — изначально на странице использовались
                                                          css/bootstrap.min.css
                                                          js/bootstrap.min.js

                                                          при интеграции формы
                                                          feedback/vendors/bootstrap/css/bootstrap.min.css
                                                          feedback/vendors/bootstrap/js/bootstrap.min.js

                                                          При попытке скомбинировать либо не работает форма обратной связи либо происходит смещение основных форм страницы, пока самый лучший результат получился при использовании — css/bootstrap.min.css и js/bootstrap.min.js
                                                          скрипт и стиль из папки feedback отключены

                                                          Но скрытые формы вылезли,
                                                          <img
                                                          src=«https://itchief.ru/assets/uploadify/2/0/1/20198b3598df5e0ead298bc63756b0cas.jpg» class=«fancybox thumbnail center»>


                                                          я в затруднении.
                                                          1. Ахмет Шабакаев
                                                            16 марта 2020, 15:48
                                                            Спасибо за ответы. Все очень круто.

                                                            В форме загрузки файла — «Выбрейте» написано вместо Выберите
                                                            <img
                                                            src=«https://itchief.ru/assets/uploadify/b/d/2/bd2208e5b23772519addcb297a372422s.jpg» class=«fancybox thumbnail center»>


                                                            В голом виде протестировал изменив только настройки в форме process.php
                                                            Письма приходят. Буду теперь кумекать как в форме сделать как нужно мне.
                                                            1. Александр Мальцев
                                                              21 марта 2020, 15:45
                                                              Спасибо, в исходниках на Github поправил опечатку.
                                          2. Ахмет Шабакаев
                                            24 февраля 2020, 16:41
                                            Спасибо за ответ. Насколько я знаю, Вы не раз отмечали, что пользуетесь именно SMTP, зачем в таком случае выкладывать вариант без него? Или это был своеобразная проба пера?
                                            1. Александр Мальцев
                                              25 февраля 2020, 14:19
                                              Да, форму в дальнейшем буду улучшать.
                                        2. Bexultan
                                          17 сентября 2019, 11:37
                                          Добрый день Александр, спасибо за форму, отличный дизайн, запустил на своем сервере вашу форму, и нажимаю на сабмит, ничего не происходит, просто жму несколько раз на кнопку, все равно не реагирует, и не показывает картинку капчи, можете помочь с этим вопросом?
                                          1. Nik
                                            17 сентября 2019, 13:47
                                            Возможно вы не подключили скрипты
                                          2. Dmitry
                                            16 сентября 2019, 10:49
                                            Здравствуйте, Александр.
                                            Поставил форму обратной связи с помощью fancybox, в документации нашел код, который выводит html. Скрипт bootstrap 4 модального окна хочу отключить. Все хорошо, все работает вот только не выводится placeholder, конечно не критично, но)
                                            Подскажите пожалуйста, может можно как-нибудь это исправить.
                                            1. Александр Мальцев
                                              16 сентября 2019, 13:47
                                              Привет. Желательно ссылку на форму в какой-нибудь песочнице или архив. Так пока не знаю, что посоветовать.
                                              1. Dmitry
                                                16 сентября 2019, 17:37
                                                1. Александр Мальцев
                                                  17 сентября 2019, 15:20
                                                  Добавьте в CSS:
                                                  input::placeholder,
                                                  textarea::placeholder {
                                                    color: #bdbdbd !important; 
                                                  }
                                                  
                                                  1. Dmitry
                                                    17 сентября 2019, 15:49
                                                    Большое Вам спасибо! Заработало)
                                            2. Wird
                                              24 мая 2019, 17:07
                                              Здравствуйте! Спасибо, отличный скрипт!
                                              Постоянно обновляется и что-то меняется… я даже не успеваю в изменения вникать… раньше было всплывающее окно об удачной отправке! Если бы это было опцией — было бы идеально, как раньше, в старых версиях… например открыть модальное с информацией об успешной отправке…
                                              1. Александр Мальцев
                                                25 мая 2019, 09:57
                                                Здравствуйте! Это форма и так в модальном окне. Как-то при открытом одном модальном окне отображать ещё одно для отображения сообщения, что-то не очень…
                                                Если нужно могу просто добавить в JavaScript генерацию некоторого кастомного события для страницы. В этом случае каждый разработчик, в зависимости от того как ему нужно, сможет очень просто добавить нужную логику.
                                                1. Wird
                                                  25 мая 2019, 10:23
                                                  В модальном? У меня просто текстом, и сама форма не в модальном...
                                                                <!-- Сообщение об успешной отправки формы -->
                                                                <div class="form-result-success d-none text-center justify-content-center align-items-center">
                                                                  <div class="alert alert-success rounded-0" style="z-index: 1001;">Форма успешно отправлена. Нажмите на<a class="alert-link" href="#" data-reloadform="#feedback-form">ссылку</a>, чтобы отправить ещё одно сообщение.</div>
                                                                </div>
                                                  
                                                  Это я самую последнюю версию скачал.
                                                  Буду благодарен если добавите возможность ставить любое событие по успешной отправке…
                                                  1. Александр Мальцев
                                                    27 мая 2019, 14:38
                                                    Обновил форму на Github.
                                                    Теперь чтобы отключить стандартное сообщение об успешной отправке достаточно в форму добавить параметр isShowSuccessMessage и установить ему значение false.
                                                    var form1 = new ProcessForm({
                                                      isShowSuccessMessage: false
                                                    });
                                                    form1.init();
                                                    
                                                    Событие которое будет генерироваться после успешной отправке называется pf_success.
                                                    Пример обработки события pf_success:
                                                    $(document).on('pf_success', function (e, data) {
                                                      if (data.data.id === 'feedback-form') {
                                                        // открываем модальное окно с нужным сообщением
                                                        $('#pf_success').modal('show');
                                                      }
                                                    });
                                                    
                                                    // сбрасываем состояние формы после закрытия модального окна
                                                    $('#pf_success').on('hidden.bs.modal', function () {
                                                      form1.reset();
                                                    });
                                                    
                                                    Готовый пример, в котором сообщение об успешной отправки выводится в модальном окне можно посмотреть здесь.
                                                    1. Wird
                                                      27 мая 2019, 15:17
                                                      Спасибо вам за оперативность! И отдельное спасибо за форму!
                                              2. nataliya
                                                09 апреля 2019, 01:33
                                                Добрый день! Подскажите, пожалуйста, почему так получается…
                                                Форма работает, отправляет и т.д. Но на странице она не активна и еще и меню видно, через форму.
                                                Проблема наверно на странице?(

                                                Помогите пожалуйста…
                                                1. Александр Мальцев
                                                  11 апреля 2019, 15:23
                                                  Добрый! Вам необходимо правильно настроить CSS-свойство z-index для этих элементов.
                                                2. Rufina
                                                  21 марта 2019, 10:38
                                                  Добрый день. После отправки формы выводится сообщение, о том, что все ок, закрываешь форму, нажимаешь на кнопку вызова модального окна, для повторной отправки сообщения, а там всё то же сообщение об успешной отправке письма. Подскажите пожалуйста, как реализовать повторную отправку сообщения без перезагрузки страницы и без перехода по ссылке, которая есть в сообщении об успешной отправке письма.
                                                  1. Александр Мальцев
                                                    21 марта 2019, 13:54
                                                    Добрый! Для изменения формы под свои нужды желательно иметь минимальные знания и умения по JavaScript, jQuery и PHP. Без них тяжеловато будет это выполнять.
                                                    Например, это реализовать можно так:
                                                    1. Добавить в конец тела функции _setupListener (process-form.js) код:
                                                    $(_defaults.id).on('clearSuccessMessage', function () {
                                                      _showForm(_$form);
                                                    });
                                                    
                                                    2. В «main.js» добавить следующий код:
                                                    $('#feedbackFormModal').on('hidden.bs.modal', function () {
                                                        $('#feedbackForm').trigger('clearSuccessMessage');
                                                    });
                                                    
                                                    Данный код будет после скрытия модального окна Bootstrap вызывать пользовательское событие «clearSuccessMessage» для элемента с id, равным «feedbackForm».
                                                    Обработчик данного события (1) будет скрывать сообщение, и отображать форму.
                                                    Теперь после закрытия модального окна (после успешной отправки) и его открытия будет отображаться не сообщение, а «чистая» форма, с помощью которой можно будет отправить ещё одно сообщение.
                                                    1. Rufina
                                                      21 марта 2019, 14:24
                                                      возможно я конечно не туда куда нужно вставляю код в main.js, но не работает
                                                      1. Александр Мальцев
                                                        21 марта 2019, 14:41
                                                        Вот ссылка.
                                                        1. Rufina
                                                          21 марта 2019, 14:47
                                                          точно, не туда вставила, спасибо большое!
                                                  2. ilya
                                                    13 марта 2019, 19:49
                                                    Здравствуйте, подскажите как подключить файл английской локализации при проверке введённых данных?
                                                    Форму переписал на английский, а сообщения ошибок заполнения выводятся по-русски.
                                                    1. Александр Мальцев
                                                      14 марта 2019, 14:34
                                                      Здравствуйте!
                                                      На клиенте, в соответствии с языком браузера. Если язык браузера английский, то и сообщения будут на английском.

                                                      На сервере (в php) язык браузера можно определить так:
                                                      $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
                                                      Далее в зависимости от языка можете настроить так, чтобы сообщения выводились в зависимости от значения этой переменной.
                                                      if ($lang == 'ru') {
                                                        // сообщение на русском языке
                                                      } else {
                                                        // сообщение на английском языке
                                                      }
                                                      
                                                      1. ilya
                                                        14 марта 2019, 18:18
                                                        Ну к примеру в самом файле process.php есть же варианты ответа, не по умолчанию, а которые прописываешь сам, почему эти варианты не выходят?
                                                        Тоже из-за языка браузера?
                                                        1. Александр Мальцев
                                                          18 марта 2019, 14:57
                                                          Просто проверка до process.php по умолчанию не доходит, т.к. валидация формы сначала выполняется в браузере.
                                                          Валидация в process.php нужна для того, что проверка в браузере не является надёжной.
                                                          Например, пользователь может открыть инструменты разработчика в браузере и удалить атрибут required. В этом случае браузер пропустит проверку этого поля формы, а сервер нет. В этот раз сообщение будет отображено пользователю именно то, которое ему придёт с сервера.
                                                    2. peps
                                                      04 марта 2019, 17:03
                                                      Где-то встречал что есть возможность не насиловать «нормальных» пользователей капчей, что можно чтобы форма была без капчи, необходимо вставить hidden-поле и при автозаполнении спам-комментарий не отправлялся если заполнены все поля (робот же заполнит их все, даже hidden). как-то можно эту форму так модифицировать? подскажите пожалуйста как такую валидацию сделать.

                                                      1. Александр Мальцев
                                                        07 марта 2019, 07:32
                                                        Ну эта самая простая защита.
                                                        Её можно сделать так. Удалить из HTML (index.html) и proces.php куски кода, отвечающие за работу капчи.
                                                        Добавить в форму скрытое поле, например, так:
                                                        <input type="hidden" name="captcha">
                                                        
                                                        В PHP добавить простенькую проверку:
                                                        // если значение не пустое, то значит это спам
                                                        if (!empty($_POST['captcha'])) {
                                                            $data['result'] = 'error';
                                                        }
                                                        
                                                        Архив формы с защитой от спама с помощью скрытого поля можно загрузить отсюда.
                                                      2. Constantin
                                                        04 марта 2019, 14:22
                                                        Александр, здравствуйте. Такой вопрос — не работает форма на nginx. Можно ли ее как-нибудь переделать?
                                                        1. Александр Мальцев
                                                          06 марта 2019, 12:04
                                                          Здравствуйте! Проверьте, какая установлена у вас версия php. Должна быть не ниже 5.6. Что у вас конкретно не работает? Какие ошибки?
                                                          1. Constantin
                                                            07 марта 2019, 05:48
                                                            И снова здравствуйте! php версия 7.2 А ошибка — пост запрос не обрабатывается. Можно ли вместо php сделать на perl или python?
                                                            1. Александр Мальцев
                                                              07 марта 2019, 06:55
                                                              Надо смотреть ошибки, без этого никак. Может у вас какое-то расширение для php не подключено. Нет, материалов по Perl и Python не планируется.
                                                        2. Алексей
                                                          05 февраля 2019, 17:07
                                                          Доброго дня!
                                                          При скачивании формы на bootstrap 3 по ссылке с яндекс диска получаю форму на bootstrap 4. Перезалейте пожалуйста.
                                                          1. Александр Мальцев
                                                            06 февраля 2019, 16:16
                                                            Доброго! Поправил ссылку.
                                                          2. Вячеслав
                                                            23 января 2019, 02:46
                                                            Добрый день! Не пойму, поставил форму, на одном сайте работает, на другом нет. При отправке выдает: Исправьте данные и отправьте форму ещё раз. В чем может быть проблема? С хостингом проблем нет, отправляет и принимает…

                                                            <img
                                                            src=«https://itchief.ru/assets/uploadify/0/9/2/092b506bba3912d20676c75ee008c715s.jpg» class=«fancybox thumbnail center»>
                                                            1. Александр Мальцев
                                                              23 января 2019, 14:44
                                                              Добрый! Может версия php ниже 5.6?
                                                              Чтобы определить какая именно ошибка приходит, необходимо открыть вкладку Network в браузере и посмотреть ответ сервера в ней.
                                                              1. Кирилл Владимирович Ортынский
                                                                13 апреля 2020, 05:56
                                                                Версия 7.2, проблема та же
                                                                1. Вячеслав
                                                                  24 января 2019, 12:26
                                                                  Возможно, проверил стояла 5.6, поменял на 7.1, обновил почтовые службы, заработало! =) Спасибо за ответ
                                                              2. Александр
                                                                29 декабря 2018, 10:49
                                                                Добрый день.
                                                                Возникла проблема, по причине нельзя использовать собственный каталог для загрузки.
                                                                Подскажите как подправить код для использования временного каталога на сервере.
                                                                Как понимаю нужно подправлять processor.php
                                                                Вместо move_uploaded_file использовать is_uploaded_file
                                                                Но, что то не выходит.
                                                                1. Александр Мальцев
                                                                  04 января 2019, 15:10
                                                                  Добрый день!
                                                                  Для этого необходимо удалить блок для перемещения в папку Uploads.
                                                                  А там где прикрепляем файлы использовать следующий код:
                                                                  foreach ($_FILES['attachment']['name'] as $key => $attachment) {
                                                                    // временное имя файла на сервере
                                                                    $fileTmp = $_FILES['attachment']['tmp_name'][$key];
                                                                      $mail->addAttachment($fileTmp);
                                                                    }
                                                                  }
                                                                  
                                                                  В этом случае файлы в письме будут иметь временные имена, с которыми принятые файлы были сохранены на сервере.
                                                                2. Алексей
                                                                  18 декабря 2018, 22:12
                                                                  Александр, спасибо за формы! Подскажи пожалуйста что и куда нужно прописать, чтобы после отправления формы и сообщении об успешной отправке перекидывало на страницу «спасибо».
                                                                  1. Александр Мальцев
                                                                    21 декабря 2018, 14:45
                                                                    Алексей, пожалуйста!
                                                                    Вам необходимо открыть файл process-forms.js и изменить код в условии на следующий:
                                                                    ...
                                                                    var _success = function (data) {
                                                                      // если сервер вернул ответ success, то значит данные отправлены
                                                                      if (data.result === "success") {
                                                                        /* начало изменения */
                                                                        location.href = 'URL_страницы_спасибо';
                                                                        return;
                                                                        /* конец изменения */
                                                                      }
                                                                      ...
                                                                    
                                                                    1. Алексей
                                                                      21 декабря 2018, 15:22
                                                                      Александр, спасибо огромное, все получилось!
                                                                  2. alex
                                                                    23 октября 2018, 15:48
                                                                    verify.php — Где же найти этот файл? уже голова кругом…
                                                                    1. Александр Мальцев
                                                                      23 октября 2018, 16:16
                                                                      В обновлённой версии формы это файла нет. Похожий функционал в этой реализации выполняет файл process.php.
                                                                      1. alex
                                                                        23 октября 2018, 16:31
                                                                        Спасибо! Подскажите пожалуйста как поправить проверку телефона вида — +375 хх ххх хх хх?
                                                                        1. Александр Мальцев
                                                                          25 октября 2018, 14:08
                                                                          Если вы используете jQuery Mask Plugin, то так:
                                                                          $('[name="phone"]').mask("+375 00 000 00 00", {
                                                                            placeholder: "+375 __ ___ __ __"
                                                                          });
                                                                          
                                                                    2. Лариса
                                                                      06 августа 2018, 04:01
                                                                      Подскажите как убрать у кнопки disabled.
                                                                      Я сделала форму без галочки подтверждения.
                                                                      И в случае, когда вводится некорректный email, выводится сообщение «Исправьте данные и отправьте форму ещё раз.» и кнопка отправки формы неактивна.
                                                                      У вас она становится активной, если проставить галочку, но у меня ее нет в итоге чел. введя неправильный email оказывается в тупике. Где эта хрень, которая делает кнопку неактивной в данном случае, мне нужно ее убрать, но я ее в упор не вижу! Помогите!
                                                                      1. Александр Мальцев
                                                                        06 августа 2018, 13:57
                                                                        Поправил этот момент в файле process-forms.js. Проект на гитхабе обновлен.
                                                                        1. Лариса
                                                                          06 августа 2018, 19:17
                                                                          Спасибо! Теперь с этим все ОК.
                                                                      2. igor
                                                                        01 августа 2018, 00:05
                                                                        Помогите! Не могу понять почему выдает ошибку при отправке сообщения.
                                                                        … Произошли ошибки! Исправьте их и отправьте форму ещё раз…
                                                                        пробовал комментировать
                                                                        ...
                                                                        // отправляем письмо
                                                                        /*if (!$mail->send()) {
                                                                            $data['result'] = 'error';
                                                                        }*/
                                                                        ...
                                                                        //$mail->send();
                                                                        ...
                                                                        не помогло!
                                                                        спасибо!
                                                                        1. Александр Мальцев
                                                                          01 августа 2018, 14:23
                                                                          Посмотрите в этом комментарии. Там приведена инструкия как посмотреть ответ сервера.
                                                                          1. igor
                                                                            01 августа 2018, 23:35
                                                                            500 (Internal Server Error)
                                                                            в Response пусто
                                                                            1. Александр Мальцев
                                                                              02 августа 2018, 14:04
                                                                              Могу посоветовать проверить пути к файлам и права на файлы и папки. Проверить из-за прав это или нет можно очень просто, а именно установить файлам и папкам права, равные 777. Если это из-за прав, то разбираться уже с ними.
                                                                              1. igor
                                                                                02 августа 2018, 22:55
                                                                                изменил на 777, ничего не изменилось!
                                                                                попробовал старую версию с вашего сайта (без модального окна и без добавления изображений) все работает!
                                                                                1. Александр Мальцев
                                                                                  04 августа 2018, 08:45
                                                                                  Не знаю, без логов сложно подсказать.
                                                                        2. Hukuma
                                                                          19 июля 2018, 03:14
                                                                          Александр здравствуйте. Большое спасибо за то что делаете!

                                                                          К сожалению не нашел готового варианта под себя, поэтому спрошу.
                                                                          Нужно размещение двух форм на сайте (bootstrap 4):
                                                                          1. Одна для отправки заявки на услугу, где только два обязательных поля (Имя и E-mail) и необязательное (телефон). Без капчи, прикрепления файлов, соглашений об обязательствах и т.д.
                                                                          2. И вторая, для отправки текстового сообщения (консультации) где нужно будет указать только E-mail.

                                                                          Первую форму я переделал из варианта «Форма обратной связи с использованием ajax, php и bootstrap», все работает, но куча лишнего кода удручает)
                                                                          А с размещением второй формы проблема, т.к. даже смена всех ID и дублирование js и php файлов не помогает.

                                                                          Может подскажите вариант из Вашего каталога форм на Ядиске, с которого будет проще всего слепить по моим потребностям?
                                                                          Заранее Спасибо.

                                                                          1. Александр Мальцев
                                                                            19 июля 2018, 16:37
                                                                            Здравствуйте, спасибо за отзыв!
                                                                            Возьмите за основу эту форму. В ней нет привязки к id. К тому же она выполнена на Bootstrap 4. На гитхабе она расположена здесь. Один js можно использовать для обработки нескольких форм, то же касается и php. Но всё конечно зависит от навыков и уровнем владения этими языками.
                                                                            Так как формы универсальные, т.е. с возможностью включения и отключения дополнительных действий, то в них содержится код на эти случаи. Минимальный или оптимальный код можно написать только под конкретную задачу.
                                                                          2. Виталий
                                                                            17 июля 2018, 12:30
                                                                            Александр, добрый день!
                                                                            Подскажите, как менять заголовок по средствам кода, если модальное окно не одно?
                                                                            Спасибо.
                                                                            1. Александр Мальцев
                                                                              17 июля 2018, 14:27
                                                                              Добрый!
                                                                              Например, можно сделать так.
                                                                              1. Добавить к кнопкам, с помощью которых пользователь будет открывать модальные окна, атрибут data-title. Содержимое атрибута — это название модального окна.
                                                                              <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#feedbackFormModal" data-title="Название заголовка">
                                                                                Открыть форму
                                                                              </button>
                                                                              
                                                                              2. Добавить на страницу скрипт:
                                                                              $('[data-toggle="modal"]').click(function (e) {
                                                                                e.preventDefault();
                                                                                var idSelector = $(this).attr('data-target');
                                                                                var title = $(this).attr('data-title');
                                                                                $(idSelector).find('.modal-title').text(title);
                                                                              });
                                                                              
                                                                              1. Алексей
                                                                                23 октября 2018, 18:48
                                                                                Александр, подскажите, как данные из атрибута data-title=«Название заголовка» передать на почту (используя «Форма обратной связи для сайта с отправкой на почту») Что нужно дополнить в main.js, process.php....?
                                                                                1. Виталий
                                                                                  17 июля 2018, 14:49
                                                                                  2-й вариант не пробовал, первый не работает(((
                                                                                  пользуюсь вашей сборкой, очень удобно, но Title не выходит.

                                                                                  Ниже код, указываю ModalForm.changeTitle($(this).attr('data-title')); для применения атрибута. Может что некорректно?
                                                                                  var ModalForm = new ModalApp.ModalProcess({ id: 'modal-form' }); //Форма в modal
                                                                                      ModalForm.init();
                                                                                      $('.modal-form').click(function(){
                                                                                          var _this = this;
                                                                                          $.get('/modules_my/feedback/modalForm.php', {content:$(this).attr('data-form')},function(data){
                                                                                            if (data) {
                                                                                              ModalForm.changeTitle($(this).attr('data-title'));
                                                                                              ModalForm.changeBody(data);
                                                                                              switch ($(_this).attr('data-form')) {
                                                                                                case 'Form_1':
                                                                                                  var form_1 = new ProcessForm({ idForm: 'Form_1', hideForm: true });
                                                                                                  form_1.init();
                                                                                                  break;
                                                                                                case 'Form_2':
                                                                                                  var form_2 = new ProcessForm({ idForm: 'Form_2', hideForm: true }); 
                                                                                                  form_2.init();
                                                                                                  break;
                                                                                              }
                                                                                              ModalForm.showModal();      
                                                                                            }
                                                                                          });
                                                                                          return false;
                                                                                      });

                                                                                  Вызов одного из…
                                                                                  <a href="#" class="btn_green button button-borderless modal-form" data-title="Basic Linux Access Control" data-form="Form_2"><i class="i-comment-z"></i></a>
                                                                                  1. Александр Мальцев
                                                                                    17 июля 2018, 15:30
                                                                                    1. Александр Мальцев
                                                                                      17 июля 2018, 15:28
                                                                                      У вас контекст неправильный, нужно вместо this использовать _this:
                                                                                      ModalForm.changeTitle($(_this).attr('data-title'));
                                                                                      
                                                                                      1. Виталий
                                                                                        17 июля 2018, 16:06
                                                                                        СПАСИБО!
                                                                                        исправил ошибку, работает!
                                                                                        1. Виталий
                                                                                          17 июля 2018, 17:54
                                                                                          Александр, в продолжении темы вопроса, подскажите.
                                                                                          Как можно скрыть футер выборочно для окон.
                                                                                          1. Александр Мальцев
                                                                                            19 июля 2018, 15:09
                                                                                            Обновил скриптик. Добавил методы hideFooter и showFooter.
                                                                                            Например:
                                                                                            var myModal1 = new ModalApp.ModalProcess({ id: 'myModal1' });
                                                                                            myModal1.init();
                                                                                            myModal1.changeBody('Содержимое модальное окна 1...');
                                                                                            myModal1.hideFooter(); // скрываем футер
                                                                                            
                                                                                            1. Виталий
                                                                                              19 июля 2018, 15:12
                                                                                              Спасибо!)
                                                                                2. Анатолий
                                                                                  27 мая 2018, 18:26
                                                                                  День добрый Александр.
                                                                                  Ваш сайт очень полезен начинающим и практикующим фрилансерам.
                                                                                  Спасибо за ваши уроки.
                                                                                  Вопрос по этой форме.
                                                                                  Разместил на сайте,
                                                                                  Работает письма отправляются, файлы посылаются, подтверждение отправителю посылается.
                                                                                  не получается только индикация успешной отправки формы.
                                                                                  Может подскажете как сделать например Модальное окно с сообщением «Ваше сообщение успешно отправлено получателю».
                                                                                  1. Александр Мальцев
                                                                                    28 мая 2018, 13:42
                                                                                    Добрый! Оно и так по умолчанию отображает сообщение об успешной отправке.
                                                                                    1. Анатолий
                                                                                      28 мая 2018, 22:08
                                                                                      В том то и проблема,
                                                                                      что по окончании работы формы зеленая панелька
                                                                                      «Форма успешно отправлена. Нажмите на ссылку чтобы отправить ещё
                                                                                      одно сообщение.»
                                                                                      Не появляется.
                                                                                      Не хватает какой-то строчки сценария.
                                                                                      Возможно нужен еще какой-то файлик сценария?
                                                                                      Все работает за исключением
                                                                                      зеленой панельки
                                                                                      «Форма успешно отправлена. Нажмите на ссылку чтобы отправить ещё
                                                                                      одно сообщение.»
                                                                                      Александр, Куда копать, подскажите???

                                                                                      1. Александр Мальцев
                                                                                        05 июня 2018, 14:47
                                                                                        Откройте в браузере консоль разработчика, перейдите на вкладку Network. После этого отправьте форму и посмотрите какой приходит ответ от process.php.
                                                                                        Предоставьте ответ, тогда будет понятно в чём ошибка и что необходимо подправить.
                                                                                        response feedback form
                                                                                        1. Анатолий
                                                                                          05 июня 2018, 16:01
                                                                                          Александр, спасибо большое, Заработало.
                                                                                          Спасибо за Ваши уроки.
                                                                                        2. Дарья
                                                                                          29 мая 2018, 15:10
                                                                                          Добрый день! У меня та же проблема. Форма отлично работает, но не появляется сообщение успешной отправки. Если найдёте решение напишите пожалуйста.
                                                                                          1. Александр Мальцев
                                                                                            05 июня 2018, 14:48
                                                                                            Добрый день! Воспользуйтесь вышеприведённым комментарием и посмотрите какой у вас приходит ответ.
                                                                                    2. Nurbolat Bekturov
                                                                                      03 апреля 2018, 14:34
                                                                                      Добрый день Александр Спасибо вам за форму но я ее чуточку отредактировал, хотел бы попросить проверить все ли у меня работоспособно? доступ к ФТП выдам, можете дать свой skype или вк или любые другие соцсети, заранее благодарю, сюда не могу отправить файлы по техпричинам(
                                                                                      1. Александр Мальцев
                                                                                        03 апреля 2018, 15:40
                                                                                        Добрый день! Спасибо! Работоспособность формы можете и сами проверить.
                                                                                        1. Nurbolat Bekturov
                                                                                          04 апреля 2018, 19:21
                                                                                          В том то и дело что у меня не-получается не могу понять в чем дело ошибка возникает вот

                                                                                          1. Александр Мальцев
                                                                                            05 апреля 2018, 14:10
                                                                                            Закомментируйте в файле process.php строчки:
                                                                                            ...
                                                                                            // отправляем письмо
                                                                                            /*if (!$mail->send()) {
                                                                                                $data['result'] = 'error';
                                                                                            }*/
                                                                                            ...
                                                                                            //$mail->send();
                                                                                            ...
                                                                                            
                                                                                            Проверьте, работает ли форма. Если да, то значит, ошибка происходит при отправке.
                                                                                            Первый шаг — это узнать, поддерживает ли хостинг или ваш тарифный план вообще отправку писем.
                                                                                            Второй шаг — почитать про требования хостинга для отправки писем. Может вы просто попадаете под фильтр хостера. Например, отправляете письма от адреса no-reply@google.com, а домен вашего сайта не google.com.
                                                                                            1. Nurbolat Bekturov
                                                                                              08 апреля 2018, 13:19
                                                                                              Извините это была проблема со стороны хоста они все починили, я хотел спросить другое я вот добавил несколько пунктов ниже скрин, и вот когда форму отправляют приходит только примечание и имя отправителся остальные данные которые он заполнил не приходят, может мне где то надо указать чтобы это тоже отправлялось на почту мне?
                                                                                              1. Александр Мальцев
                                                                                                09 апреля 2018, 14:03
                                                                                                Вам необходимо ещё добавить код в process.php и email.tpl.
                                                                                                Как это сделать, можно посмотреть в этой инструкции.
                                                                                              2. Nurbolat Bekturov
                                                                                                08 апреля 2018, 10:32
                                                                                                Здравствуйте форму починил но теперь возникла другая ошибка на почту приходит ошибка об SPF каком то ниже скрин
                                                                                        2. Павел В
                                                                                          06 марта 2018, 13:51
                                                                                          Александр спасибо за форму!

                                                                                          У меня вопрос-просьба. Пытаюсь подправить форму (bootstrap 4). Мне нужна форма только с одним полем «Телефон» с маской и кнопка «Отправить». А также при входе чтобы через 15 сек. появлялась данная форма и при уходе с сайта также чтобы она появлялась!

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

                                                                                          Подскажите, пожалуйста куском кода либо архивом на я.диск!

                                                                                          Большое спасибо!
                                                                                          1. Александр Мальцев
                                                                                            06 марта 2018, 16:44
                                                                                            Пример: yadi.sk/d/sL9-xvmP3T5d7n
                                                                                            Код для отображения формы при уходе с сайта не стал включать в пример, т.к. считаю, что так не корректно поступать с пользователем. Если он вам нужен, то можете создать его самостоятельно.
                                                                                            1. Nurbolat Bekturov
                                                                                              03 апреля 2018, 14:35
                                                                                              Добрый день Александр Спасибо вам за форму но я ее чуточку отредактировал, хотел бы попросить проверить все ли у меня работоспособно? доступ к ФТП выдам, можете дать свой skype или вк или любые другие соцсети, заранее благодарю, сюда не могу отправить файлы по техпричинам(
                                                                                              1. Павел В
                                                                                                06 марта 2018, 21:27
                                                                                                Огромное спасибо!
                                                                                            2. kiwi
                                                                                              05 марта 2018, 09:58
                                                                                              Добрый день!
                                                                                              Спасибо за полезную статью!
                                                                                              Сейчас пытаюсь прикрутить такую форму.
                                                                                              Объясните, пожалуйста, для чего в коде этой формы нужна папка phpmailer?
                                                                                              На других сайтах есть примеры других форм с обработчиком рнр, который состоит всего из нескольких строчек.
                                                                                              Чем плох такой простой вариант рнр отправки форм?

                                                                                              Сейчас у jquery версия 3.3.1. Если я поставлю ссылку на эту новую версию, то будет ли работать форма?
                                                                                              Спасибо!
                                                                                              1. Александр Мальцев
                                                                                                05 марта 2018, 16:50
                                                                                                Добрый день!
                                                                                                PHPMailer — это библиотека, для отправки почты. Почитать про неё можете на гитхабе. Если это реализовывать с помощью php-функции mail(), то это потребует написание большого кода, и повторения части функционала PHPMailer.
                                                                                                Для работы формы можете использовать версию jQuery 3.3.1.
                                                                                                1. kiwi
                                                                                                  06 марта 2018, 10:09
                                                                                                  Александр, спасибо!
                                                                                              2. Дмитрий
                                                                                                27 февраля 2018, 09:22
                                                                                                Приветствую, Александр!
                                                                                                Огромное спасибо за форму. Благодаря Вам, я реализовал свою задачу. Но все же нуждаюсь в помощи, так как являюсь начинающим и 3 дня терпения над вопросом иссякли, а попытки тщетны...) Вашу форму прикрутил к своей кнопке на сайте, отправка данных происходит, получение тоже. Мне же необходимо добавить два поля к уже существующим инпутам формы: Телефон и Просто текстовое поле, в котором будет в ручную прописываться выбранная товарная позиция. В html я реализовал эти поля, но вот на серверной стороне увы( Не могу понять в каких файлах и в каком месте добавлять новые переменные… Благодарю Вас за помощь заранее. Использую форму Bootstrap 4
                                                                                                1. Дмитрий
                                                                                                  27 февраля 2018, 09:38
                                                                                                  Вот какие поля собственно были добавлены в форму + изменен формат текстового поля с
                                                                                                  <textarea>
                                                                                                  на обычный
                                                                                                  <input>
                                                                                                  и уменьшено минимально допустимое количество символов до 10-ти (это я экспериментировал)

                                                                                                  <img
                                                                                                  src=«https://itchief.ru/assets/uploadify/9/8/6/986112a56fa69ec06c5ab5e3c8b24ec6s.jpg» class=«fancybox thumbnail center»>
                                                                                                  1. Александр Мальцев
                                                                                                    04 марта 2018, 17:14
                                                                                                    Видео (как в форму обратной связи добавить телефон): youtu.be/ui5GCMa81tM
                                                                                                    1. Александр Мальцев
                                                                                                      27 февраля 2018, 16:54
                                                                                                      Выложу на днях видео инструкцию, в которой покажу, как добавлять поля к форме, а также удалять ненужные.
                                                                                                      1. Дмитрий
                                                                                                        27 февраля 2018, 16:56
                                                                                                        Премного благодарен Вам, Саш!
                                                                                                  2. Павел В
                                                                                                    23 февраля 2018, 00:06
                                                                                                    Александр спасибо за форму!
                                                                                                    У меня вопрос-просьба. Пытаюсь подправить форму (bootstrap 4). Мне нужна форма только с одним полем «Телефон» с маской и кнопка «Отправить». А также при входе чтобы через 15 сек. появлялась данная форма и при уходе с сайта также чтобы она появлялась!

                                                                                                    Подскажите, пожалуйста куском кода либо архивом на я.диск!

                                                                                                    Большое спасибо!
                                                                                                    1. Александр Мальцев
                                                                                                      24 февраля 2018, 17:03
                                                                                                      А как можно узнать когда посетитель уйдёт с сайта? Можно конечно использоваться событие onbeforeunload и показать посетителю при закрытии вкладки предупреждающее сообщение «Хотите заполнить форму?». Но такое многие браузеры не приветствуют и данное сообщение просто не будет показано пользователю.
                                                                                                      1. Павел В
                                                                                                        24 февраля 2018, 17:44
                                                                                                        уход с сайта имеется ввиду когда пользователь курсор выводит на верхнюю часть браузера!
                                                                                                        1. Павел В
                                                                                                          03 марта 2018, 16:39
                                                                                                          Александр, вы подскажете-поможете?? неделю жду…
                                                                                                    2. Constantin
                                                                                                      25 января 2018, 07:08
                                                                                                      Александр, здравствуйте! А как бы переделать, дабы корректно отображалось и работало на Bootstrap 4?
                                                                                                      1. Александр Мальцев
                                                                                                        18 февраля 2018, 11:47
                                                                                                        Здравствуйте! Проект обновлен. Теперь он использует Bootstrap 4.
                                                                                                      2. Алексей
                                                                                                        10 октября 2017, 16:34
                                                                                                        Здравствуйте, спасибо за форму, но у меня проблемы с ней, при нажатии на кнопку появляется форма и остается сообщение: Внимание! Ваше сообщение отправлено. При нажатии обновить капчу ничего не происходит


                                                                                                        У меня есть кнопка на сайте, как мне в эту кнопку правильно вставить код с index.html?
                                                                                                        1. Александр Мальцев
                                                                                                          18 октября 2017, 15:23
                                                                                                          Здравствуйте! Сообщение по умолчанию необходимо скрыть. Для этого к нему необходимо добавить стиль:
                                                                                                          style="display: none;"
                                                                                                          
                                                                                                          Проверьте повешен ли на кнопку, с помощью которой вы обновляете капчу обработчик. А в обработчике правильно ли указан путь к php файлу.

                                                                                                          В кнопку нельзя вставить форму, с помощью неё её можно только открыть. Для этого необходимо из index.html скопировать форму на нужную страницу, а также не забыть к ней подключить стили и скрипты (как в index.html).
                                                                                                        2. 18qaz
                                                                                                          03 сентября 2017, 15:05
                                                                                                          Добрый день. Использовал одну из ваших форм в модальном окне, все работает отлично.

                                                                                                          Вопрос следующий: как использовать 2 одинаковые формы на одной и той же странице — одну в модальном окне, другую просто всегда открытую на странице? Пытаюсь использовать ту же форму, но убираю теги для открытия кнопки и модального окна — форма висит на странице но не отображается капча и кнопка обновить тоже не работает. Ради интереса задал еще один id в script.js где указывается «reload-captcha»
                                                                                                          $('#reload-capt').click(function () {
                                                                                                              $('#img-captcha').attr('src', '/feedback/cap.php?id=' + Math.random() + '');
                                                                                                            });
                                                                                                          <code>
                                                                                                          Поменял так же в хтмл:
                                                                                                          <div class="well well-sm"> <div id="reload-capt" class="btn btn-large btn-block btn-warning"><i class="glyphicon glyphicon-refresh"></i> Обновить код</div></div> 
                                                                                                          
                                                                                                          Думал этим исправить появление капчи хотя бы при нажатии на «Обновить», но ничего не получается.
                                                                                                          1. Александр Мальцев
                                                                                                            04 сентября 2017, 17:23
                                                                                                            Добрый день! Обновил проект, теперь можно использовать несколько капч на странице.
                                                                                                            Ссылка на пример, в котором используется 2 формы и у каждой есть капча: yadi.sk/d/povyeXHh3MbGQL
                                                                                                          2. Stan
                                                                                                            28 августа 2017, 12:21
                                                                                                            Добрый день! Вставил код обратной связи в основной index.html и перенес папку feedback в корень. При нажатии на кнопку всплывает форма, но в ней написано что сообщение отправлено. Как совместить css формы с css основного кода?
                                                                                                            1. Александр Мальцев
                                                                                                              28 августа 2017, 14:19
                                                                                                              Добрый день! Вынес файл index.html из папки feedback — всё нормально отрабатывает: yadi.sk/d/eWVKdTln3MPBbt
                                                                                                              Если у вас название каких-то классов совпадает, то можно изменить их имена на другие. После этого поправить стили и при необходимости JavaScript код.
                                                                                                            2. Dimarik
                                                                                                              18 августа 2017, 16:51
                                                                                                              Здравтвуйте, я — нуб. Как сделать так, чтобы в этой форме были только фио, мыло и телефон + сообщение, без каких-либо файлов и капчи. Буду искренне благодарен за помощь.
                                                                                                              1. Александр Мальцев
                                                                                                                28 августа 2017, 16:41
                                                                                                                Здравствуйте. Держите: yadi.sk/d/wYLoDNmG3MPWQP
                                                                                                              2. Вадим
                                                                                                                08 августа 2017, 19:19
                                                                                                                И так спасибо за наводку на новую версию, типы файлов норм добавляются, а вот размер установил больше, а он его не принимает.
                                                                                                                1. Александр Мальцев
                                                                                                                  09 августа 2017, 11:50
                                                                                                                  Максимальный размер файла настраивается в двух местах:
                                                                                                                  1. В process_settings.php:
                                                                                                                  const MAX_FILE_SIZE = 524288;
                                                                                                                  2. В main.js при создании объекта:
                                                                                                                  var formFeedback = new ProcessForm({idForm: 'feedbackForm', maxSizeFile: 524288});
                                                                                                                  Кроме этого ограничения могут быть выставлены также в .htaccess:
                                                                                                                  php_value upload_max_filesize 10M
                                                                                                                  php_value post_max_size 10M
                                                                                                                  
                                                                                                                2. Вадим
                                                                                                                  08 августа 2017, 17:02
                                                                                                                  А как правильно добавить типы файлов, не дадите ссылочку?
                                                                                                                  «jpeg» => «image/jpeg», а как ZIP добавить, или еще что то?
                                                                                                                  1. Александр Мальцев
                                                                                                                    08 августа 2017, 17:58
                                                                                                                    Введите в поиске Yandex или Google: mime type.
                                                                                                                    Кроме этого есть новая версия этой формы. Расположена она на Github по этому адресу. Настройка её осуществляется в файлах process_settings.php и main.js.
                                                                                                                    1. Вадим
                                                                                                                      08 августа 2017, 18:17
                                                                                                                      Я пытаюсь добавить ZIP, как не хитрю, на почту не приходит архив, и на сервер не зхагружается
                                                                                                                      а изображения норм
                                                                                                                  2. Cyberjo
                                                                                                                    04 июля 2017, 00:55
                                                                                                                    Чот как то даже и не знаю, неожиданно и не приятненько я бы сказал. Проверка показывает, что в архиве вирус virustotal.com.
                                                                                                                    1. Александр Мальцев
                                                                                                                      04 июля 2017, 04:29
                                                                                                                      Во-первых, PHP WEB-Shell — это не вирус. Это инструмент для запуска скриптов. Во-вторых, он может стать вредоносным только тогда, когда он загружен не вами. В-третьих, это ложное срабатывания антивируса Bkav на exec последовательности, которые он считает, что они есть в библиотеке PHPMailer (https://github.com/PHPMailer/PHPMailer). Но на самом деле их нет. Если есть желание, то можете сообщить о данной проблеме разработчикам этого антивируса.
                                                                                                                      1. Cyberjo
                                                                                                                        04 июля 2017, 14:57
                                                                                                                        Понятненько, ну значит ложное срабатывание…
                                                                                                                        Пытаюсь научиться, но не совсем понимаю шаги действий, поэтому прошу подскажите пожалуйста Александр, если я работаю на локальном сервере какие данные я должен ввести в этих местах?
                                                                                                                        $mail->From = 'email@mysite.ru'; // email адрес отправителя ???  вводится в модальной форме, пользователем, что тут писать email?
                                                                                                                        $mail->FromName = 'Имя сайта'; // имя отправителя ???  вводится в модальной форме, пользователем, что тут писать name?
                                                                                                                        $mail->Subject = 'Сообщение с формы обратной связи'; // тема письма??? вводится в модальной форме, пользователем, что тут писать message?
                                                                                                                        $mail->AddAddress('myemail@mail.ru'); // email адрес получателя ??? тут ввести адрес куда будут приходить письма?
                                                                                                                        
                                                                                                                        1. Александр Мальцев
                                                                                                                          04 июля 2017, 16:26
                                                                                                                          Но это очень простые вещи. Чтобы было более понятно, представлю их на картинке.
                                                                                                                          Назначение параметров PHPMailer
                                                                                                                          Например, принцип использования формы для создания обратного звонка на сайте:
                                                                                                                          1. На клиенте (пользователь): Вводит в поля формы своё имя и номер телефона. Нажимает на кнопку «Отправить».
                                                                                                                          2. На сервере (php скрипт): Получает отправленные пользователем данные, и формирует письмо менеджеру. Но для отправки письма необходимо указать от какого имени ($mail->FromName) и от какого email ($mail-From). Если это система автоматической рассылки, то обычно используют email (no-reply@имя_домена). Это означает, что не надо отвечать на данное письмо, т.к. оно было отправлено автоматически. Тема письма в данном случае является названием формы, чтобы например, менеджер, при получении письма сразу знал его назначение. $mail->AddAddress определяет email адреса менеджера, кому предназначено это письмо. В этом случае все эти данные задаются в файле php, пользователь никакого в них участия не принимает. Его (пользователя) данные добавляются только в тело письма.
                                                                                                                          3. Менеджер: Получает письмо. Просматривает содержимое письма и звонит клиенту.
                                                                                                                          1. Cyberjo
                                                                                                                            04 июля 2017, 17:58
                                                                                                                            Спасибо за попытку :)
                                                                                                                            И вы уж простите меня но я крайне далек от этой тематики и мои попытки понять, приводят к голосовому протяжному — эм-м… Как то всё сложно и я ещё больше запутался. В общем мне нужна форма обратной связи, которую я смогу прикрутить к модальному окну, где пользователь ввел некоторые данные и нажал отправить. Есть ли на вашем ресурсе такая форма где мне стоит только изменить адрес почты что бы письмо от пользователя пришло к администратору?
                                                                                                                            1. Cyberjo
                                                                                                                              04 июля 2017, 19:15
                                                                                                                              Эта запись подсвечивается как неверная в phpstorm
                                                                                                                              1. Cyberjo
                                                                                                                                05 июля 2017, 12:45
                                                                                                                                от какого email ($mail-From)

                                                                                                                                Я не понимаю этой записи хоть убейте.
                                                                                                                                    $mail->From      = 'email@mysite.ru'; // я же не могу сам себе написать в магазин.ru
                                                                                                                                    $mail->FromName  = 'Магазин'; // сообщение пришедшее с магазина
                                                                                                                                    $mail->Subject   = 'Тема сообщения';
                                                                                                                                    $mail->Body      = $output;
                                                                                                                                    $mail->AddAddress( 'магазин.ru' );
                                                                                                                                
                                                                                                                                Короче грусть, пичаль, не осилил я этот feedback, ни мадалку ни обычную форму не заработали, никак.
                                                                                                                                Взял с другого сайта.

                                                                                                                                з.ы.
                                                                                                                                Походу в форму вносились правки и не проверили, она не рабочая.
                                                                                                                                1. Александр Мальцев
                                                                                                                                  06 июля 2017, 17:08
                                                                                                                                  Жаль, конечно, что у вас не получилось её настроить…
                                                                                                                                  Можно отправлять, например, от no-reply@имя_домена, т.к. делают практически все. В этом случае вы будете знать, что письмо отправлено автоматом, а не вручную. Если письмо нужно отправить себе, то можно указать, например, в качестве адреса ($mail->AddAddress) admin@имя_домена или другой какой вы используете.
                                                                                                                    2. Николай777
                                                                                                                      06 июня 2017, 14:05
                                                                                                                      Вопрос по форме обратной связи feedback-modal-without-captcha-1.1

                                                                                                                      форма была залита на сервер, сам индексный файл работает замечательно из под папки feedback

                                                                                                                      переношу кнопку с формой, вставляю в тело страницы — форма отправляться не хочет.

                                                                                                                      В чем может быть причина?

                                                                                                                      скрипты все подключены
                                                                                                                      1. Виталий
                                                                                                                        24 мая 2017, 17:55
                                                                                                                        Александр, добрый день!
                                                                                                                        Использую форму в качестве сбора контактов. Есть потребность в трех всплывающих формах, однако происходит конфликт в JS и перестают работать все формы (пока две), id форм и наполнения разные, скрипт дублирован и изменен соответственно под каждую форму.
                                                                                                                        Как можно решить данную задачу?
                                                                                                                        1. Виталий
                                                                                                                          25 мая 2017, 10:16
                                                                                                                          29 августа 2016, 12:28 уже поднимался вопрос, проработаю! спасибо)
                                                                                                                          1. Виталий
                                                                                                                            25 мая 2017, 16:29
                                                                                                                            Александр, все же нужна помощь…
                                                                                                                            Не получается с data-argument.
                                                                                                                            Объединил два modal-окна в одно, отсекая ненужные input классом hidden. В этом случаи форма признается не валидной.
                                                                                                                            Как же реализовать 2 формы, где первая собирает имя-майл, вторая имя-телефон, с запуском modal разными кнопками...?
                                                                                                                            1. Александр Мальцев
                                                                                                                              28 мая 2017, 07:14
                                                                                                                              Пример, в котором можно посмотреть, как с помощью одного всплывающего окна можно обрабатывать несколько HTML-форм.

                                                                                                                              Для открытия всплывающего окна используются кнопки, отличающиеся только атрибутом data-form. С помощью этого атрибута указываем, какую HTML форму необходимо отобразить в модальном окне. Для того чтобы кнопка открывала модальное окно используется класс modal-form. Все HTML-формы хранятся во внешнем php файле forms.php. Это позволит не только уменьшить размер HTML документа (подгрузка формы в модальное окно будет осуществляться только по требованию), но и использовать их на разных страницах.
                                                                                                                              1. Виталий
                                                                                                                                29 мая 2017, 10:40
                                                                                                                                Спасибо!
                                                                                                                              2. Constantin
                                                                                                                                26 мая 2017, 06:27
                                                                                                                                Александр, здравствуйте. Присоединяюсь к вопросу…
                                                                                                                                1. Александр Мальцев
                                                                                                                                  28 мая 2017, 07:15
                                                                                                                                  Здравствуйте, как это сделать можете посмотреть в этом комментарии.
                                                                                                                          2. Constantin
                                                                                                                            22 мая 2017, 07:23
                                                                                                                            Александр, здравствуйте! Помощи хочется. С формой всё хорошо, с главной страницы заполняется и отправляется нормально. А вот что нужно сделать, чтобы эта же форма заполнялась и отправлялась с другой страницы?
                                                                                                                            1. Александр Мальцев
                                                                                                                              23 мая 2017, 13:51
                                                                                                                              Здравствуйте! Добавить её на неё. Неизменным останется только обработчик формы (php-файл). Если её необходимо сделать для многих страниц, то можно форму сохранить во внешнем файле и подгружать её из него.
                                                                                                                            2. Constantin
                                                                                                                              19 апреля 2017, 14:01
                                                                                                                              Александр, здравствуйте! Извините чайника, никак не могу найти место для «2. Добавить в объект FormData (в файле js):». :(
                                                                                                                              1. Александр Мальцев
                                                                                                                                19 апреля 2017, 15:18
                                                                                                                                На 113 строчке создаётся экзмепляр объекта FormData. После этой строчки можете добавлять свои значения в этот объект.
                                                                                                                                1. Constantin
                                                                                                                                  19 апреля 2017, 16:15
                                                                                                                                  Всё равно не получается )))) Теперь присылает вот что:
                                                                                                                                  Дата: 19-04-2017 15:52
                                                                                                                                  Имя пользователя: lastname
                                                                                                                                  Адрес email: +7 904 382-83-08

                                                                                                                                  Вместо е-мэйла телефон, а емэйла нету, как и строчки...:

                                                                                                                                  // дальнейшие действия (ошибок не обнаружено)
                                                                                                                                  if ($data['result']=='success') {
                                                                                                                                  //место для установки 3 блока, который предназначен для сохранения формы в файл
                                                                                                                                  $output = "---------------------------------". "\n";
                                                                                                                                  $output .= date(«d-m-Y H:i:s»). "\n";
                                                                                                                                  $output .= «Имя пользователя: ». $name. "\n";
                                                                                                                                  $output .= «Адрес email: ». $email. "\n";
                                                                                                                                  if (isset($phone)) {
                                                                                                                                  $output .= «Телефон: ». $phone;
                                                                                                                                  if (isset($_POST['phone'])) {
                                                                                                                                  $output .= 'Телефон пользователя: '. $_POST['phone'];

                                                                                                                                  Ну что не так? )))
                                                                                                                                  1. Александр Мальцев
                                                                                                                                    19 апреля 2017, 17:09
                                                                                                                                    Значит, что-то у вас не правильно. Перед тем как переходить к серверу, проверьте какие данные у вас уходят на сервер.
                                                                                                                                    Это делается в панели разработчика на вкладке Network:
                                                                                                                                    Информация, отправляемая формой обратной связи на сервер
                                                                                                                                    1. Constantin
                                                                                                                                      19 апреля 2017, 17:34
                                                                                                                                      Ошибок нет. Говорит, что успешно отправлено. Но, в файле message.txt ничего нет, и на почту ничего не приходит. Утомился я… Александр, может сделаете эту же форму, только из трех полей — имя, емэйл и телефон (телефон не обязателен к заполнению) — хоть потренеруюсь в разборке как следует…
                                                                                                                                      1. Александр Мальцев
                                                                                                                                        23 апреля 2017, 16:28
                                                                                                                                        Вот ссылка на архив. Тренируйся.
                                                                                                                                        1. Constantin
                                                                                                                                          24 апреля 2017, 05:44
                                                                                                                                          О, благодарю!!! Тренируюсь, и даже получилось :) Александр, а можно ещё ткнуть куда-нибудь, где можно понять, как сделать следующее: в одном файле, например, myform.html — есть форма. Как её вызвать из другого файла, например, index.html, что-бы она вызвалась, отработала, показала успех/не успех и вернулась на index.html?
                                                                                                                                          1. Александр Мальцев
                                                                                                                                            25 апреля 2017, 06:11
                                                                                                                                            Если идёт речь о встраивании одной страницы в другую, то это можно осуществить с помощью HTML элемента iframe:
                                                                                                                                            <iframe src="myform.html" width="100%" height="500">
                                                                                                                                            </iframe>
                                                                                                                                            
                                                                                                                                            1. Constantin
                                                                                                                                              25 апреля 2017, 06:17
                                                                                                                                              Чудесно! Александр, спасибо! А вот ещё вопрос от глупого чайника — а как сделать так, чтобы передавать скрытый текст в обработчик process.php? Например, заполнили форму, и нужно примечание скрытое — «Запись». Или «Книга». Или ещё что-нибудь?
                                                                                                                                              1. Александр Мальцев
                                                                                                                                                25 апреля 2017, 07:04
                                                                                                                                                Добавить в форму скрытое поле:
                                                                                                                                                <input type="hidden" id="subject" name="subject" value="Книга">
                                                                                                                                                
                                                                                                                                                Все остальные действия с ним осуществляются также как с обычным полем.
                                                                                                                              2. Сергей
                                                                                                                                12 апреля 2017, 09:54
                                                                                                                                Здравствуйте, как к этой форме (в модальном окне) добавить отправку нового поля «Телефон»?
                                                                                                                                1. Александр Мальцев
                                                                                                                                  12 апреля 2017, 12:47
                                                                                                                                  Для этого необходимо:
                                                                                                                                  1. Добавить поле в HTML форму:
                                                                                                                                  <div class="form-group">
                                                                                                                                    <input type="phone" id="phone" name="phone" required="required" class="form-control" placeholder="Ваш Телефон*">
                                                                                                                                  </div>
                                                                                                                                  
                                                                                                                                  2. Добавить в объект FormData (в файле js):
                                                                                                                                  // добавить в formData значение 'email'=значение_поля_email
                                                                                                                                  formData.append('phone', phone);
                                                                                                                                  
                                                                                                                                  3. На сервере (в PHP) получить значение телефона:
                                                                                                                                  //получить phone, который ввёл пользователь
                                                                                                                                  if (!empty($_POST['phone'])) {
                                                                                                                                    $phone = $_POST['phone'];
                                                                                                                                  } else {
                                                                                                                                    $data['result']='error';
                                                                                                                                  }
                                                                                                                                  
                                                                                                                                  4. Вставить значения поля в необходимое место (например, в тело письма):
                                                                                                                                  $output .= "Телефон: " . $phone;
                                                                                                                                  
                                                                                                                                  1. Сергей
                                                                                                                                    12 апреля 2017, 13:14
                                                                                                                                    Заработало, спасибо!
                                                                                                                                    Добавил ещё строку
                                                                                                                                    // получаем телефон, который ввёл пользователь
                                                                                                                                    var phone = $("#phone").val();, без неё выдавалась ошибка.
                                                                                                                                    1. Сергей
                                                                                                                                      12 апреля 2017, 13:33
                                                                                                                                      Другая ошибка вылезла, убрал required=«required» у поля с телефоном, теперь если не вводить телефон то «Произошли ошибки при отправке формы на сервер.»
                                                                                                                                      1. Александр Мальцев
                                                                                                                                        12 апреля 2017, 16:09
                                                                                                                                        Если поле не обязательное, то необходимо везде использовать isset:
                                                                                                                                        //получить phone если есть
                                                                                                                                        if (isset($_POST['phone'])) {
                                                                                                                                          $phone = $_POST['phone'];
                                                                                                                                        }
                                                                                                                                        
                                                                                                                                        Даже там, где вы обращаетесь к этой переменной, т.к. её может не быть:
                                                                                                                                        if (isset($phone)) {
                                                                                                                                          $output .= "Телефон: " . $phone;
                                                                                                                                        }
                                                                                                                                        
                                                                                                                                2. Игорь
                                                                                                                                  23 марта 2017, 02:46
                                                                                                                                  Подскажите, пожалуйста, а как сделать закрытие модального окна автоматически после отправки формы?
                                                                                                                                  1. Александр Мальцев
                                                                                                                                    24 марта 2017, 15:47
                                                                                                                                    В файле script.js добавить строчку для скрытия модального окна:
                                                                                                                                    if ($data.result == "success") {
                                                                                                                                      // скрываем форму обратной связи
                                                                                                                                      // $('#messageForm').hide();
                                                                                                                                      // удаляем у элемента, имеющего id=msgSubmit, класс hidden
                                                                                                                                      // $('#msgSubmit').removeClass('hidden');
                                                                                                                                      $('#feedbackForm').modal('hide');
                                                                                                                                    }
                                                                                                                                    
                                                                                                                                    Остальные строчки в этом блоке можете закомментировать или удалить.
                                                                                                                                  2. Виталий
                                                                                                                                    10 марта 2017, 12:25
                                                                                                                                    Александр, день добрый!
                                                                                                                                    Подскажите, как модернизировать скрипт формы так, чтобы вместо file был text, также с появлением дополнительных полей при заполнении предыдущего.
                                                                                                                                    Спасибо.
                                                                                                                                    1. Александр Мальцев
                                                                                                                                      11 марта 2017, 01:47
                                                                                                                                      Здравствуйте, Виталий!
                                                                                                                                      Для этого в HTML данный блок необходимо заменить, например, на такой:
                                                                                                                                      <!-- INPUTS -->
                                                                                                                                      <div class="form-group">
                                                                                                                                        <p style="font-weight: 700;">INPUTS (максимум <span id="countInputs"></span>):</p>
                                                                                                                                        <input type="text" name="inputs[]">
                                                                                                                                      </div>
                                                                                                                                      
                                                                                                                                      В JavaScript:
                                                                                                                                      // максимальное количество inputs 
                                                                                                                                      var countInputs = 5;
                                                                                                                                      // выводим максимальное количество элементов
                                                                                                                                      $('#countInputs').text(countInputs);
                                                                                                                                      // после ввода значения в input добавляем новый
                                                                                                                                      $(document).on('change','input[name="inputs[]"]',function(e){
                                                                                                                                        // если выбран файл, то добавить ещё элемент "Выбрать файл"
                                                                                                                                        if ((e.target.value.length>0)&&($(this).next('input[name="inputs[]"]').length==0) && ($('input[name="inputs[]"]').length<countInputs)) {
                                                                                                                                          $(this).after('<input type="text" name="inputs[]">');
                                                                                                                                        }
                                                                                                                                      });
                                                                                                                                      
                                                                                                                                      Для добавления данных из inputs в FormData для отправки на сервер:
                                                                                                                                      // добавить в FormData INPUTS
                                                                                                                                      var inputs = document.getElementsByName("inputs[]");
                                                                                                                                      for (var i = 0; i < inputs.length; i++) {
                                                                                                                                        formData.append('inputs[]', inputs[i].value);
                                                                                                                                      }
                                                                                                                                      
                                                                                                                                      На сервере (например, добавить их в тело письма):
                                                                                                                                      if(isset($_POST["inputs"])) {
                                                                                                                                        $inputs = $_POST["inputs"];
                                                                                                                                        // переберём все inputs
                                                                                                                                        foreach ($inputs as $input) {
                                                                                                                                          $output .= "Значение INPUT: " . "\n" . $input . "\n";
                                                                                                                                        }
                                                                                                                                      }
                                                                                                                                      
                                                                                                                                      Форма с inputs: yadi.sk/d/viDBsBI23FVAUK
                                                                                                                                      1. Виталий
                                                                                                                                        12 марта 2017, 15:14
                                                                                                                                        Спасибо!
                                                                                                                                    2. Роман
                                                                                                                                      10 марта 2017, 00:42
                                                                                                                                      Александр, помогите пожалуйста, как и где убрать ограничение от 20 до 500 символов, и как убрать капчу?
                                                                                                                                      1. Александр Мальцев
                                                                                                                                        10 марта 2017, 16:17
                                                                                                                                        Настройка полей осуществляется с помощью атрибутов, в данном случае посредством minlength и maxlength.
                                                                                                                                        Если проверка не нужна, то просто удалите эти поля:
                                                                                                                                        <textarea id="message" class="form-control" rows="3" placeholder="Введите сообщение..." required="required"></textarea>
                                                                                                                                        
                                                                                                                                        Новая версия формы обратной связи в модальном окне:
                                                                                                                                        с капчей — yadi.sk/d/sX7jAgud3FSwbC
                                                                                                                                        без капчи — yadi.sk/d/97LItyt23FT29e
                                                                                                                                      2. Sergey
                                                                                                                                        01 марта 2017, 22:38
                                                                                                                                        Александр, здравствуйте!
                                                                                                                                        Подскажите каким образом сделать следующее. На сайте вверху и внизу обычные формы с телефоном и именем и по сайту разбросаны кнопки с вызовом модальных окон также с формой имя и телефон. Как правильно подключить эту форму и форму из предыдущего урока вверх и вниз? Пробовал с ID формами играться, но что-то не совсем получается.
                                                                                                                                        Подскажите как сделать.
                                                                                                                                        1. Александр Мальцев
                                                                                                                                          02 марта 2017, 17:56
                                                                                                                                          Здравствуйте, кроме как изменить id форм, необходимо ещё изменить процесс получения данных для отправки каждой формы в script.js на следующий:
                                                                                                                                          // messageForm - id формы
                                                                                                                                          data: new FormData(document.getElementById('messageForm')),
                                                                                                                                          
                                                                                                                                        2. Елена
                                                                                                                                          04 января 2017, 17:47
                                                                                                                                          Добрый день.
                                                                                                                                          Никак не могу победить Вашу форму. У меня элементарно не подключаются ни стили, ни скрипты.

                                                                                                                                          Использую Ваш index.html Он лежит в корне. Там же в корне папка feedback.
                                                                                                                                          Пробую просто запускать, а также через локальный сервер. Ничего.

                                                                                                                                          В чем может быть дело? Спасибо!

                                                                                                                                          1. Елена
                                                                                                                                            05 января 2017, 12:40
                                                                                                                                            1. Скачала архив «feedback-form-in-modal». Распаковала.
                                                                                                                                            2. Папку «feedback-form-in-modal» переименовала в «feedback» и поместила ее в корень сайта.
                                                                                                                                            3. Переместила из нее index.html также в корневую папку сайта.

                                                                                                                                            Что не так? Ведь никаких Ваших настроек не поменяла. Ни строчки кода, ничего.
                                                                                                                                            В полном замешательстве. Чувствую себя дурой))
                                                                                                                                            1. Александр Мальцев
                                                                                                                                              06 января 2017, 03:16
                                                                                                                                              Не знаю, что вы сделали не так. Действия, которые необходимо выполнить вы изложили правильно. Если делаете не на локальном сервере, то пришлите коды доступа. Посмотрю, в чём может быть проблема…
                                                                                                                                            2. Елена
                                                                                                                                              05 января 2017, 12:17
                                                                                                                                              Если убрать слэши, скажем, вместо "/feedback/script.js" сделать «feedback/script.js», то скрипты и стили подключаются. Но интересно, почему все не работает «из коробки»?

                                                                                                                                              строчка «Header set Access-Control-Allow-Origin „*“» в файле .htaccess не помогает.
                                                                                                                                              <img
                                                                                                                                              src=«https://itchief.ru/assets/uploadify/a/7/a/a7a0d4e25550e3b444cc6ce27ee8267es.jpg» class=«fancybox thumbnail center»>


                                                                                                                                              <img
                                                                                                                                              src=«https://itchief.ru/assets/uploadify/c/7/c/c7c942a262c7e1e0bdeb71f8a84f74ecs.jpg» class=«fancybox thumbnail center»>
                                                                                                                                            3. Юрий
                                                                                                                                              25 декабря 2016, 10:43
                                                                                                                                              Александр здравствуйте. Не могу понять в чем причина, в комментариях своей проблемы не нашел, форма работает но только с текстовой информацией при попытке приложить файл, выдает: ошибка при загрузке файла. Думал проблема с хостингом, но простая форма html+скрипт+php файлы отправляет, в чем может быть причина, где искать?<img src="" />
                                                                                                                                              1. Александр Мальцев
                                                                                                                                                26 декабря 2016, 09:56
                                                                                                                                                Здравствуйте! Значит необходимо искать ошибку… Попробуйте для начала проверить, создан ли каталог, в который загружаются файлы. А также есть ли права на запись в эту папку.
                                                                                                                                              2. Anna
                                                                                                                                                30 ноября 2016, 10:55
                                                                                                                                                Александр, добрый день!
                                                                                                                                                У меня вот какой вопрос. На сайте для заказа тура используется простая форма с 2-мя полями — email и имя. Она одна и та же и открывается при нажатии на соответствующие ссылки, размещенные на одной странице. Допустим, ТУРЦИЯ, ИТАЛИЯ и т.д. Могу я как-то передать параметр с названием страны, не делая его select-ом в форме? И не создавая 50 отдельных форм для каждой страны? Этот параметр с названием страны должен отправляться на почту администратору.
                                                                                                                                                Спасибо!
                                                                                                                                                1. Александр Мальцев
                                                                                                                                                  30 ноября 2016, 13:24
                                                                                                                                                  Здравствуйте.
                                                                                                                                                  Необходимо в JavaScript определить текст ссылки и добавить его в качестве данных для отправки на сервер:
                                                                                                                                                  //после загрузки веб-страницы
                                                                                                                                                  $(function () {
                                                                                                                                                    // переменная, которая будет содержать название страны
                                                                                                                                                    var country;
                                                                                                                                                    // при открытии модального окна с формой получаем текст ссылки (страну)
                                                                                                                                                    $('#feedbackForm').on('show.bs.modal', function (e) {
                                                                                                                                                      country = e.relatedTarget.innerText;
                                                                                                                                                    });
                                                                                                                                                    ...
                                                                                                                                                    // добавляем эту информацию в объект FormData (для отправки на сервер)
                                                                                                                                                    formData.append('country', country);	
                                                                                                                                                  
                                                                                                                                                  После этого в php (на сервере) получаем название страны:
                                                                                                                                                  $_POST['country']
                                                                                                                                                  
                                                                                                                                                2. Виктор
                                                                                                                                                  28 ноября 2016, 15:09
                                                                                                                                                  Ура, всё заработало! Спасибо Вам Александр за терпение!
                                                                                                                                                  1. Виктор
                                                                                                                                                    28 ноября 2016, 12:55
                                                                                                                                                    Добрый день Александр!

                                                                                                                                                    Спасибо за форму без капчи. Но беда просто. Всё делаю как надо, но видно, что-то делаю не так.
                                                                                                                                                    1 — Скачал и переименовал папку 'feedback-form-in-modal-without-captcha' в 'feedback'. Залил в корневую папку сайта.
                                                                                                                                                    2 — В файле 'verify.php' в нужном месте прописал свой ящик.
                                                                                                                                                    3 — Из файла index.html которая в папке 'feedback', скопировал нужную часть кода с строчки 35 по 83 и вставил в корневом файле сайта index.html в нужном месте (я не делаю форму выпадающей).

                                                                                                                                                    После чего обновляю страницу сайта и пытаюсь отправить сообщение. При нажатии на отправить, происходит просто перебрасывания на вверх сайта. Надписи о том, что сообщение отправлено нет, и нет письма на почте.
                                                                                                                                                    1. Александр Мальцев
                                                                                                                                                      28 ноября 2016, 14:40
                                                                                                                                                      Кроме самой формы необходимо на страницу ещё доавить содержимое файла script.js:
                                                                                                                                                      <script src="/feedback/script.js"></script>
                                                                                                                                                      
                                                                                                                                                      Это необходимо выполнить ниже подключения библиотеки jQuery.
                                                                                                                                                    2. Виктор
                                                                                                                                                      27 ноября 2016, 16:07
                                                                                                                                                      Решил пока поставить форму с капчей и капча не отображается, хотя всё сделал как надо. Перекинул всю папку в корень сайта и переименовал её в feedback, создал форму в нужном месте и вот в консоле выдаёт ошибку, что нет файла captcha.php
                                                                                                                                                      itchief.ru/assets/uploadify/1/e/c/1ec860d37e55a7f4e5d11d98884f4795.jpg
                                                                                                                                                      itchief.ru/assets/uploadify/2/e/b/2ebb020a799ce800c1a58e82bea12b79s.jpg
                                                                                                                                                      1. Александр Мальцев
                                                                                                                                                        28 ноября 2016, 11:26
                                                                                                                                                        Её необходимо разместить на локальном сервере или хостинге.
                                                                                                                                                      2. Виктор
                                                                                                                                                        27 ноября 2016, 15:22
                                                                                                                                                        Александр может это важно, но хочу сразу сказать, что сайт собирается на Bootstrap последней версии. Поэтому, не будет ли конфликта, если в папке feedback будут тоже файлы от Bootstrap?
                                                                                                                                                        1. Александр Мальцев
                                                                                                                                                          28 ноября 2016, 11:28
                                                                                                                                                          Можете подключить файлы Bootstrap своего проекта или эти изменить на последнюю версию.
                                                                                                                                                        2. Виктор
                                                                                                                                                          27 ноября 2016, 14:12
                                                                                                                                                          Александр буду очень благодарным, если сможете предоставить сборку без капчи.

                                                                                                                                                          С уважением Виктор.
                                                                                                                                                          1. Александр Мальцев
                                                                                                                                                            28 ноября 2016, 11:43
                                                                                                                                                            Сборка контактной формы без капчи: yadi.sk/d/4tlCgbhyzfSL7
                                                                                                                                                          2. Виктор
                                                                                                                                                            27 ноября 2016, 10:41
                                                                                                                                                            Александр большое Спасибо за ответ!

                                                                                                                                                            Есть ещё пару вопрос ((
                                                                                                                                                            1 — Нужно всю папку feedback-form-in-modal закидывать на хостинг или только можно verify.php и файл капчи?
                                                                                                                                                            2 — Мне не нужна капча, если я просто удалю, будет ли работать форма?

                                                                                                                                                            Сейчас пытаюсь отправить сообщение, на почту нечего не приходит и просто перебрасывает на верх страницы.
                                                                                                                                                            1. Александр Мальцев
                                                                                                                                                              27 ноября 2016, 14:11
                                                                                                                                                              Конечно всю папку. По умолчанию данный каталог необходимо переименовать в feedback, т.е. feedback-form-in-modal -> feedback. Расположить данный каталог необходимо в корне сайта. Файл index.html можно перенести в любое необходимое место. Это можно сделать благодаря тому, что в нём все необходимые пути заданы абсолютно (т.е. /feedback/...). После того как вы всё это правильно расположите должно всё заработать.

                                                                                                                                                              Если же вы не хотите копировать всю папку, то форму feedback необходимо будет тогда дополнительно настраивать. Например, определять свои стили, js-скрипты, php библиотеки (phpMailer) и др.

                                                                                                                                                              Если капча не нужна, то необходимо кроме удаления файлов captcha.php, oswald.ttf и background.png удалить ещё соответствующие строки в файлах script.js и verify.php. Если вам нужна такая сборка (без капчи), то могу её дополнительно предоставить.
                                                                                                                                                            2. Виктор
                                                                                                                                                              27 ноября 2016, 07:17
                                                                                                                                                              Спасибо за форму.
                                                                                                                                                              У меня вопрос, Куда вписывать свой email куда должны приходить письма.
                                                                                                                                                              1. Александр Мальцев
                                                                                                                                                                27 ноября 2016, 09:51
                                                                                                                                                                Для этого необходимо открыть файл verify.php и указать в AddAddress необходимый email:
                                                                                                                                                                $mail->AddAddress('myemail@mail.ru');
                                                                                                                                                                
                                                                                                                                                              2. Роман
                                                                                                                                                                27 сентября 2016, 09:27
                                                                                                                                                                Здравствуйте. Я новичок в этом деле. Пытаюсь вставить кнопку для вызова модальной формы на свою страничку. Ничего не получается. Как это сделать?
                                                                                                                                                                1. Александр Мальцев
                                                                                                                                                                  28 сентября 2016, 11:59
                                                                                                                                                                  Необходимо просто скачать необходимые файлы (bootstrap) и подключить их к странице.
                                                                                                                                                                  Если не знаете как это делать, то почитайте следующие статьи:
                                                                                                                                                                  Установка платформы Twitter Bootstrap
                                                                                                                                                                  Как создавать модальные окна
                                                                                                                                                                2. Александр
                                                                                                                                                                  17 сентября 2016, 06:43
                                                                                                                                                                  Александр, приветствую.
                                                                                                                                                                  Можете пояснить, как работает валидация.
                                                                                                                                                                  Я имею ввиду, следующее, какие-то поля формы обязательны для заполнения а какие-то нет.
                                                                                                                                                                  Обязательным полям мы прописываем html атрибут required, а вот дальше… что происходит в js и в php с проверкой полей?
                                                                                                                                                                  То-есть, если допустим поле не обязательное, то как-бы и ни к чему его проверять.
                                                                                                                                                                  Правильно-ли я понимаю, что если мы, например поле message в HTML прописали без required, то в php вместо
                                                                                                                                                                  if (isset($_POST['message'])) {
                                                                                                                                                                        $message = $_POST['message'];
                                                                                                                                                                        if (!validStringLength($message,20,500)) {
                                                                                                                                                                          $data['message']='Поле сообщение содержит недопустимое количество символов.';
                                                                                                                                                                          $data['result']='error';
                                                                                                                                                                        }
                                                                                                                                                                      } else {
                                                                                                                                                                        $data['result']='error';
                                                                                                                                                                      }

                                                                                                                                                                  Мы можем просто указать
                                                                                                                                                                  $message = $_POST['message'];

                                                                                                                                                                  и на этом все, или надо еще где-то с чем-то поколдовать?
                                                                                                                                                                  1. Александр Мальцев
                                                                                                                                                                    17 сентября 2016, 12:13
                                                                                                                                                                    Здравствуйте.
                                                                                                                                                                    На стороне клиента (браузера) валидацию выполняет сам браузер. Для этого мы используем функцию checkValidity с помощью которой в JavaScript проверяем значение каждого поля формы. Если какое-то из них не прошло проверку, то форму на сервер не отправляем. Для отображения ошибок добавляем классы. Проверку JavaScript выполняет на основании атрибутов required, minlength и др. Т.е. задаём проверку и убираем на стороне клиента с помощью атрибутов HTML элементов. Т.е. проверку не выполняем с помощью специальных плагинов, её осуществляет сам браузер. Но, т.к. проверку на стороне клиента при желании можно обойти, нужна ещё проверка на стороне сервера.
                                                                                                                                                                    На стороне сервера проверка осуществляется так.
                                                                                                                                                                    Но сначала желательно сначала узнать, есть если в массиве $_POST ключ message (чтобы не произошла ошибка):
                                                                                                                                                                    if (isset($_POST['message'])) {
                                                                                                                                                                      $message = $_POST['message'];
                                                                                                                                                                    }
                                                                                                                                                                    
                                                                                                                                                                    Но и дальше по коду (если есть переменная):
                                                                                                                                                                    if (isset($message)) {
                                                                                                                                                                      // что-то делаем с переменной $meassage
                                                                                                                                                                    }
                                                                                                                                                                    
                                                                                                                                                                    1. Александр
                                                                                                                                                                      19 сентября 2016, 05:24
                                                                                                                                                                      Благодарю.
                                                                                                                                                                  2. Виталий
                                                                                                                                                                    04 сентября 2016, 21:42
                                                                                                                                                                    Доброй ночи Александр!
                                                                                                                                                                    Проблема разрешилась!
                                                                                                                                                                    Тех поддержка REGа:
                                                                                                                                                                    «Отключили директиву Options Indexes FollowSymLinks в конфигурационном файле .htaccess»
                                                                                                                                                                    Всё работает, с файлами и без.
                                                                                                                                                                    Осталось поправить кодировку.
                                                                                                                                                                    Огромное спасибо.Ссылка на поддержку сайта есть)
                                                                                                                                                                    1. Александр Мальцев
                                                                                                                                                                      08 сентября 2016, 09:47
                                                                                                                                                                      Отлично!
                                                                                                                                                                    2. Виталий
                                                                                                                                                                      04 сентября 2016, 10:31
                                                                                                                                                                      Тариф поддерживает php 5.1-5.6.
                                                                                                                                                                      Александр, Ваша форма удобная в редактировании.
                                                                                                                                                                      Убрал капчу, увеличил объём разрешаемых к отправке файлов.
                                                                                                                                                                      Планировал добавить ввод номера тлф.
                                                                                                                                                                      Хотел адаптировать форму к отображению на мобильных устройствах.
                                                                                                                                                                      Попробую ещё поковыряться.
                                                                                                                                                                      Буду писать в тех поддержку.
                                                                                                                                                                      В любом случае спасибо за проделанную работу.
                                                                                                                                                                      1. Виталий
                                                                                                                                                                        03 сентября 2016, 15:36
                                                                                                                                                                        1. Александр Мальцев
                                                                                                                                                                          04 сентября 2016, 04:45
                                                                                                                                                                          А Ваш тариф на reg.ru поддерживает php. Если нет, то форма работать не будет. Единственное решение (если форма обратной связи нужна) – это переход на более дорогой тариф с поддержкой php.
                                                                                                                                                                        2. Виталий
                                                                                                                                                                          03 сентября 2016, 15:35
                                                                                                                                                                          Вкладка Network:
                                                                                                                                                                          itchief.ru/assets/uploadify/d/6/0/d605d3cd992252b69eeca9273065e392.jpg

                                                                                                                                                                          Это сам хостинг не даёт я понял?
                                                                                                                                                                          1. Виталий
                                                                                                                                                                            03 сентября 2016, 15:33
                                                                                                                                                                            Спасибо за ответ.
                                                                                                                                                                            Сайт статичный из 1 страницы, простой html.
                                                                                                                                                                            . htaccess присутствует:
                                                                                                                                                                            Options Indexes FollowSymLinks
                                                                                                                                                                            DirectoryIndex index.html
                                                                                                                                                                            AddCharset utf-8 .php .html .js

                                                                                                                                                                            Права такие папки 755, файл 644.
                                                                                                                                                                            Скрипты другие работают.
                                                                                                                                                                            Запись с лога:
                                                                                                                                                                            [03/Sep/2016:00:44:02 +0300] "POST /feedback/verify.php HTTP/1.0" 403 2892 "http://мойсайт.ru/" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"
                                                                                                                                                                            
                                                                                                                                                                            Я ещё в большем замешательстве,
                                                                                                                                                                            всё больше превосхожу сам себя, зная свои познания в этом деле.
                                                                                                                                                                            Знакомый подсказал вставить обратную форму))
                                                                                                                                                                            1. Виталий
                                                                                                                                                                              02 сентября 2016, 23:34
                                                                                                                                                                              Доброй ночи Александр.
                                                                                                                                                                              Форму с трудом вписал(не очень опытен). Визуально всё работает и устраивает.
                                                                                                                                                                              После заливки на сервер, при обработке введённых данных и отправке
                                                                                                                                                                              получаем ответом с сервера код html прям в форму:
                                                                                                                                                                              itchief.ru/assets/uploadify/8/8/f/88fe5b7b9a925768c4f713af00daa84e.jpg
                                                                                                                                                                              т.е.
                                                                                                                                                                              itchief.ru/assets/uploadify/1/9/f/19f679297031a70be9980fb59bb9641f.jpg

                                                                                                                                                                              я в сильном замешательстве)
                                                                                                                                                                              1. Александр Мальцев
                                                                                                                                                                                03 сентября 2016, 01:40
                                                                                                                                                                                Ошибка 403 может происходить при отсутствии необходимого файла или директории, а также при наличии недостаточных прав. Более детально посмотреть какой приходит ответ (ошибка) от сервера можно в панели разработчика браузера на вкладке Network.
                                                                                                                                                                              2. Александр
                                                                                                                                                                                29 августа 2016, 13:17
                                                                                                                                                                                Благодарю. Форма формируется, но с небольшим нюансом.
                                                                                                                                                                                Если пощелкал сначала по кнопкам с 1 по 4, то при щелчке по 5 кнопке (свободный выбор) селект на форме блокированный, не дает выбирать ничего, а отображает последнее значение data-argument по которому кликали.
                                                                                                                                                                                1. Александр Мальцев
                                                                                                                                                                                  31 августа 2016, 10:25
                                                                                                                                                                                  В файле script.js измените код
                                                                                                                                                                                  $('#feedbackForm').on('show.bs.modal', function (e) {
                                                                                                                                                                                    if ($(e.relatedTarget).attr('data-argument')) {
                                                                                                                                                                                      $('#product').val($(e.relatedTarget).attr('data-argument'));
                                                                                                                                                                                      $('#product').prop('disabled',true);
                                                                                                                                                                                    }   
                                                                                                                                                                                  });
                                                                                                                                                                                  
                                                                                                                                                                                  на
                                                                                                                                                                                  $('#feedbackForm').on('show.bs.modal', function (e) {
                                                                                                                                                                                    if ($(e.relatedTarget).attr('data-argument')) {
                                                                                                                                                                                      $('#product').val($(e.relatedTarget).attr('data-argument'));
                                                                                                                                                                                      $('#product').prop('disabled',true);
                                                                                                                                                                                    } else {
                                                                                                                                                                                      $('#product').prop('disabled',false);  
                                                                                                                                                                                      $('#product').prop('selectedIndex',-1);
                                                                                                                                                                                    }
                                                                                                                                                                                  });
                                                                                                                                                                                  
                                                                                                                                                                                  1. Александр
                                                                                                                                                                                    31 августа 2016, 10:36
                                                                                                                                                                                    Отлично. Благодарю.
                                                                                                                                                                                    1. Александр
                                                                                                                                                                                      07 сентября 2016, 13:08
                                                                                                                                                                                      Приветствую, снова вынужден обращаться.
                                                                                                                                                                                      Этот вариант отлично работает в автономном режиме.
                                                                                                                                                                                      Пытаюсь прикрутить его к сайту на joomla.
                                                                                                                                                                                      почему-то функция
                                                                                                                                                                                      $('#feedbackForm').on('show.bs.modal', function (e) {
                                                                                                                                                                                        if ($(e.relatedTarget).attr('data-argument')) {
                                                                                                                                                                                          $('#product').val($(e.relatedTarget).attr('data-argument'));
                                                                                                                                                                                          $('#product').prop('disabled',true);
                                                                                                                                                                                        } else {
                                                                                                                                                                                          $('#product').prop('disabled',false);  
                                                                                                                                                                                          $('#product').prop('selectedIndex',-1);
                                                                                                                                                                                        }
                                                                                                                                                                                      });
                                                                                                                                                                                      не отрабатывает, отображает полный список, всегда при нажатии на любую кнопку.
                                                                                                                                                                                      посмотрел, в «автономном режиме» и на «joomla сайте», подключены одинаковые версии jQuery и BS.
                                                                                                                                                                                      В чем может быть проблема?
                                                                                                                                                                                      1. Александр Мальцев
                                                                                                                                                                                        08 сентября 2016, 09:45
                                                                                                                                                                                        Попробуйте поместить этот код в блок:
                                                                                                                                                                                        jQuery(function($) {
                                                                                                                                                                                        
                                                                                                                                                                                        });
                                                                                                                                                                                        
                                                                                                                                                                                        1. Александр
                                                                                                                                                                                          08 сентября 2016, 12:32
                                                                                                                                                                                          Отлично.
                                                                                                                                                                                          Благодарю.
                                                                                                                                                                                2. Александр
                                                                                                                                                                                  29 августа 2016, 05:19
                                                                                                                                                                                  Александр, приветствую, еще раз.
                                                                                                                                                                                  Появился такой вопрос.
                                                                                                                                                                                  Допустим на странице есть 5 «разных кнопок», вызывающих форму, например:
                                                                                                                                                                                  1. Телевизор
                                                                                                                                                                                  2. Пылесос
                                                                                                                                                                                  3. Утюг
                                                                                                                                                                                  4. Чайник
                                                                                                                                                                                  5. Выбрать
                                                                                                                                                                                  Чего-бы хотелось:
                                                                                                                                                                                  1. При кликах по кнопкам с 1-4, появляется форма в которой не надо выбирать чего запрашивать и форма отправляет информацию о том, что запросили например чайник.
                                                                                                                                                                                  2. При клике по 5й кнопке, появляется форма с селектом, где можно выбрать один или несколько из первых 4х вариантов.

                                                                                                                                                                                  Возможно-ли это реализовать в рамках одного модального окна и как это сделать?
                                                                                                                                                                                  1. Александр Мальцев
                                                                                                                                                                                    29 августа 2016, 12:28
                                                                                                                                                                                    Привет. Конечно можно. Создавать кучу модальных окон — это вообще не правильный подход.

                                                                                                                                                                                    Добавляем в файл index.html необходимые кнопки (например, с data атрибутом data-argument):
                                                                                                                                                                                    <!-- Кнопки, для открытия модального окна -->
                                                                                                                                                                                    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#feedbackForm" data-argument="Телевизор">
                                                                                                                                                                                      Телевизор
                                                                                                                                                                                    </button>
                                                                                                                                                                                    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#feedbackForm" data-argument="Пылесос">
                                                                                                                                                                                      Пылесос
                                                                                                                                                                                    </button>
                                                                                                                                                                                    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#feedbackForm" data-argument="Утюг">
                                                                                                                                                                                      Утюг
                                                                                                                                                                                    </button>
                                                                                                                                                                                    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#feedbackForm" data-argument="Чайник">
                                                                                                                                                                                      Чайник
                                                                                                                                                                                    </button>
                                                                                                                                                                                    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#feedbackForm">
                                                                                                                                                                                      Выбрать
                                                                                                                                                                                    </button>
                                                                                                                                                                                    
                                                                                                                                                                                    Добавить в форму соответствующее поле:
                                                                                                                                                                                    <div class="col-sm-6">
                                                                                                                                                                                      <!-- Продукт -->
                                                                                                                                                                                      <div class="form-group has-feedback">
                                                                                                                                                                                        <label for="product" class="control-label">Товар:</label>
                                                                                                                                                                                        <select id="product" name="product" class="form-control">
                                                                                                                                                                                        </select>
                                                                                                                                                                                        <span class="glyphicon form-control-feedback"></span>
                                                                                                                                                                                      </div>
                                                                                                                                                                                    </div>
                                                                                                                                                                                    
                                                                                                                                                                                    В файл script.js после строчек
                                                                                                                                                                                    //после загрузки веб-страницы
                                                                                                                                                                                    $(function () {
                                                                                                                                                                                    
                                                                                                                                                                                    следующий код:
                                                                                                                                                                                    $('button[data-target="#feedbackForm"]').each(function(){
                                                                                                                                                                                      if ($(this).attr('data-argument')) {
                                                                                                                                                                                        $('#product').append('<option>'+$(this).attr('data-argument')+'</option>');
                                                                                                                                                                                      }
                                                                                                                                                                                    });
                                                                                                                                                                                    
                                                                                                                                                                                    $('#feedbackForm').on('show.bs.modal', function (e) {
                                                                                                                                                                                      if ($(e.relatedTarget).attr('data-argument')) {
                                                                                                                                                                                        $('#product').val($(e.relatedTarget).attr('data-argument'));
                                                                                                                                                                                        $('#product').prop('disabled',true);
                                                                                                                                                                                      }   
                                                                                                                                                                                    });
                                                                                                                                                                                    
                                                                                                                                                                                    Первая часть кода после загрузки страницы наполняет select необходимыми option.
                                                                                                                                                                                    Вторая часть будет при открытии модального окна определять то, с помощью какой кнопки его открыли и устанавливать в option необходимое значение, если конечно оно есть у кнопки или предлагать выбор.

                                                                                                                                                                                    Также соответственно добавить в script.js данные для отправки на сервер:
                                                                                                                                                                                    // получаем выбранный продукт
                                                                                                                                                                                    var product = $("#product").val();
                                                                                                                                                                                    // добавить в formData значение 'product'=значение_поля_product
                                                                                                                                                                                    formData.append('product', product);
                                                                                                                                                                                    
                                                                                                                                                                                    И наконец, в файле verify.php получить эти данные $_POST['product'] и отправить на почту.
                                                                                                                                                                                    Ссылка на готовый пример: yadi.sk/d/xXAeSs3xua5zb
                                                                                                                                                                                    1. Алексей
                                                                                                                                                                                      23 октября 2018, 10:46
                                                                                                                                                                                      Добрый день! Александр, подскажите пожалуйста можно ли как то этот атрибут «data-argument=»Телевизор"" автоматически подставлять в заголовок (название) открываемой формы.
                                                                                                                                                                                      1. Александр Мальцев
                                                                                                                                                                                        23 октября 2018, 12:00
                                                                                                                                                                                        Добрый! Да, можно!
                                                                                                                                                                                        Для этого необходимо добавить в script.js дополнительную строчку:
                                                                                                                                                                                        $('#feedbackForm').on('show.bs.modal', function (e) {
                                                                                                                                                                                          if ($(e.relatedTarget).attr('data-argument')) {
                                                                                                                                                                                            $(e.target).find('.modal-title').text($(e.relatedTarget).attr('data-argument')); // <- необходимо добавить эту строчку
                                                                                                                                                                                            $('#product').val($(e.relatedTarget).attr('data-argument'));
                                                                                                                                                                                            $('#product').prop('disabled',true);
                                                                                                                                                                                          }   
                                                                                                                                                                                        });
                                                                                                                                                                                        
                                                                                                                                                                                        1. Алексей
                                                                                                                                                                                          23 октября 2018, 12:17
                                                                                                                                                                                          Ураааа))) Спасибо!!!, а что нужно прописать в форме в html? и можно ли как то придать стили css?
                                                                                                                                                                                          1. Александр Мальцев
                                                                                                                                                                                            23 октября 2018, 16:21
                                                                                                                                                                                            Если нужно динамически какие-то дополнительные стили установить, то с помощью JavaScript добавляете к элементам классы. А в CSS для этих классов уже назначаете стили.
                                                                                                                                                                                            1. Алексей
                                                                                                                                                                                              23 октября 2018, 17:04
                                                                                                                                                                                              Перелопатил именно эту форму, не нашел там ответа. Нужно, чтобы в модальном окне в форме вместо:
                                                                                                                                                                                              .<h4 class="modal-title" id="myModalLabel">Форма обратной связи</h4>
                                                                                                                                                                                              Появлялся заголовок из атрибута «data-argument=»Телевизор"". Т.е. вместо заголовка Форма обратной связи — показывался текст Телевизор.
                                                                                                                                                                                              1. Алексей
                                                                                                                                                                                                23 октября 2018, 17:33
                                                                                                                                                                                                Вопрос снимаю, осилил. Получается через атрибут data-title=«Название заголовка 1
                                                                                                                                                                                                и
                                                                                                                                                                                                <script>
                                                                                                                                                                                                    $('[data-toggle="modal"]').click(function (e) {
                                                                                                                                                                                                      e.preventDefault();
                                                                                                                                                                                                      var idSelector = $(this).attr('data-target');
                                                                                                                                                                                                      var title = $(this).attr('data-title');
                                                                                                                                                                                                      $(idSelector).find('.modal-title').text(title);
                                                                                                                                                                                                    });
                                                                                                                                                                                                  </script>
                                                                                                                                                                                                Спасибо огромное!
                                                                                                                                                                                                1. Александр Мальцев
                                                                                                                                                                                                  25 октября 2018, 13:46
                                                                                                                                                                                                  Отлично!
                                                                                                                                                                                            2. Александр Мальцев
                                                                                                                                                                                              23 октября 2018, 16:18
                                                                                                                                                                                              Посмотрите в архиве: yadi.sk/d/xXAeSs3xua5zb
                                                                                                                                                                                    2. Александр Юркин
                                                                                                                                                                                      28 июля 2016, 05:58
                                                                                                                                                                                      upd:

                                                                                                                                                                                      В таком виде письма отображаются и почтовым клиентом (Outlook 2013) и через веб интерфейс почты RoundCube.
                                                                                                                                                                                      На почтовом сервере настроена автоматическая пересылка на Яндекс почту. Яндекс почта показывает нормально.
                                                                                                                                                                                      1. Александр
                                                                                                                                                                                        28 июля 2016, 03:00
                                                                                                                                                                                        Форма работает только письма ходят в таком виде
                                                                                                                                                                                        1. Александр Мальцев
                                                                                                                                                                                          28 июля 2016, 12:45
                                                                                                                                                                                          Исходные коды поправил.
                                                                                                                                                                                          Необходимо добавить кодировку после создания экземпляра класс PHPMailer в файле verify.php:
                                                                                                                                                                                          // создаём экземпляр класса PHPMailer
                                                                                                                                                                                          $mail = new PHPMailer;
                                                                                                                                                                                          $mail->CharSet = 'UTF-8';  
                                                                                                                                                                                          
                                                                                                                                                                                          1. Александр
                                                                                                                                                                                            28 июля 2016, 13:03
                                                                                                                                                                                            Спасибо, вот теперь все правильно отображается
                                                                                                                                                                                        2. Александр Юркин
                                                                                                                                                                                          21 июля 2016, 07:20
                                                                                                                                                                                          Тут бы тоже был бы не плох вариант использования Гугловой ReCaptcha
                                                                                                                                                                                          1. Александр Мальцев
                                                                                                                                                                                            21 июля 2016, 11:58
                                                                                                                                                                                            Немного позже добавлю как вариант.
                                                                                                                                                                                          Войдите, пожайлуста, в аккаунт, чтобы оставить комментарий.