• Форма обратной связи без перезагрузки

    16
    Ноября


    Добрый день, друзья! В этой статье я расскажу, как создать форму обратной связи  без перезагрузки страницы с помощью php и ajax.  Настроить и установить форму обратной связи без перезагрузки на Ваш сайт. А так же я записал подробный видео урок по этой теме.

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

    Сразу скажу, что это довольно сложная тема сама по себе, а рассказать нужно так, чтобы её смогли понять и усвоить  и те люди, которые совсем не разбираются в программировании на PHP и JavaScript (ajax). Эта статья не для новичков, и если Вы  плохо разбираетесь в HTML и совсем не знаете PHP, то разобраться Вам будет трудновато.

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

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

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

    Нажимая кнопку «Отправить» вверху над формой обратной связи появится подсказка «Сообщение обрабатывается…»

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

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

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

    Если же всё было заполнено верно, то текст из формы обратной связи отправится на Ваш e-mail, а человеку будет показано сообщение об успешной отправке.

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

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

    Задать новый вопрос:

    HTML– это скелет нашей формы. Давайте её немного украсим, добавив CSS-стилей:

    .sidebarForm {
    		background: #f6f6f6;
    		box-shadow: 0 0 5px #ccc; 
    		-webkit-box-shadow: 0 0 5px #ccc;
    		-moz-box-shadow: 0 0 5px #ccc;
    		width: 420px;
    }
    
    #cor5 {
    		border-radius: 5px;
    		-moz-border-radius: 5px;
    		-webkit-border-radius: 5px;
    }
    
    .sidebarForm h4 {
    		font: 14px Verdana;
    		color: #333333;
    		text-align: left;
    		padding: 10px 10px 0 10px;
    }
    
    .sidebarForm label {
    		font: 12px Verdana;
    		color: #333;
    		padding: 10px;
    }
    
    .sidebarForm .input { 
    		width: 170px;
    		height: 20px;
    		overflow: hidden;
    		background: white;
    		border: solid 1px #DFE2E5;
    		margin: 5px 0 10px 10px;
    		box-shadow: 0 0 5px #ccc;
    		-webkit-box-shadow: 0 0 5px #ccc;
    		-moz-box-shadow: 0 0 5px #ccc;
    }
    
    .sidebarForm .input input {
    		width: 165px;
    		height: 26px;
    		background: white;
    		margin: -3px 0 0 -5px;
    		padding: 0px 8px;
    		border: none;
    		background: transparent;
    }
    
    .sidebarForm .textarea {
    		height: 70px;
    		width: 320px;
    		overflow: hidden;
    		background: white;
    		border: solid 1px #DFE2E5;
    		margin: 5px 0 10px 10px;
    		box-shadow: 0 0 5px #ccc;
    		-webkit-box-shadow: 0 0 5px #ccc;
    		-moz-box-shadow: 0 0 5px #ccc;
    }
    
    .sidebarForm .textarea textarea {
    		width: 316px;
    		height: 66px;
    		background: white;
    		border: none;
    		resize:none;
    }
    
    .sidebarForm button {
    		border: 2px #ccc solid;
    		width: 150px;
    		height: 25px;
    		font: 12px Verdana;
    		font-weight: 700;
    		color: #FFFFFF;
    		background-color: #cc0000;
    		padding-bottom: 2px;
    		margin: 5px 0 15px 135px;
    }
    

    Информация из нашей формы обратной связи после нажатия на кнопку «Отправить», отправляется на сервер (в обработчик) в фоновом режиме, без перезагрузки страницы в браузере. За это отвечает JavaScript-код:

    $(document).ready(function() {
    // Форма обратной связи................................./
    
    var regVr22 = "
    Отправка...Сообщение обрабатывается...

    "; $("#send").click(function(){ $("#loadBar").html(regVr22).show(); var posName = $("#posName").val(); var posEmail = $("#posEmail").val(); var posText = $("#posText").val(); $.ajax({ type: "POST", url: "../send.php", data: {"posName": posName, "posEmail": posEmail, "posText": posText}, cache: false, success: function(response){ var messageResp = "

    Спасибо, "; var resultStat = "! Ваше сообщение отправлено!

    "; var oll = (messageResp + posName + resultStat); if(response == 1){ $("#loadBar").html(oll).fadeIn(3000); $("#posName").val(""); $("#posEmail").val(""); $("#posText").val(""); } else { $("#loadBar").html(response).fadeIn(3000); } } }); return false; }); });

    В обработчике нам необходимо проверить что отправил посетитель, и если всё в порядке отправить письмо админу сайта. А посетителю сообщить, что его письмо успешно отправлено! Пишем php-код:

    header("Content-type: text/html; charset=utf-8");
    //**********************************************
    if(empty($_POST['js'])){
    
    $log =="";
    $error="no"; //флаг наличия ошибки
    
    		$posName = addslashes($_POST['posName']);
    		$posName = htmlspecialchars($posName);
    		$posName = stripslashes($posName);
    		$posName = trim($posName);
    		
    		$posEmail = addslashes($_POST['posEmail']);
    		$posEmail = htmlspecialchars($posEmail);
    		$posEmail = stripslashes($posEmail);
    		$posEmail = trim($posEmail);
    
    		$posText = addslashes($_POST['posText']);
    		$posText = htmlspecialchars($posText);
    		$posText = stripslashes($posText);
    		$posText = trim($posText);
    
    //Проверка правильность имени    
    if(!$posName || strlen($posName)>20 || strlen($posName)<3) {
    $log.="
  • Неправильно заполнено поле \"Ваше имя\" (3-15 символов)!
  • "; $error="yes"; } //Проверка email адреса function isEmail($posEmail) { return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i" ,$posEmail)); } if($posEmail == '') { $log .= "
  • Пожалуйста, введите Ваш email!
  • "; $error = "yes"; } else if(!isEmail($posEmail)) { $log .= "
  • Вы ввели неправильный e-mail. Пожалуйста, исправьте его!
  • "; $error = "yes"; } //Проверка наличия введенного текста комментария if (empty($posText)) { $log .= "
  • Необходимо указать текст сообщения!
  • "; $error = "yes"; } //Проверка длины текста комментария if(strlen($posText)>1010) { $log .= "
  • Слишком длинный текст, в вашем распоряжении 1000 символов!
  • "; $error = "yes"; } //Проверка на наличие длинных слов $mas = preg_split("/[\s]+/",$posText); foreach($mas as $index => $val) { if (strlen($val)>60) { $log .= "
  • Слишком длинные слова (более 60 символов) в тексте записи!
  • "; $error = "yes"; break; } } sleep(2); //Если нет ошибок отправляем email if($error=="no") { //Отправка письма админу о новом комментарии $to = "mail@yourdomain.ru";//Ваш e-mail адрес $mes = "Человек по имени $posName отправил Вам сообщение из формы обратной связи Вашего сайта: \n\n$posText"; $from = $posEmail; $sub = '=?utf-8?B?'.base64_encode('Новое сообщение с Вашего сайта').'?='; $headers = 'From: '.$from.' '; $headers .= 'MIME-Version: 1.0 '; $headers .= 'Content-type: text/plain; charset=utf-8 '; mail($to, $sub, $mes, $headers); echo "1"; //Всё Ok! } else//если ошибки есть { echo "

    Ошибка !

      ".$log."

    "; //Нельзя отправлять пустые сообщения } }

    В коде представлены необходимые комментарии и пояснения. Более подробно я рассказываю в видео ниже.

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

    В рубрике «Мотивация – путь к успеху» сегодня такая картинка:

    как создать форму обратной связи без перезагрузки страницы

    Как Вам статья? Надеюсь, тема: «Как создать форму обратной связи без перезагрузки страницы» была Вам интересна, и Вы нашли здесь для себя что-то полезное. Не забудьте подписаться на обновление моего сайта по e-mail.
    Внимание! Всех приглашаю в свою группу Вконтакте! Давайте делиться анонсами своих статей на стене этой группы! Думаю, она станет неплохим источником трафика для каждого блоггера!


    Скачать бесплатно!



    На этом всё. С уважением, Павел Макаров.
    P.S. Буду рад комментариям к этому посту.


  • Комментарии
    215

    Вы можете авторизироваться!

    • 12 Декабря 2013 11:03
      dsfsdf

      Скаченый код не работает

      Ответить
      • 14 Декабря 2013 16:24
        Павел Макаров

        dsfsdf, что у Вас не работает? Выводит ли браузер какие-нибудь ошибки? Код перепроверил, всё работает!

        Ответить
    • 22 Декабря 2013 01:02
      leo

      Первый раз попробовал - все сработало штатно, письмо пришло. Потом начал править под себя, пошли ошибки. Вроде логично: где то что то неаккуратно... Но дальше начались странности. Перезалил все с самого начала - ошибки те же. И вот какие. $log выводит текст файла send.php, начиная с середины строки 25 (проверка имени): "20 || strlen($posName)<3) {..." В чем может быть дело?

      Ответить
      • 22 Декабря 2013 15:20
        Павел Макаров

        leo, возможно у Вас не обновился файл send.php. Попробуйте начать всё с чистого листа! Причина ошибок у Вас вероятнее всего связана с пунктуацией, т.е. в районе строки 25 не корректно поставлены кавычки, слеши, скобки.

        Ответить
        • 22 Декабря 2013 16:30
          leo

          Павел, зачем нужна проверка "if(empty($_POST['js'])" в начале файла send.php и что это за переменная js? Не нашел где она определена. В конце send.php забыть тег ?> Ищу ошибку но пока не нашел..

          Ответить
          • 22 Декабря 2013 20:56
            Павел Макаров

            leo, условие "if(empty($_POST['js'])" проверяет включен ли у пользователя в браузере JavaScript. Пришли ли данные методом POST из js файла, причём название этого файла роли не играет. В файле send.php Вы можете его убрать, т.к. я не писал альтернативного варианта. В конце файла send.php тег ?> намерено не поставлен! Вообше в программировании на php принято не ставить закрывающий тег ?> с целью улучшения безопастности файла.

            Если проблема сохраняется, Вы можете отправить мне файлы на e-mail: admin@pavelmakarov.ru

            Ответить
            • 24 Декабря 2013 20:15
              leo

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

              Ответить
        • 01 Июня 2016 16:29
          Павел Смирнов

          Письма доставляются, спасибо. Но есть три глюка: 1. Не проводит проверку форм 2. Не подставляет $posName в формируемое сообщение 3. Почему-то не отправляет письма с адресом mail.ru Голову сломал, не могу исправить. В чем может быть дело?

          Ответить
    • 03 Января 2014 18:44
      leonking

      Скажите кто знает как вставить две формы на одной странице. Спасибо.

      Ответить
      • 08 Января 2014 12:25
        Павел Макаров

        leonking, вторую форму ставите также как первую. Самое лёгкое это просто продублировать все файлы формы изменив основные идентификаторы. Например: в первой форме id="posName", а во второй ставите id="posName2". Есстественно изменения должны быть и в js и в php файлах.

        Ответить
        • 01 Сентября 2014 00:34
          Света

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

          Ответить
          • 03 Сентября 2014 10:30
            Павел Макаров

            Света, обратите внимание на строку в html-коде формы

            
            
            

            id="send" в формах должен также различаться, например id="send1". В яваскрипте этот момент также нужно поправить! Чтобы ответить точнее, нужно взглянуть на страницу с Вашими формами связи.

            Ответить
            • 05 Октября 2014 19:38
              Света

              проблему решила, создав для каждой формы отдельный php :) ещё раз спасибо за отличное решение!

              Ответить
            • 24 Июня 2017 19:35
              рукожопка

              а как именно нужно попровить id="send" в скрипте? возможно ли использовать эту форму в модальном окне И на сайте статично если прописаны разные идентификаторы?

              Ответить
    • 19 Января 2014 02:38
      Макс

      Не активна кнопка "Отправить", может потому, что я просто запускаю сайт из папки компьютера, а не с сервера?

      Ответить
    • 24 Января 2014 22:36
      aliG

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

      Ответить
      • 25 Января 2014 10:07
        Павел Макаров

        Здравствуйте aliG!
        Пожалуйста уточните, Вы добавили в форму новое поле для телефона? Или телефон указывается в поле "Ваше сообщение"?

        Ответить
    • 25 Января 2014 14:05
      aliG

      Здравствуйте Павел! Я добавил новое поле "Телефон" в Вашу форму, и при заполнении всех полей, на мыло приходят все данные введённые во все поля, кроме телефона, тоесть как положено: Новое сообщение с Вашего сайта От кого: tyst@tyst.ru <tyst@tyst.ru> ⚁ Кому: liga777-76@mail.ru Сегодня, 12:01 Человек по имени Петя отправил Вам сообщение с сайта: Проверка Как добавить телефон в скрипт формы? Благодарю за ответ!

      Ответить
      • 25 Января 2014 15:50
        Павел Макаров

        aliG, добавив новое поле "Телефон" Вы должны были ему присвоить какой-то идентификатор допустим: id="posTell".
        Внести изменения в js-код, после 10 строки добавить код:

        var posTell = $("#posTell").val();
        

        изменив 14 строку:

        data: {"posName": posName, "posEmail": posEmail, "posText": posText, "posTell": posTell},
        

        После 24 строки добавьте код:

        $("#posTell").val("");
        

        Далее необходимо отредактировать php файл:
        После строки 21 добавить код:

        $posTell = addslashes($_POST['posTell']);
        $posTell = htmlspecialchars($posTell);
        $posTell = stripslashes($posTell);
        $posTell = trim($posTell);
        

        Изменить строку 80:

        $mes = "Человек по имени $posName отправил Вам сообщение из формы обратной связи Вашего сайта: \n\n$posText\n\nТелефон:$posTell";
        

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

        Ответить
        • 25 Января 2014 16:02
          aliG

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

          Ответить
          • 25 Января 2014 16:26
            aliG

            Всё исправил телефон в письме не отображается

            Ответить
        • 27 Июня 2014 18:44
          Антон

          Спасибо большое за скрипт, особенно за ответ про телефон. Единственное что, все разместил как вы указали только нашел ошибку в первой строчке. var posText = $("#posTell").val(); заменил posText на posTell и все заработало. Еще раз спасибо.

          Ответить
        • 26 Октября 2014 13:38
          Роман

          А Вы не подскажите, как сделать написать проверку для поля "телефон"? Все перепробовал - не чего не получается. Спасибо!

          Ответить
        • 17 Февраля 2016 17:33
          Антон

          Здравствуйте! Может кто нибудь скинуть исходники формы, с телефоном? anton_rl@mail.ru Заранее спасибо!

          Ответить
    • 25 Января 2014 17:37
      Павел Макаров

      aliG, отправил Вам на e-mail архив файлов формы обратной связи с дополнительным полем для телефона. У себя проверил, всё работает!

      По поводу комментариев, тут нужно делать серию уроков..) И она есть в видео журнале Евгения Попова.

      Ответить
      • 25 Января 2014 18:10
        aliG

        Благодарю Вас Павел, попробую всё переделать, отпишусь...

        Ответить
        • 26 Января 2014 00:37
          aliG

          Спасибо Павел! Всё работает.

          Ответить
      • 03 Ноября 2014 15:09
        Роман

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

        Ответить
        • 24 Ноября 2014 16:36
          Павел Макаров

          Роман, для проверки поля "телефон" используйте php-код:

          
          //Проверка правильности телефона
          if(!$posTel || strlen($posTel)>16 || strlen($posTel)<10) {
          $log.="
        • Неправильно заполнено поле \"Телефон\" (10-16 символов)!
        • "; $error="yes"; } if (!preg_match("/(?:8|\+7)? ?\(?(\d{3})\)? ?(\d{3})[ -]?(\d{2})[ -]?(\d{2})/",$posTel)) { $log.="
        • Неправильно заполнено поле \"Телефон\"!
        • "; $error="yes"; }

          В переменной $posTel находится номер телефона клиентов.

          Ответить
      • 04 Декабря 2016 12:41
        Валентин

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

        Ответить
    • 26 Января 2014 09:44
      Александр

      Спасибо Павел! Всё работает отлично только вот хотелось бы дополнительное поле для телефона,не могли бы Вы и мне отправить такую форму, а то у меня что то не получается. Заранее благодарен.

      Ответить
    • 26 Января 2014 13:25
      Александр

      Добрый день Павел, извините что беспокою, хотелось бы второй e-mail добавить но что то не получаеться, приходит только на один

      Ответить
      • 26 Января 2014 17:54
        Павел Макаров

        Здравствуйте Александр! Отправил Вам на e-mail архив файлов формы обратной связи с дополнительным полем для телефона, а также возможность отправки письма на второй e-mail адрес. Внимательно просмотрите файл send.php Строка 93 Ваш второй e-mail. У себя проверил, всё работает!

        Ответить
        • 28 Января 2014 16:02
          Павел

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

          Ответить
          • 28 Января 2014 18:13
            Павел Макаров

            Без проблем тёзка! Сейчас отправлю! Даааа, таких комментариев у меня ещё не писали! :)

            Ответить
            • 29 Января 2014 09:42
              Павел

              Я вас благодарю Павел. Отличная форма! Все работает так как и хотелось! Единственный вопрос только возникает: возможно ли сделать поле ввода сообщения резиновым?

              Ответить
              • 04 Февраля 2014 19:27
                Павел Макаров

                Павел, сделать можно с помощью javascript. Но в своих сайтах я это не использовал, готового кода нет.

                Ответить
        • 02 Февраля 2014 23:53
          Александр

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

          Ответить
        • 03 Сентября 2014 08:56
          Александр

          Хочу попросить тоже отправить мне информацию о том как отправлять письма нескольким получателям, спасибо.

          Ответить
        • 18 Января 2015 20:50
          Игорь

          Павел, спасибо за форму!!! Не могли бы вы обновить архив, чтоб там было поле с номером телефона, а также возможность вставки второго e-mail. + капча как в данных комментариях?

          Ответить
          • 09 Февраля 2015 15:05
            Павел Макаров

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

            Ответить
        • 06 Мая 2017 12:02
          Андрей

          Павел, здравствуйте! Все очень доходчиво и понятно, но что-то всё равно не получается с дополнительным полем для телефона. Не могли бы Вы мне отправить на эл.почту архив файлов формы обратной связи с дополнительным полем для телефона.

          Ответить
    • 30 Января 2014 18:38
      Владик

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

      Ответить
      • 04 Февраля 2014 19:30
        Павел Макаров

        Владик, заказ принял! :) Следующая статья в категорию \"Сайтостроение\" будет про RSS.

        Ответить
    • 11 Февраля 2014 02:01
      Владимир

      У ВАС по ходу это все не рабочее, сразу же на первый получил ошибку css не подключается. <link rel=\"stylesheet\" type=\"text/css\" href=\"/css/style.css\"> / надо убрать. Кнопка ОТПРАВИТЬ не работает...

      Ответить
    • 12 Февраля 2014 19:55
      Павел

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

      Ответить
      • 14 Февраля 2014 01:13
        Владимир

        Как все это у тебя работает??? ТЫ понимаешь что такое CSS и правильно ли его подключили???

        Ответить
    • 12 Февраля 2014 20:47
      Анатолий

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

      Ответить
    • 04 Марта 2014 16:28
      Αнна

      Скрипт отличный, но вот после его установки, перестали работать другие скрипты, поддерживающие библиотеку....Как быть?

      Ответить
      • 12 Марта 2014 19:34
        Павел Макаров

        Αнна, скорее всего на Вашем сайте уже установлена библиотека jquery, попробуйте без неё. А файл js-form.js подключите непосредственно перед закрывающимся тегом </head>.

        Ответить
    • 12 Марта 2014 06:10
      Андрей

      большое вам спасибо,вез вас бы совсем пропал)

      Ответить
    • 16 Марта 2014 13:28
      Ара

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

      Ответить
      • 16 Марта 2014 16:38
        Павел Макаров

        Ара, форма работать не будет, если просто добавить поле для загрузки файлов. Необходимо изменение файла js-form.js и send.php

        Ответить
    • 19 Марта 2014 20:26
      Сергей

      Еще бы капчу как у Вас добавить - цены бы не было вообще! )

      Ответить
    • 19 Марта 2014 20:38
      Оля

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

      Ответить
    • 20 Марта 2014 10:43
      Оля

      Ну вроде бы начало было хорошее, однако столкнулась с проблемой кодировки именно js файла - т е сам код нормальный, а вот кириллица поехала. Как это можно разрулить?

      Ответить
      • 26 Марта 2014 19:30
        Павел Макаров

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

        Ответить
    • 20 Марта 2014 14:01
      Влад

      Павел подскажи как поставить капчу или как защитить от спама

      Ответить
    • 25 Марта 2014 09:20
      Егор

      Большое спасибо Павел за этот урок.Всё прекрасно работает, добавил нужные мне поля для формы. Есть небольшой вопрос.как можно сделать чтобы все сообщения (об ошибках или об успешной отправке и обработке) выводились в отдельном блоке поверх всего,и либо висели определённое время,либо по клику на пустом месте прятались?я понял что за сообщения отвечает блок loadbar, но не выходит его выводить в нужное место.

      Ответить
      • 26 Марта 2014 19:48
        Павел Макаров

        Егор, всё правильно, блок:

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

        if(response == 1){
        $("#loadBar").html(oll).fadeIn(3000);
        $("#posName").val("");
        $("#posEmail").val("");
        $("#posText").val("");
        				
        setTimeout( function() {
        $("#loadBar").hide();}, 5000 );
        				
        } else {
        $("#loadBar").html(response).fadeIn(3000);
        setTimeout( function() {
        $("#loadBar").hide();}, 5000 );}
        

        Число 5000 означает, что через 5 секунд после показа сообщение изчезнет.

        Ответить
    • 25 Марта 2014 22:13
      Марина

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

      Ответить
    • 26 Марта 2014 20:54
      Павел Макаров

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

      Ответить
    • 01 Апреля 2014 03:37
      Георгий

      Сделал всё как нужно. Но сообщения не приходят на мой почтовый ящик. Что делать?? помогите прошу.

      Ответить
    • 03 Апреля 2014 05:58
      Катя

      Здравствуйте Павел, подскажите пожалуйста как можно к этой форме еще добавить поле для прикрепления файла.

      Ответить
    • 04 Апреля 2014 19:27
      Аноним

      Спасибо, Павел!! Все отлично работает со своими правками.

      Ответить
    • 20 Апреля 2014 00:28
      Сергей

      было бы здорово еще добавить блок кода для отправки в базу mysql

      Ответить
    • 24 Апреля 2014 13:37
      Дмитрий

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

      Ответить
    • 26 Апреля 2014 22:18
      Ольга

      Спасибо, Павел!! Отличный урок :) Это как раз то, что я хотела услышать

      Ответить
    • 29 Апреля 2014 01:06
      Алекс

      Работает ли это с локалхоста? (OpenServer) Вроде скрипт сработал, а вот в ящике письма нет.

      Ответить
    • 01 Мая 2014 19:13
      2121

      ничего не сработало

      Ответить
    • 05 Июня 2014 19:25
      Алексей

      В переменных в куске с JS кодом символы кавычек, относящиеся к html-конструкции не экранированы, из за этого - не выполняются скрипты, записанные в том же файле (если это main.js какой нибудь), да и сам скрипт по той же причине может не работать, насколько я понимаю. А вообще, спасибо за код!

      Ответить
    • 13 Июня 2014 18:26
      Александр

      Ошибка: Notice: Undefined variable: log in C:\\wamp\\www\\form\\send.php on line 6

      Ответить
      • 15 Июня 2014 08:42
        Tim

        Здравствуйте автор! А можно подробней, как эту форму продублировать? у меня на сайте, их 5..спасибо

        Ответить
        • 29 Июня 2014 15:05
          Павел Макаров

          Tim, форма во всех случаях одна и таже? Размещается на разных страницах? В этом случае просто копируете html-код формы необходимое количество раз, подключаете к страницам скрипты: js-form.js и jquery.min.js, их и обработчик send.php дублировать не нужно.

          Ответить
      • 29 Июня 2014 15:12
        Павел Макаров

        Александр, в данном случае это не ошибка, а предупреждение. У Вашего сервера стоит очень высокая чувствительность к синтаксису php-кода. В файле send.php сразу после <?php
        разместите строчку:

        Error_Reporting(E_ALL & ~E_NOTICE);
        

        Ответить
    • 28 Июня 2014 04:18
      семён

      Спасибо за форму.

      Ответить
    • 07 Июля 2014 23:24
      Павел

      Большое спасибо. Все отлично работает. Использовал 3 формы по вашему примеру на сайте http://corp.chelters.ru/ . Просто и хороший способ. Спасибо!

      Ответить
    • 02 Августа 2014 09:04
      Алексей

      Форма работает отлично, но есть одно НО - если inputу добавить placeholder="" то скрипт его пропустит посчитав заполненным. Вот пример инпута - <input type="text" class="input" id="posName" name="name" placeholder="Имя *"> - отправляя можно не заполнять, скрипт возьмёт данные из плейсхолдера. Не подскажете как можно обойти эту проблемку?

      Ответить
      • 05 Августа 2014 15:04
        Павел Макаров

        Алексей, placeholder="" можно использовать! В указанной строчке выше Вы пропустили атрибут value="". Это не обязательный атрибут, но если Вы используете placeholder="Имя *", то без явного указания value="" (значение пустаты), атрибуту value="Имя *" присваивается "Имя *" по умолчанию! И скрипт это ловит!
        Только что тестировал скрипт прописав такой инпут:

           
           

        Всё работает отлично!

        Ответить
        • 05 Августа 2014 21:02
          Алексей

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

          Ответить
          • 05 Августа 2014 22:02
            Алексей

            Собственно проблему решил сам с помощью jQuery

            Ответить
    • 04 Августа 2014 15:07
      Сергей

      Как можно вставить данную форму в модуль Perfect Popup Box. Куда нужно положить файлы

      Ответить
    • 08 Августа 2014 16:27
      Семён

      Приветствую. Поставил данную форму обратной связи на сайт - пишет, что всё ок, но письма не приходят. http://atcruz.somee.com/feedback.aspx Вот ссылка. Может быть проблема в том, что я использую почту yahoo.com? Или проблема может быть в хостинге?

      Ответить
      • 15 Августа 2014 19:46
        Роман

        Здравствуйте, Семен. Столкнулся с аналогичной проблемой. Вы не нашли решение?

        Ответить
    • 13 Августа 2014 14:53
      Андрей

      Здравствуйте. Форма отличная, поставил себе все работает, изменил под свои нужды, но маленькая проблема - почему-то не могу изменить стиль текста в блоке с gif-кой. Менял и js и отдельно css добавлял все равно не меняется, хотя весь текст с ошибками и правильной отправкой изменил отлично...

      Ответить
      • 13 Августа 2014 15:05
        Андрей

        Все разобрался. Причина лишь в моей невнимательности...

        Ответить
    • 15 Августа 2014 17:09
      Роман

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

      Ответить
      • 02 Сентября 2014 13:19
        Артем

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

        Ответить
        • 03 Сентября 2014 09:16
          Павел Макаров

          Артём, проверьте строку в файле send.php

          
          $to = "mail@yourdomain.ru";//Ваш e-mail адрес
          
          

          Там должен быть указан Ваш e-mail адрес, на который Вы хотите получать письма из формы!
          Если всё указано правильно, то думаю стоит обратиться в тех.поддержку Вашего хостинга с вопросом: работает ли вообще функция mail() php?
          Также стоит проверить папку спам, возможно по какой-то причине письма перемещаются туда.

          Ответить
        • 04 Июня 2015 15:14
          Alex DOM

          Тоже столкнулся с данной проблемой, на Денвере все гуд, а только заливаю на хостинг и письма не приходят, хотя по почтовым логам все отправляется. Полдня танца с бубнами и все решилось переносом эмейла в поле письма. Переменные $from и $headers - вообще убрал. Только так заработало. Но теперь работает безотказно )) Павел, Большое Спасибо за данный код, он шикарен. Знаю только HTML и CSS, но разобраться в Вашем PHP-коде не составило труда, все легко и доступно.

          Ответить
    • 09 Сентября 2014 22:27
      Ruslan

      а как его вставить в страницу wordpress?кто нибудь подскажет?

      Ответить
    • 16 Сентября 2014 03:23
      Екатерина

      Павел, большое спасибо за форму! У меня такой вопрос: как сделать проверку для номера телефона? К примеру, телефон должен быть не менее 10 символов, и при неправильном вводе должна появляться соответствующая ошибка.

      Ответить
    • 05 Октября 2014 19:50
      Евгений

      Спасибо, всё работает, главное разобраться куда какие файлы бросать))

      Ответить
    • 14 Октября 2014 16:51
      Марина

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

      Ответить
    • 16 Октября 2014 17:29
      Тимофей

      Здравствуйте, вы есть в скайпе?Мне нужна помощь по обратной связи!вот мой скайп timoha11266

      Ответить
    • 02 Ноября 2014 15:46
      Валерий

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

      Ответить
    • 14 Ноября 2014 22:50
      Александр

      Установил форму к себе на сайт. Благодарю! Работает прекрасно. Но хотелось бы - каптчу к ней.

      Ответить
      • 16 Ноября 2014 18:37
        Илья

        Да, действительно всё прекрасно работает, спасибо. И присоединяюсь к пожеланию с капчей

        Ответить
      • 16 Ноября 2014 18:40
        Илья

        И ещё хотелось бы форму с комментариями, подобную этой))

        Ответить
    • 22 Ноября 2014 23:18
      григорий

      Как сделать чтобы данные из формы сохранились ту или иную папку на хостинге?

      Ответить
      • 24 Ноября 2014 13:31
        Павел Макаров

        Григорий, данные в файл не разу не записывал! Мне кажется гораздо проще и удобнее работать с базой MySQL.

        Ответить
        • 25 Ноября 2014 00:52
          mk-ned

          здравствуйте сделал всё как описано, всё нравится но есть пару вопросов.
          1---как сделать если посетитель не заполнил телефон письмо всё ровно отсылалось? то-есть при пустом поле телефона не видавало ошибок.
          2---если можно подскажите как поставить капчу?
          и очень интересно почему, но когда email отсылаю с hotmail-а или с gmail-а все письма приходят но а если отсылаю с yahoo нет, не одно не пришло. почему?

          Ответить
          • 28 Ноября 2014 11:41
            Павел Макаров

            mk-ned, здравствуйте!
            Выше в комментариях я давал код для проверки телефона. Если же необходимо пропускать пустое поле, то вот пример обычного условия + внутри код проверки введёного номера:

            
            if($posTel != "") { /*если поле не пустое*/
            
            //Проверка правильности введёного номера
            if(!$posTel || strlen($posTel)>16 || strlen($posTel)<10) {
            $log.="
          • Неправильно заполнено поле \"Телефон\" (10-16 символов)!
          • "; $error="yes"; } if (!preg_match("/(?:8|\+7)? ?\(?(\d{3})\)? ?(\d{3})[ -]?(\d{2})[ -]?(\d{2})/",$posTel)) { $log.="
          • Неправильно заполнено поле \"Телефон\"!
          • "; $error="yes"; }}

            Если поле будет пустым, скрипт ничего делать не будет. В переменной $posTel находится номер телефона клиентов.
            Про капчу скоро выйдет статья!
            Не совсем понял третий вопрос?.. Из формы связи письма не доставляются в почтовый ящик yahoo?

            Ответить
            • 29 Ноября 2014 09:25
              mk-ned

              спасибо за ответ третий вопрос таков:-если в форме связи я в поле email ввожу адрес допустим mk@yahoo.com то письмо не доставляется, оно где-то теряется (даже в spam нету) а с mk@gmail.com или mk@hotmail.com проблем нету

              Ответить
        • 27 Ноября 2014 18:41
          Григорий

          у меня еще почему то кнопка отправить не работает (хостинг hostinger)

          Ответить
          • 28 Ноября 2014 12:03
            Павел Макаров

            Григорий, после нажатия на кнопку форма ни как не реагирует? Если так, то Вы не правильно подключили файлы js-form.js и jquery.min.js

            Ответить
    • 27 Ноября 2014 19:10
      Alexey

      Добрый вечер, Павел. Не работает форма. После нажатия "отправить" появляется строка с загрузкой (с гифкой), но далее ничего не происходит. В консоли вылетает ошибка: XMLHttpRequest cannot load file:///F:/WEB/zip_20131116121040/send.php. Cross origin requests are only supported for protocol schemes: http, data, chrome-extension, https, chrome-extension-resource. Я полностью изучил видео, да и тут все прочитал. Не могу решить проблему.

      Ответить
      • 28 Ноября 2014 12:18
        Павел Макаров

        Alexey, сложно ответить на Ваш вопрос... Проблема может быть либо в файле js-form.js, либо в файле send.php
        Вы устанавливаете форму на локальном сервере? Изменяли что-нибудь под себя?
        Мне нужно увидеть страницу на которой размещена форма (если она в интернете). Или посмотреть указанные выше файлы.

        Ответить
        • 28 Ноября 2014 21:12
          Alexey

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

          Ответить
          • 29 Ноября 2014 11:05
            mk-ned

            если в форме связи я в поле email ввожу адрес допустим mk@yahoo.com то письмо не доставляется, оно где-то теряется (даже в spam нету) а с mk@gmail.com или mk@hotmail.com приходят без проблем. да ещё в скрипт для проверки телефона надо подправить место $posTel надо писать $posTell

            Ответить
    • 11 Декабря 2014 03:29
      Иван

      Здравствуйте. У меня на локалке форма не работает. Залил на хостинг, вообще не запускается директория с Вашими файлами. Попробовал на сайте вставить форму, после отправки формы грузится iframe с моим же сайтом внутри...

      Ответить
    • 11 Декабря 2014 03:40
      Иван

      Сорри, не туда файл кинул))

      Ответить
    • 11 Декабря 2014 04:29
      Иван

      Подскажите пожалуйста, у меня сайт в кодировке windows-1251. Я поменял везде в send.php utf-8 на windows-1251. На форме все уведомления высвечиваются нормально, а вот в приходящем письме имя отправителя и текст сообщения кракозябрами. Где еще надо указать кодировку, чтоб все заработало нормально?

      Ответить
      • 09 Января 2015 02:24
        Андрей

        Думаю на почте :)

        Ответить
    • 14 Декабря 2014 19:15
      Alex

      Павел, большое спасибо за эту Обратную форму!!!! За труд, за объяснения и помощь кто в ней нуждался в комментах выше!!!! Абсолютно не понимаю PHP и JavaScript (ajax), только знаю html, css. Все доступно, просто и понятно в Вашей форме Обратной связи - очень легко установил и свой дизайн сделал! Все работает замечательно. Еще бы капчу прикрутить... Как пожелание!!! )))

      Ответить
    • 16 Декабря 2014 18:53
      Иван

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

      Ответить
    • 21 Декабря 2014 10:44
      Виталий

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

      Ответить
      • 14 Января 2015 00:52
        AsTraLF

        вам не сложна поделиться кодом на номер телефона? буду благодарен Вам за это!

        Ответить
    • 07 Января 2015 22:23
      Nataly

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

      Ответить
      • 14 Января 2015 00:49
        AsTraLF

        вы что-то не так установили проверти подключены у вас все файлы и скрипт?

        Ответить
      • 09 Февраля 2015 16:58
        Павел Макаров

        Nataly, особенностей никаких нет. Код формы можно устанавливать на любую страницу сайта.

        Ответить
    • 14 Января 2015 00:47
      AsTraLF

      как дпбавить поле номер телифона?

      Ответить
      • 18 Января 2015 20:41
        Игорь

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

        Ответить
    • 24 Января 2015 00:41
      Свелана

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

      Ответить
      • 09 Февраля 2015 14:44
        Павел Макаров

        Свелана, можно добавить дополнительное поле mail-2, а в обработчике send.php сравнивать полученные от них данные. Если эл.адреса разные, выводим посетителю ошибку.

        Ответить
    • 27 Января 2015 14:40
      Антон

      Помогите создать вот такую форму обратной связи? <form action="..." method="POST"> <p>Добавить e-mail:</p> <input type="email" placeholder="E-mail:" maxlength="30" required><br>
      <p>Добавить тел:</p><!-- Чтобы в текстовом поле можно было вводить только цифры --> <input type="tel" placeholder="Tel:" maxlength="20" required><br>
      <p>Добавить ссылку:</p> <input type="url" placeholder="Url:" required><br> <p>Добавить баннер:</p> <input type="file" accept="image/*" required><br> <input type="submit" value="ОТПРАВИТЬ" id="button"><br> </form>

      Ответить
      • 09 Февраля 2015 14:25
        Павел Макаров

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

        Ответить
    • 08 Февраля 2015 07:40
      Сергей

      В чем может быть причина. Локально код работает. А когда заливаю на хост, то выдается ошибка:
      Внутренняя Ошибка Сервера
      Сервер обнаружил внутреннюю ошибку или неправильная и не смог выполнить ваш запрос.
      Пожалуйста, свяжитесь с сервера администратора, webmaster@lp71.ru и информировать их о времени произошла ошибка, и все, что вы могли бы сделать, что может быть причиной ошибки.
      Более подробная информация об этой ошибке могут быть доступны в журнале ошибок сервера. Кроме того, 404 Not Found ошибка при попытке использовать ErrorDocument обработать запрос.

      Ответить
    • 14 Февраля 2015 10:37
      drtvader

      А можно к примеру с этим скриптом сделать такую вещь: удалить все строки кроме одной. Будет ли он работать? Т.е. в html коде.

      Ответить
      • 19 Февраля 2015 16:19
        Дмитрий

        А данная форма будет работать на index.html т.е. не на php сайте ???

        Ответить
        • 03 Марта 2015 18:59
          Павел Макаров

          Дмитрий, в любом случае поддержка .php необходима! Без него не будет работать файл обработчик send.php, а вообще html-код формы можно разместить на странице index.html, форма будет работать.

          Ответить
      • 03 Марта 2015 19:03
        Павел Макаров

        drtvader, не понял вопрос! Какую строку Вы хотите оставить? Или может быть строки?

        Ответить
    • 23 Февраля 2015 09:43
      фыв

      Как подключить возможность прикреплять файл ?

      Ответить
    • 03 Марта 2015 22:50
      wss

      Павел, здравствуйте. Есть форма, есть обработчик. Письма уходят, и все останавливается на странице обработчика. Здесь последняя строка обработчика $status = \'Ваше сообщение отправлено!\'; Здесь скрипт клиента if ($status) { echo \"OK\"; }else ....... Я уже не знаю на что грешить, не передается статус. Может где в настройках сервака ковыряться надо?

      Ответить
      • 05 Марта 2015 09:56
        Павел Макаров

        wss, мне нужно взглянуть на полный код Вашего скрипта. Пожалуйста, свяжитесь со мной по e-mail.

        Ответить
        • 06 Марта 2015 09:05
          Владимир

          Моя почта: wss1972@rambler.ru.

          Ответить
    • 09 Марта 2015 11:25
      Дарья

      Добрый день, Павел! Спасибо большое за отличную форму! У меня возникла не большая проблема, ее выше уже озвучивали. Notice: Undefined variable: log in D:\\xampp1\\htdocs\\Scripts\\send.php on line 6 Notice: Undefined variable: log in D:\\xampp1\\htdocs\\Scripts\\send.php on line 45 Как Вы посоветовали в файле send.php написала Error_Reporting(E_ALL & ~E_NOTICE); , но проблема все равно осталась. Прошу помощи :). Спасибо!

      Ответить
      • 09 Марта 2015 11:42
        Дарья

        Павел, все заработало!!! Моя невнимательность)

        Ответить
    • 24 Марта 2015 22:48
      Кирилл

      Павел, спасибо огромное, отличная красивая форма! Один вопрос - никак не пойму, как отключить обязательность наличия текста в форме $posText? Делаю так: //Проверка наличия введенного текста комментария if (empty($posText)) { $error = \"no\"; При этом php перестаёт проверять вообще все условия (имя, емэйл) и даёт отправлять пустое сообщение

      Ответить
      • 26 Марта 2015 14:51
        Павел Макаров

        Кирилл, просто удалите или закомментируйте часть кода отвечающего за проверку наличия введёного текста. Удалите этот кусочек кода в файле send.php

        //Проверка наличия введенного текста комментария
        if (empty($posText)) {
        $log .= "
      • Необходимо указать текст сообщения!
      • "; $error = "yes";}

        Ответить
        • 26 Марта 2015 18:59
          Кирилл

          Павел, это первое, что я попробовал сделать, но тогда скрипт перестаёт проверять все остальные условия (у меня стоит обязательность наличия символов на имени и ещё на 2 полях, которые я добавил - телефон и выбор даты). Если кусок кода, который касается поля $posText оставить, как есть, то и все остальные условия срабатывают чётко

          Ответить
    • 15 Мая 2015 11:39
      Arthur

      Было бы идеально если к этой форме добавить еще одно поле прикрепить файл. Небольшой файл до 5 мб. Выложите код полностью с проверкой всех полей в том числе и телефона...

      Ответить
    • 19 Мая 2015 14:29
      Дарья

      Добрый день! Идея формы отличная! Только... Скачанная форма не работает((( Ошибки в подключении css и js - но это мелочи! При нажатии на кнопку (даже если поля не заполнены) начинает крутиться кружок и Сообщение обрабатывается... И все!!! и висит...и крутиться) Павел, можете скинуть рабочую форму на strizhovadarya@yandex.ru Спасибо!

      Ответить
      • 19 Мая 2015 17:55
        Павел Макаров

        Дарья, здравствуйте!
        Файлы формы обратной связи полностью рабочии! Скопируйте файлы из скаченного архива в корень своего сайта. Форма будет работать! Если Вы вставляете html-код формы обратной связи в какую либо из страниц своего сайта, то есстественно нужно проверять пути подключения .css и .js файлов. Более того, в зависимости от того где Вы разместили файл send.php, Вы должны в файле js-form.js найти строчку: url: "../send.php", и отредактировать путь до него. Обычно это основная причина зависания подсказки "Сообщение обрабатывается...".

        Ответить
    • 21 Мая 2015 14:54
      Екатерина

      Не понимаю, каким образом у всех всё работает. Я конечно понимаю, что бесплатный сыр только в мышеловке, но тогда зачем вообще выставлять файлы для скачивания. Я извиняюсь конечно, может это я туплю. Идея сайта прекрасная, для новичков программирования самое то. Но так как я хорошо знаю только html и css, а от php и javascript далека, мне информация оказалась бесполезной. Не работает вообще. Я исправила пути и заработали только html и css-стили, больше ничего. Сообщение не отправляется, подсказки об ошибках не возникают. Жаль... уже 2 дня пытаюсь безуспешно сделать форму связи на сайт

      Ответить
      • 02 Июня 2015 18:22
        Алексей

        Скажите Екатерина, а как вы проверяли исправность формы? Запуская сайт с локального компьютера? Или же он у вас находится на сервере?

        Ответить
    • 03 Июня 2015 16:43
      Елена

      Доброго времени суток. Два дня в поисках формы на сайт. Очень понравилась ваша. Однако вставив в сайт наткнулась на \"Сообщение обрабатывается\" и тишина. В обработчике я разобралась, c javascript все хуже. Страница куда вставляю - вордпрессовский шаблон, подключение скриптов запихала в функции, код страницы показывает что все подключилось. send.php относительно js-form.js находится так же, как у вас. Помогите подключить форму, пожалуйста.

      Ответить
      • 01 Июля 2015 12:32
        Павел Макаров

        Елена, если Вы видите табличку «Сообщение обрабатывается», зналит либо данные формы из скрипта js-form.js не отправляются в файл send.php, либо из последнего не пришёл какой-либо ответ. Если Вы самостоятельно не добавляли новые поля в форму обратной связи, не вносили изменения в файлы: js-form.js и send.php, то я на 95% уверен, что проблема в правильности указания пути на обработчик send.php в файле js-form.js, Это такая строчка:

        url: "../send.php",
        

        В Вашем случае её лучше заменить на полный путь до файла относительно Вашего сайта:

        url: "http://vash-sait/send.php",
        

        Ответить
    • 16 Июня 2015 12:23
      Сергей

      Доброго времени суток! Отсылаю сообщение, на форме пишет, что сообщение ушло все ок, но на почту не пришло. В Чем проблема так и не понял?

      Ответить
      • 01 Июля 2015 12:04
        Павел Макаров

        Сергей, обратитесь в тех.поддержку Вашего хостинга с просьбой уточнить работает ли функция php: mail()

        Ответить
        • 25 Июля 2015 16:26
          Игорь

          Павел, Вы не могли бы дать файл send.php с проверкой номера телефона.Буду очень благодарен!

          Ответить
        • 18 Августа 2015 16:00
          Денис

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

          Ответить
        • 19 Августа 2015 16:12
          Денис

          Всё работает прекрасно. Слов нет, автор молодец. Вот только вопрос: как сделать, чтобы форма пропускала семизначные номера? А то пока не пропускает что-то;(

          Ответить
        • 19 Февраля 2016 18:36
          Игорь Р

          Здравствуйте, Павел. На сайте моего хостера в разделе правил установки и использования РНР скриптов есть такие строчки: \"В параметрах функции mail() заполнение поля \'Return-Path:\' обязательно\", \"Директории, где размещены файлы, в которые пишут РНР скрипты должны иметь CHMOD 770\", \"Файлы, в которые пишут РНР скрипты, должны иметь CHMOD 660\". Поэтому у меня возникли некоторые вопросы, например, как в \"send.php\" заполнить поле \'Return-Path:\' и как определить CHMOD-ы директорий и файлов? И еще на один вопрос очень хочется получить исчерпывающий ответ: как переписать \"js-form.js\", чтобы использовать библиотеку не с ajax.гуглапи, а установленную на самом сервере (у меня версии 1.7.2). Все та же история: отправляю сообщение (форма на хостинге, адрес, на который должно прийти письмо, указан в \"send.php\") \"#loadBar\" пишет, что все \"ОК\", а в почту письмо не приходит!

          Ответить
    • 24 Июня 2015 23:14
      Алексей

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

      Ответить
      • 25 Июня 2015 08:51
        Алексей

        вопрос решился

        Ответить
    • 07 Августа 2015 22:29
      Петр

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

      Ответить
    • 13 Августа 2015 08:07
      Евгения

      Не могу не сказать спасибо! Отлично работает форма!

      Ответить
    • 28 Августа 2015 00:28
      Кирилл

      я сейчас с ума сойду... Павел, помоги! После нажатия на кнопку отправить, блоку loadBar присваивается display block, хотя нигде в коде его нет..Попробуйте нажать на кнопку отправить, а потом посмотрите на исходный код. У дива появится стиль на ровном месте. как от него избавиться?

      Ответить
    • 20 Сентября 2015 16:41
      Сергей

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

      Ответить
    • 23 Сентября 2015 15:00
      Николай

      Добрый день, Павел! Пытаюсь встроить данную форму в html страницу сайта, при нажатии кнопки отправить, заполненной или пустой формы выдается надпись запрос обрабатывается и ничего не происходит. Смотрел консоль браузера при выполнении >POST ../zip_20131116121040/send.php 405 (Method Not Allowed)f.support.ajax.f.ajaxTransport.send @ jquery.min.js:4 f.extend.ajax @ jquery.min.js:4 (anonymous function) @ js-form.js:13 -строчка $.ajax({ f.event.handle @ jquery.min.js:3 f.event.add.i.handle.k @ jquery.min.js:2 На этом сервере есть поддержка php, и есть возможность отправки на электронную почту, но форма созданная через конструктор немного убога, поэтому хочу попробовать использовать вашу. Спасибо

      Ответить
    • 23 Октября 2015 10:20
      Александр

      Можете помочь ?! Не работает форма (

      Ответить
    • 28 Ноября 2015 14:00
      Ghost

      Все нормально, вот только как мне в ставить в форму, простую строку для текста??

      Ответить
    • 12 Декабря 2015 11:14
      Вадим

      Скрипт выдает ошибку, помогите разобраться что не так? находится тут http://etm-i.ru/contact.html

      Ответить
      • 20 Декабря 2015 16:10
        Сергей

        Если клиент в вашей форме представится например как Анатолий Владимирович вылетит ошибка!

        Ответить
    • 14 Декабря 2015 15:18
      Вадим

      Скрипт установился нормально, но сработал корректно 1 раз, тоесть письмо с сайта пришло 1 раз, как исправить?

      Ответить
    • 20 Декабря 2015 15:54
      Сергей

      Павел, Спасибо огромное! Все работает только не могу понять как сделать что бы можно было крепить файлы Примеры работы формы : http://693369.рф/kontaktyi http://693369.рф/zakazat

      Ответить
    • 21 Декабря 2015 22:55
      Anna

      Добрый день! Подскажите, как работает \"response\"? откуда берет свое начало? Если я беру ваш код в чистом виде, то все хорошо. Вставляю в свой проект, не реагирует, выводя \"1\" вместо сообщения \"Отправлено\".

      Ответить
      • 22 Декабря 2015 16:37
        Сергей

        Anna добрый день, проверьте пути к файлам: /send.php /is.mobile.js

        Ответить
        • 22 Декабря 2015 17:20
          Сергей

          прошу прощения, не /is.mobile.js а .js-form.js

          Ответить
    • 28 Февраля 2016 22:05
      Вова

      Добрый день, Павел! Сервер ругался на файл .htaccess, при загрузке страницы - ошибка 500. Я запустил форму без файла .htaccess, но теперь кириллицу кракозябрит в теме письма и в самой форме, когда сообщают об ошибке. Что делать?

      Ответить
    • 01 Марта 2016 19:38
      Anton

      Выложите пожалуйста код файла send.php с формой для телефона. Никак не получается сделать. На почту приходит письмо, но только с именем отправителя, текстом написанным, и надписью "Телефон:", но номера телефона нету.

      Ответить
    • 01 Марта 2016 22:05
      Алим

      на самописный сайт как вставлять помогите с установкой amanasilbek@gmail.com напишите

      Ответить
    • 15 Марта 2016 15:03
      Умид

      Скажите а можно все файлы которые вы дали связать через какой либо код без программ как связывать css java я знаю а вот в php я нуб

      Ответить
    • 23 Марта 2016 23:49
      karlen

      Спасибо большое!

      Ответить
    • 24 Марта 2016 12:20
      Гость

      Павел, спасибо за статью! Только один вопрос, по обработчику. Так как кодировка utf-8 динамическая, я думаю, переменные правильнее обрабатывать функциями для многобайтовых кодировок. Например - mb_strlen.

      Ответить
    • 16 Апреля 2016 02:44
      Павел

      Здравствуйте! У меня такой вопрос, есть форма обратной связи с кнопкой "очистить форму", если заполнить все поля и нажать эту кнопку-всё отлично, кнопка работает и всё удаляет. А вот если, например, ввести не все данные или неправильно заполнить какое-либо поле (в форме будет оповещение, что поле не заполнено, при этом страница обновляется) то кнопка "очистить форму" уже не срабатывает. Не удаляет данные, а если удалить их вручную, то наоборот заполняет все поля. Подскажите пожалуйста, как сделать, чтобы эта кнопка всегда удаляла информацию?

      Ответить
      • 25 Апреля 2016 12:54
        Павел Макаров

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

        Ответить
        • 08 Мая 2016 13:18
          Артём

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

          Ответить
        • 02 Сентября 2016 01:36
          Олег

          Павел, доброго времени суток! Скачал форму, запустил, она не работает,прочитал почти все комментарии. Исправил пути в html и script, потом переписал их вручную, посмотрел установку денвера, правильно ли я вложил сайт, не помогает. У меня такая проблема - форма грузится пишет - сообщение обрабатывается... и крутится картинка, дальше ни чего не происходит! проверял скрипт подключен и библиотека тоже! третий день ломаю голову что не так!!!!!!!!!!!!!!!!

          Ответить
    • 01 Июня 2016 16:54
      Павел Смирнов

      Письма доставляются, спасибо. Но есть три глюка: 1. Не проводит проверку форм 2. Не подставляет $posName в формируемое сообщение 3. Почему-то не отправляет письма с адресом mail.ru Голову сломал, не могу исправить. В чем может быть дело?

      Ответить
      • 02 Июня 2016 13:03
        Павел Смирнов

        Путем долгих опытов выявил, что форма работает с глюками из-за строки if(empty($_POST[js])){ в файле send.php. Получается, что эта строка должна проверять отсутствие чего-нибудь, а это невозможно, так как проверять можно только НАЛИЧИЕ чего-либо. Такой логический парадокс в духе Алисы в стране чудес )Поэтому форма работает, но криво. Может быть знаете как это можно исправить?

        Ответить
    • 22 Июля 2016 12:08
      Vasya

      Можно ли протестировать форму на веб-страничке котороя еще не загруженна в сервере интернета?

      Ответить
    • 24 Июля 2016 14:43
      Serrg

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

      Ответить
    • 24 Июля 2016 14:52
      Serrg

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

      Ответить
    • 24 Июля 2016 15:16
      Serrg

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

      Ответить
      • 02 Сентября 2016 02:14
        Олег

        Павел, доброго времени суток! Скачал форму, запустил, она не работает,прочитал почти все комментарии. Исправил пути в html и script, потом переписал их вручную, посмотрел установку денвера, правильно ли я вложил сайт, не помогает. У меня такая проблема - форма грузится пишет - сообщение обрабатывается... и крутится картинка, дальше ни чего не происходит! проверял скрипт подключен и библиотека тоже! третий день ломаю голову что не так!!!!!!!!!!!!!!!!

        Ответить
    • 16 Сентября 2016 16:07
      Кирилл

      Павел, здравствуйте! Мы когда-то переписывались с вами по поводу вашей формы записи, с тех пор у меня всё отлично работает здесь: https://floating.moscow/appoint-visit/, но сегодня случайно узнал, что бывают случаи, когда форма заполнена без ошибок, клиенту выдаётся подтверждающее сообщение об отправке письма, но при этом уведомление на почту админу не уходит. Не было такого в вашей практике?

      Ответить
    • 13 Октября 2016 12:06
      Андрей

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

      Ответить
    • 18 Октября 2016 00:42
      Алексей

      Павел, добрый день! В первую очередь, огромное спасибо за прекрасную находку - формы без перезагрузки. Всё просто и понятно, легко кастомизируется по себя. Однако, есть одна проблемка. При заливке на хостинг форма работает исправно: письма отправляются, динамический текст о состоянии отправки демонстрируется. Но только на моём ПК. При проверке на других ПК и устройствах, строка состояния отправки письма бесконечно остаётся на этапе \"Сообщение отправляется\", хотя письмо приходит. Сильно коды скрипта, php и самой формы не менялись. В чём может быть проблема? Заранее спасибо!

      Ответить
    • 23 Ноября 2016 22:56
      Юрий

      Павел, доброго времени суток! Подскажите пожалуйста, как можно сделать так, чтобы в письме указывалась url страница с которой было отправлено сообщение? Спасибо!

      Ответить
    • 12 Декабря 2016 06:32
      Vadim

      Просто скопировал архив с вашего сайта и запустил на локальном сервере. 1) Кнопка \"отправить\" не нажимается! 2) чтобы заработали стили пришлось убрать слеш вначале href=\"css/style.css\"

      Ответить
    • 05 Января 2017 18:30
      Алексей

      А вас не смущают одинаковые id?

      Ответить
    • 09 Января 2017 19:29
      taras

      Скажите пожалуйста как интегрировать форму в cms openart ?

      Ответить
    • 19 Января 2017 12:35
      Андрей

      Павел, а не подскажете как подсветить неправильно заполненные поля?

      Ответить
    • 19 Января 2017 23:52
      Danis

      Благодарю, Павел! Сначала ничего не работало - пришлось разобраться и перенастроить фаервол серва) Ваш шаблон кода + настройки mail() отправки по ssl сделали прекрасную форму :)

      Ответить
    • 23 Января 2017 14:36
      Александр

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

      Ответить
    • 19 Февраля 2017 17:16
      Spartak

      Спасибо за форму. Есть проблема. С mail.ru письма не приходят. что исправить? Спасибо

      Ответить
    • 14 Марта 2017 22:43
      Игорь

      Здравствуйте, Павел! Оличная форма! Все отрабатывает, но есть одно но — не отправляет по указанному адресу (проверял тысячу раз). Почему, непонятно. Подскажите, пожалуйста! Фрагмент кола: //Отправка письма админу о новом комментарии $to = "fiesta-ig@meta.ua"; //Ваш e-mail адрес Заранее признателен, Игорь

      Ответить
    • 31 Марта 2017 16:26
      Сергей

      Долго мучился, все работало, но как и у многих не приходили письма на почту, хотя форма работала. Нашел причину у самого хостинг провайдера "Если сайт работает в режиме php apache https://thehost.ua/wiki/apache-cgi как на скрине выше, то изменить ящик можно в разделе www домены в свойствах домена в поле email администратора. Если сайт работает в режиме php cgi тогда изменить ящик можно в файле php-bin/php.ini в строке sendmail_path = "/usr/sbin/sendmail -t -i -f yachshik@domen.com"" после изменения согласно этим сообщениям все заработало, автору респект

      Ответить
    • 14 Июня 2017 18:38
      Гость

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

      Ответить
    • 18 Июля 2017 01:14
      Мария

      Здравствуйте! У вас проблемы с кавычками в коде, который в статье. В архиве, внизу статьи, все нормально. Стоило бы написать, что denwer не отправляет письма на почту, а хранит их в папке сервера \tmp\!sendmail (если где-то про это говорили, то извините, прослушала:) ). И спасибо огромное за урок и код:) Было бы тоже интересно как капчу прикрутить.

      Ответить
    • 05 Августа 2017 17:16
      Nata

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

      Ответить
      • 13 Августа 2017 16:35
        Amiens119

        Мне доходит только само сообщение БЕЗ емайла отправителя. ----как-то так. А какой его майл для связи не известно. Это большой недостаток данной формы. По мне так пустой набор кода, много символов и всё . Форма бесполезна. Так для самых новичков поиграться по типу -ух ты, пух ты!

        Ответить
    • 11 Октября 2017 15:01
      Валерий

      Здравствуйте. Не могли бы вы немного доработать эту форму и рассказать как через форму обратной связи отсылать файлы (много файлов!) на E-mail. При этом проверять ещё и типы файлов. В идеале создать в форме какую-нибудь область, куда файлы можно перетащить и бросить. А ещё перед отправкой возможность удалить ошибочно прикреплённые.

      Ответить



  Наверх