Добрый день, друзья! В этой статье я расскажу, как создать форму обратной связи без перезагрузки страницы с помощью php и ajax. Настроить и установить форму обратной связи без перезагрузки на Ваш сайт. А так же я записал подробный видео урок по этой теме.
На самом деле, мне регулярно приходят сообщения с просьбами рассказать, как создать форму обратной связи без перезагрузки, как сделать форму подписки без перезагрузки, как настроить такую форму на сайте и ещё очень много подобных вопросов.
Сразу скажу, что это довольно сложная тема сама по себе, а рассказать нужно так, чтобы её смогли понять и усвоить и те люди, которые совсем не разбираются в программировании на PHP и JavaScript (ajax). Эта статья не для новичков, и если Вы плохо разбираетесь в HTML и совсем не знаете PHP, то разобраться Вам будет трудновато.
На написание этой статьи, подготовку исходного кода формы и запись видео урока я потратил целый день работы. Но я думаю, что это сделал не зря, и эта статья Вам очень понравится.
Итак, давайте посмотрим, как же будет выглядеть и работать наша форма обратной связи без перезагрузки.
Нажимая кнопку «Отправить» вверху над формой обратной связи появится подсказка «Сообщение обрабатывается…»
Если посетитель Вашего сайта не заполнил форму или ввёл не корректные данные, то появится сообщение об ошибке.
Если же всё было заполнено верно, то текст из формы обратной связи отправится на Ваш e-mail, а человеку будет показано сообщение об успешной отправке.
Ну а теперь друзья переходим к коду. HTML-код формы обратной связи без перезагрузки будет выглядеть так:
Задать новый вопрос:
HTML– это скелет нашей формы. Давайте её немного украсим, добавив CSS-стилей:
Информация из нашей формы обратной связи после нажатия на кнопку «Отправить», отправляется на сервер (в обработчик) в фоновом режиме, без перезагрузки страницы в браузере. За это отвечает 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 = "! Ваше сообщение отправлено!
В обработчике нам необходимо проверить что отправил посетитель, и если всё в порядке отправить письмо админу сайта. А посетителю сообщить, что его письмо успешно отправлено! Пишем php-код:
Вы ввели неправильный 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. Внимание! Всех приглашаю в свою группу Вконтакте! Давайте делиться анонсами своих статей на стене этой группы! Думаю, она станет неплохим источником трафика для каждого блоггера!
Первый раз попробовал - все сработало штатно, письмо пришло. Потом начал править под себя, пошли ошибки. Вроде логично: где то что то неаккуратно...
Но дальше начались странности. Перезалил все с самого начала - ошибки те же. И вот какие. $log выводит текст файла send.php, начиная с середины строки 25 (проверка имени): "20 || strlen($posName)<3) {..."
В чем может быть дело?
leo, возможно у Вас не обновился файл send.php. Попробуйте начать всё с чистого листа! Причина ошибок у Вас вероятнее всего связана с пунктуацией, т.е. в районе строки 25 не корректно поставлены кавычки, слеши, скобки.
Павел, зачем нужна проверка "if(empty($_POST['js'])" в начале файла send.php и что это за переменная js? Не нашел где она определена.
В конце send.php забыть тег ?>
Ищу ошибку но пока не нашел..
leo, условие "if(empty($_POST['js'])" проверяет включен ли у пользователя в браузере JavaScript. Пришли ли данные методом POST из js файла, причём название этого файла роли не играет. В файле send.php Вы можете его убрать, т.к. я не писал альтернативного варианта. В конце файла send.php тег ?> намерено не поставлен! Вообше в программировании на php принято не ставить закрывающий тег ?> с целью улучшения безопастности файла.
Если проблема сохраняется, Вы можете отправить мне файлы на e-mail: admin@pavelmakarov.ru
Нашел у себя косяк, исправил, все заработало.
Хотелось бы сказать, что примеров-аналогов перекопал немало в и-нете, но предложенное решение подкупает, компактностью, аккуратностью и отлаженностью! Спасибо.
Письма доставляются, спасибо. Но есть три глюка:
1. Не проводит проверку форм
2. Не подставляет $posName в формируемое сообщение
3. Почему-то не отправляет письма с адресом mail.ru
Голову сломал, не могу исправить. В чем может быть дело?
leonking, вторую форму ставите также как первую. Самое лёгкое это просто продублировать все файлы формы изменив основные идентификаторы. Например: в первой форме id="posName", а во второй ставите id="posName2". Есстественно изменения должны быть и в js и в php файлах.
отличный материал, спасибо вселенское!))
сделала, как описано выше - 2 одинаковые формы на одной странице, всё работает.. но приходят два письма с одной формы - за первым нормальным, прилетает дублирующее с пустыми значениями (имя, телефон) подскажите, где править - в яваскрипте или пхп??? заранее, спасибо =)
Света, обратите внимание на строку в html-коде формы
id="send" в формах должен также различаться, например id="send1". В яваскрипте этот момент также нужно поправить!
Чтобы ответить точнее, нужно взглянуть на страницу с Вашими формами связи.
а как именно нужно попровить id="send" в скрипте? возможно ли использовать эту форму в модальном окне И на сайте статично если прописаны разные идентификаторы?
Здравствуйте Павел, к сожалению Вы не ответили на мой вопрос по поводу формы, форма работает, но вот телефон при отправке не отражается в самом письме, можно ли это исправить?
Здравствуйте Павел!
Я добавил новое поле "Телефон" в Вашу форму, и при заполнении всех полей, на мыло приходят все данные введённые во все поля, кроме телефона, тоесть как положено:
Новое сообщение с Вашего сайта
От кого: tyst@tyst.ru <tyst@tyst.ru> ⚁
Кому: liga777-76@mail.ru
Сегодня, 12:01
Человек по имени Петя отправил Вам сообщение с сайта:
Проверка
Как добавить телефон в скрипт формы? Благодарю за ответ!
aliG, добавив новое поле "Телефон" Вы должны были ему присвоить какой-то идентификатор допустим: id="posTell".
Внести изменения в js-код, после 10 строки добавить код:
Спасибо Павел, сейчас попробую переделать.
Кстати еще вопрос, может сделаете урок как сделать форму для коментариев как у Вас на сайте ну или похожую или может уже есть такой урок, дайте пожалуйста ссылку, благодарю Вас!!!
Спасибо большое за скрипт, особенно за ответ про телефон.
Единственное что, все разместил как вы указали только нашел ошибку в первой строчке.
var posText = $("#posTell").val();
заменил posText на posTell и все заработало.
Еще раз спасибо.
Павел, подскажите как сделать проверку для поля "телефон"? Саму форму на сайт вставил, но в поле телефон можно вписать,сейчас, все что угодно!!!
Заранее спасибо.
Здравствуйте Павел. Очень заинтересовал ваш вариант формы обратной связи, спасибо вам за ваш полезный труд!
Лишь только маленькая просьба к вам, отправьте пожалуйста и мне тоже архив с добавленнным полем для телефона и для проверки. Очень буду вам благодарен! Спасибо!
Спасибо Павел! Всё работает отлично только вот хотелось бы дополнительное поле для телефона,не могли бы Вы и мне отправить такую форму, а то у меня что то не получается. Заранее благодарен.
Здравствуйте Александр!
Отправил Вам на e-mail архив файлов формы обратной связи с дополнительным полем для телефона, а также возможность отправки письма на второй e-mail адрес. Внимательно просмотрите файл send.php Строка 93 Ваш второй e-mail. У себя проверил, всё работает!
Я вас благодарю Павел. Отличная форма! Все работает так как и хотелось! Единственный вопрос только возникает: возможно ли сделать поле ввода сообщения резиновым?
Огромное спасибо Павел, все что прислал работает на ура ,без ошибок. Извени что сразу не отписался в деревню уезжал, еще раз огромная благодорность ,буду всем советовать Вас.
Павел, спасибо за форму!!! Не могли бы вы обновить архив, чтоб там было поле с номером телефона, а также возможность вставки второго e-mail. + капча как в данных комментариях?
Игорь, информация по установке и настройке каптчи скоро появится в отдельной статье. Обновлять архив не вижу смысла т.к. код с полем телефона я давал в комментариях, в основной статье этой инфы нет - бужет как-то не логично.
Павел, здравствуйте!
Все очень доходчиво и понятно, но что-то всё равно не получается с дополнительным полем для телефона.
Не могли бы Вы мне отправить на эл.почту архив файлов формы обратной связи с дополнительным полем для телефона.
Доброго времени суток. Сегодня наткнулся на ваш блог, очень понравился. Но вот беда не нашел статьи про RSS рассылку можете рассказать подробно как ее сделать, и если не затруднит скинуть исходник. (легче понимается когда в коде покапаюсь) Спасибо
У ВАС по ходу это все не рабочее, сразу же на первый получил ошибку css не подключается.
<link rel=\"stylesheet\" type=\"text/css\" href=\"/css/style.css\">
/ надо убрать.
Кнопка ОТПРАВИТЬ не работает...
Αнна, скорее всего на Вашем сайте уже установлена библиотека jquery, попробуйте без неё. А файл js-form.js подключите непосредственно перед закрывающимся тегом </head>.
Интересный блок. Попробовал, все работает нормально.
А по этой форме файлы можно отправить? То есть если в форму добавить новое поле для загрузки файлов, оно будет работать?
Привет Павел. Спасибо за подробный урок, я очень долго его искала. Сейчас буду пробовать его использовать и очень надеюсь, что у меня все получится. Особенно если учесть что у меня 3 разных формы на одной странице.
Ну вроде бы начало было хорошее, однако столкнулась с проблемой кодировки именно js файла - т е сам код нормальный, а вот кириллица поехала. Как это можно разрулить?
Оля, файлы формы написаны в кодировке utf-8, вероятно она отличается от кодировки Вашего сайт. Можно изменить кодировку файлов формы на такую, как у Вашего сайта, но данные из формы могут отправляться посредством аякс только в кодировке utf-8 т.е. их отдельно тогда придётся перекодировать в utf-8 и обратно. Либо страницу и файлы формы обратной связи поместить в отдельную папку, в моём архиве есть файл .htaccess с кодом по умолчанию устанавливающем кодировку utf-8.
Большое спасибо Павел за этот урок.Всё прекрасно работает, добавил нужные мне поля для формы.
Есть небольшой вопрос.как можно сделать чтобы все сообщения (об ошибках или об успешной отправке и обработке) выводились в отдельном блоке поверх всего,и либо висели определённое время,либо по клику на пустом месте прятались?я понял что за сообщения отвечает блок loadbar, но не выходит его выводить в нужное место.
отвечает за вывод информационных сообщений. Его без проблем можно переместить в любое место Вашей html-страницы. Чтобы сообщения удалялись через определённое время измените часть кода в js-файле:
Уважаемые друзья! Очень много приходит вопросов по поводу каптчи (защиты от спама) для этой формы. В ближайщей статье этот вопрос будет подробно рассмотрен на примере этой формы. )
Здравствуйте Павел.
Установил , все пути в файлах поменял на свои, больше ни чего не менял. но отправка сообщения не работает, кнопка отправить не реагирует. и далее ни чего не происходит.
В переменных в куске с JS кодом символы кавычек, относящиеся к html-конструкции не экранированы, из за этого - не выполняются скрипты, записанные в том же файле (если это main.js какой нибудь), да и сам скрипт по той же причине может не работать, насколько я понимаю.
А вообще, спасибо за код!
Tim, форма во всех случаях одна и таже? Размещается на разных страницах? В этом случае просто копируете html-код формы необходимое количество раз, подключаете к страницам скрипты: js-form.js и jquery.min.js, их и обработчик send.php дублировать не нужно.
Александр, в данном случае это не ошибка, а предупреждение. У Вашего сервера стоит очень высокая чувствительность к синтаксису php-кода. В файле send.php сразу после <?php
разместите строчку:
Форма работает отлично, но есть одно НО - если inputу добавить placeholder="" то скрипт его пропустит посчитав заполненным.
Вот пример инпута - <input type="text" class="input" id="posName" name="name" placeholder="Имя *"> - отправляя можно не заполнять, скрипт возьмёт данные из плейсхолдера. Не подскажете как можно обойти эту проблемку?
Алексей, placeholder="" можно использовать! В указанной строчке выше Вы пропустили атрибут value="". Это не обязательный атрибут, но если Вы используете placeholder="Имя *", то без явного указания value="" (значение пустаты), атрибуту value="Имя *" присваивается "Имя *" по умолчанию! И скрипт это ловит!
Только что тестировал скрипт прописав такой инпут:
К сожалению всё равно не работает. Как только убираю плейсхолдер - всё начинает работать... Я уже всю голову изломал как это обойти. Возможно ли добавить какой то обработчик в скрипт php, чтобы он этот атрибут игнорировал?
Приветствую. Поставил данную форму обратной связи на сайт - пишет, что всё ок, но письма не приходят. http://atcruz.somee.com/feedback.aspx
Вот ссылка. Может быть проблема в том, что я использую почту yahoo.com? Или проблема может быть в хостинге?
Здравствуйте. Форма отличная, поставил себе все работает, изменил под свои нужды, но маленькая проблема - почему-то не могу изменить стиль текста в блоке с gif-кой. Менял и js и отдельно css добавлял все равно не меняется, хотя весь текст с ошибками и правильной отправкой изменил отлично...
Там должен быть указан Ваш e-mail адрес, на который Вы хотите получать письма из формы!
Если всё указано правильно, то думаю стоит обратиться в тех.поддержку Вашего хостинга с вопросом: работает ли вообще функция mail() php?
Также стоит проверить папку спам, возможно по какой-то причине письма перемещаются туда.
Тоже столкнулся с данной проблемой, на Денвере все гуд, а только заливаю на хостинг и письма не приходят, хотя по почтовым логам все отправляется. Полдня танца с бубнами и все решилось переносом эмейла в поле письма. Переменные $from и $headers - вообще убрал. Только так заработало. Но теперь работает безотказно ))
Павел, Большое Спасибо за данный код, он шикарен. Знаю только HTML и CSS, но разобраться в Вашем PHP-коде не составило труда, все легко и доступно.
Павел, большое спасибо за форму!
У меня такой вопрос: как сделать проверку для номера телефона? К примеру, телефон должен быть не менее 10 символов, и при неправильном вводе должна появляться соответствующая ошибка.
Добрый день, Павел!
Спасибо большое за код! Немного изменив под себя, поставила на сайт все работает прекрасно!!!
Но есть вопрос: у меня на одной странице есть 5 форм отправки сообщений идентичных, но в разных местах. Пришлось делать 5 комплектов формы (5 форм, 5 send.php, 5 js файлов с разными именами). Нельзя ли как-то унифицировать, чтобы не плодить код?
здравствуйте
сделал всё как описано, всё нравится но есть пару вопросов.
1---как сделать если посетитель не заполнил телефон письмо всё ровно отсылалось? то-есть при пустом поле телефона не видавало ошибок.
2---если можно подскажите как поставить капчу?
и очень интересно почему, но когда email отсылаю с hotmail-а или с gmail-а все письма приходят но а если отсылаю с yahoo нет, не одно не пришло. почему?
mk-ned, здравствуйте!
Выше в комментариях я давал код для проверки телефона. Если же необходимо пропускать пустое поле, то вот пример обычного условия + внутри код проверки введёного номера:
if($posTel != "") { /*если поле не пустое*/
//Проверка правильности введёного номера
if(!$posTel || strlen($posTel)>16 || strlen($posTel)<10) {
$log.="
Неправильно заполнено поле \"Телефон\" (10-16 символов)!
Если поле будет пустым, скрипт ничего делать не будет. В переменной $posTel находится номер телефона клиентов.
Про капчу скоро выйдет статья!
Не совсем понял третий вопрос?.. Из формы связи письма не доставляются в почтовый ящик yahoo?
спасибо за ответ
третий вопрос таков:-если в форме связи я в поле email ввожу адрес допустим mk@yahoo.com то письмо не доставляется, оно где-то теряется (даже в spam нету) а с mk@gmail.com или mk@hotmail.com проблем нету
Добрый вечер, Павел. Не работает форма. После нажатия "отправить" появляется строка с загрузкой (с гифкой), но далее ничего не происходит. В консоли вылетает ошибка: 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. Я полностью изучил видео, да и тут все прочитал. Не могу решить проблему.
Alexey, сложно ответить на Ваш вопрос... Проблема может быть либо в файле js-form.js, либо в файле send.php
Вы устанавливаете форму на локальном сервере? Изменяли что-нибудь под себя?
Мне нужно увидеть страницу на которой размещена форма (если она в интернете). Или посмотреть указанные выше файлы.
Прошу прощения, разобрался. Всему виной моя невнимательность. Просто переписал все пути по новой и установил на локальном сервере, все заработало. Очень хорошая форма, спасибо, Павел. Много полезного нашел на Вашем сайте.
если в форме связи я в поле email ввожу адрес допустим mk@yahoo.com то письмо не доставляется, оно где-то теряется (даже в spam нету) а с mk@gmail.com или mk@hotmail.com приходят без проблем.
да ещё в скрипт для проверки телефона надо подправить место $posTel надо писать $posTell
Здравствуйте.
У меня на локалке форма не работает.
Залил на хостинг, вообще не запускается директория с Вашими файлами.
Попробовал на сайте вставить форму, после отправки формы грузится iframe с моим же сайтом внутри...
Подскажите пожалуйста, у меня сайт в кодировке windows-1251.
Я поменял везде в send.php utf-8 на windows-1251.
На форме все уведомления высвечиваются нормально, а вот в приходящем письме имя отправителя и текст сообщения кракозябрами. Где еще надо указать кодировку, чтоб все заработало нормально?
Павел, большое спасибо за эту Обратную форму!!!! За труд, за объяснения и помощь кто в ней нуждался в комментах выше!!!!
Абсолютно не понимаю PHP и JavaScript (ajax), только знаю html, css. Все доступно, просто и понятно в Вашей форме Обратной связи - очень легко установил и свой дизайн сделал! Все работает замечательно. Еще бы капчу прикрутить...
Как пожелание!!! )))
Павел, не могли бы Вы обяснить, как сделать чтобы форма отправляла файлы? Поле создал, но как эти данные передать через аякс на пхп и дальше я не знаю как сделать.
Здравствуйте, Павел. Скажите, пожалуйста, есть ли особенности, которые нужно учесть в коде, если мне нужна форма обратной связи не на главной странице блога, а на странице Контакты? А то вроде все правильно делаю (как мне кажется:)), вставляю форму в нужное место, но после заполнения меня выбрасывает на главную страницу с постами, и без каких-то уведомлений.
Заранее спасибо.
Код работает. Спасибо. Но если человек делает ошибку в эл.адресе, например, письмо все равно отправляется, и я не могу связаться с клиентом, вот что плохо. Вот если бы можно было двойным введением, проверять корректность эл.адреса
Свелана, можно добавить дополнительное поле mail-2, а в обработчике send.php сравнивать полученные от них данные. Если эл.адреса разные, выводим посетителю ошибку.
В чем может быть причина. Локально код работает. А когда заливаю на хост, то выдается ошибка:
Внутренняя Ошибка Сервера
Сервер обнаружил внутреннюю ошибку или неправильная и не смог выполнить ваш запрос.
Пожалуйста, свяжитесь с сервера администратора, webmaster@lp71.ru и информировать их о времени произошла ошибка, и все, что вы могли бы сделать, что может быть причиной ошибки.
Более подробная информация об этой ошибке могут быть доступны в журнале ошибок сервера.
Кроме того, 404 Not Found ошибка при попытке использовать ErrorDocument обработать запрос.
Дмитрий, в любом случае поддержка .php необходима! Без него не будет работать файл обработчик send.php, а вообще html-код формы можно разместить на странице index.html, форма будет работать.
Павел, здравствуйте. Есть форма, есть обработчик. Письма уходят, и все останавливается на странице обработчика.
Здесь последняя строка обработчика
$status = \'Ваше сообщение отправлено!\';
Здесь скрипт клиента
if ($status)
{
echo \"OK\";
}else
.......
Я уже не знаю на что грешить, не передается статус. Может где в настройках сервака ковыряться надо?
Добрый день, Павел! Спасибо большое за отличную форму! У меня возникла не большая проблема, ее выше уже озвучивали.
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); , но проблема все равно осталась. Прошу помощи :). Спасибо!
Павел, спасибо огромное, отличная красивая форма! Один вопрос - никак не пойму, как отключить обязательность наличия текста в форме $posText? Делаю так:
//Проверка наличия введенного текста комментария
if (empty($posText))
{
$error = \"no\";
При этом php перестаёт проверять вообще все условия (имя, емэйл) и даёт отправлять пустое сообщение
Павел, это первое, что я попробовал сделать, но тогда скрипт перестаёт проверять все остальные условия (у меня стоит обязательность наличия символов на имени и ещё на 2 полях, которые я добавил - телефон и выбор даты). Если кусок кода, который касается поля $posText оставить, как есть, то и все остальные условия срабатывают чётко
Было бы идеально если к этой форме добавить еще одно поле прикрепить файл. Небольшой файл до 5 мб.
Выложите код полностью с проверкой всех полей в том числе и телефона...
Добрый день! Идея формы отличная! Только... Скачанная форма не работает((( Ошибки в подключении css и js - но это мелочи! При нажатии на кнопку (даже если поля не заполнены) начинает крутиться кружок и Сообщение обрабатывается...
И все!!! и висит...и крутиться)
Павел, можете скинуть рабочую форму на strizhovadarya@yandex.ru
Спасибо!
Дарья, здравствуйте!
Файлы формы обратной связи полностью рабочии! Скопируйте файлы из скаченного архива в корень своего сайта. Форма будет работать! Если Вы вставляете html-код формы обратной связи в какую либо из страниц своего сайта, то есстественно нужно проверять пути подключения .css и .js файлов. Более того, в зависимости от того где Вы разместили файл send.php, Вы должны в файле js-form.js найти строчку: url: "../send.php", и отредактировать путь до него. Обычно это основная причина зависания подсказки "Сообщение обрабатывается...".
Не понимаю, каким образом у всех всё работает. Я конечно понимаю, что бесплатный сыр только в мышеловке, но тогда зачем вообще выставлять файлы для скачивания. Я извиняюсь конечно, может это я туплю. Идея сайта прекрасная, для новичков программирования самое то. Но так как я хорошо знаю только html и css, а от php и javascript далека, мне информация оказалась бесполезной. Не работает вообще. Я исправила пути и заработали только html и css-стили, больше ничего. Сообщение не отправляется, подсказки об ошибках не возникают. Жаль... уже 2 дня пытаюсь безуспешно сделать форму связи на сайт
Доброго времени суток. Два дня в поисках формы на сайт. Очень понравилась ваша. Однако вставив в сайт наткнулась на \"Сообщение обрабатывается\" и тишина. В обработчике я разобралась, c javascript все хуже. Страница куда вставляю - вордпрессовский шаблон, подключение скриптов запихала в функции, код страницы показывает что все подключилось. send.php относительно js-form.js находится так же, как у вас. Помогите подключить форму, пожалуйста.
Елена, если Вы видите табличку «Сообщение обрабатывается», зналит либо данные формы из скрипта js-form.js не отправляются в файл send.php, либо из последнего не пришёл какой-либо ответ. Если Вы самостоятельно не добавляли новые поля в форму обратной связи, не вносили изменения в файлы: js-form.js и send.php, то я на 95% уверен, что проблема в правильности указания пути на обработчик send.php в файле js-form.js, Это такая строчка:
url: "../send.php",
В Вашем случае её лучше заменить на полный путь до файла относительно Вашего сайта:
Всё работает прекрасно. Слов нет,
автор молодец.
Вот только вопрос:
как сделать, чтобы форма пропускала семизначные номера?
А то пока не пропускает что-то;(
Здравствуйте, Павел. На сайте моего хостера в разделе правил установки и использования РНР скриптов есть такие строчки: \"В параметрах функции mail() заполнение поля \'Return-Path:\' обязательно\", \"Директории, где размещены файлы, в которые пишут РНР скрипты должны иметь CHMOD 770\", \"Файлы, в которые пишут РНР скрипты, должны иметь CHMOD 660\". Поэтому у меня возникли некоторые вопросы, например, как в \"send.php\" заполнить поле \'Return-Path:\' и как определить CHMOD-ы директорий и файлов? И еще на один вопрос очень хочется получить исчерпывающий ответ: как переписать \"js-form.js\", чтобы использовать библиотеку не с ajax.гуглапи, а установленную на самом сервере (у меня версии 1.7.2). Все та же история: отправляю сообщение (форма на хостинге, адрес, на который должно прийти письмо, указан в \"send.php\") \"#loadBar\" пишет, что все \"ОК\", а в почту письмо не приходит!
Добрый день никак не хочет работать вторая форма на одной странице. Читал комментарии и ничего из этого не помогло. Одна работает без проблем. Какие правки нужно делать в файлах скриптов. Если можно пример. Спасибо.
Вот ищещь, ищешь вариатны обратной связи, а тут бац и находишь. Автор красавчик, все прекрасно запустилось:) даже ничего не делал! Удачи в ваших творческих кодописьменах!
я сейчас с ума сойду... Павел, помоги! После нажатия на кнопку отправить, блоку loadBar присваивается display block, хотя нигде в коде его нет..Попробуйте нажать на кнопку отправить, а потом посмотрите на исходный код. У дива появится стиль на ровном месте. как от него избавиться?
Вот еще один способ создания FeedBack-формы. Легко встраивается в любой проект. Все работает без перезагрузки страницы.
youtube.com/watch?v=KR92NYGmQVY
Добрый день, Павел! Пытаюсь встроить данную форму в 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, и есть возможность отправки на электронную почту, но форма созданная через конструктор немного убога, поэтому хочу попробовать использовать вашу.
Спасибо
Павел, Спасибо огромное! Все работает только не могу понять как сделать что бы можно было крепить файлы
Примеры работы формы :
http://693369.рф/kontaktyi
http://693369.рф/zakazat
Добрый день! Подскажите, как работает \"response\"? откуда берет свое начало? Если я беру ваш код в чистом виде, то все хорошо. Вставляю в свой проект, не реагирует, выводя \"1\" вместо сообщения \"Отправлено\".
Добрый день, Павел!
Сервер ругался на файл .htaccess, при загрузке страницы - ошибка 500. Я запустил форму без файла .htaccess, но теперь кириллицу кракозябрит в теме письма и в самой форме, когда сообщают об ошибке. Что делать?
Выложите пожалуйста код файла send.php с формой для телефона. Никак не получается сделать. На почту приходит письмо, но только с именем отправителя, текстом написанным, и надписью "Телефон:", но номера телефона нету.
Павел, спасибо за статью!
Только один вопрос, по обработчику.
Так как кодировка utf-8 динамическая, я думаю, переменные правильнее обрабатывать функциями для многобайтовых кодировок. Например - mb_strlen.
Здравствуйте! У меня такой вопрос, есть форма обратной связи с кнопкой "очистить форму", если заполнить все поля и нажать эту кнопку-всё отлично, кнопка работает и всё удаляет. А вот если, например, ввести не все данные или неправильно заполнить какое-либо поле (в форме будет оповещение, что поле не заполнено, при этом страница обновляется) то кнопка "очистить форму" уже не срабатывает. Не удаляет данные, а если удалить их вручную, то наоборот заполняет все поля. Подскажите пожалуйста, как сделать, чтобы эта кнопка всегда удаляла информацию?
Вставил как есть на свой сайт, изменил только почту куда приходят сообщения, все проходит успешно, но сообщение так и не дошло до моей почты, в чем дело?
Павел, доброго времени суток! Скачал форму, запустил, она не работает,прочитал почти все комментарии. Исправил пути в html и script, потом переписал их вручную, посмотрел установку денвера, правильно ли я вложил сайт, не помогает. У меня такая проблема - форма грузится пишет - сообщение обрабатывается... и крутится картинка, дальше ни чего не происходит! проверял скрипт подключен и библиотека тоже! третий день ломаю голову что не так!!!!!!!!!!!!!!!!
Письма доставляются, спасибо. Но есть три глюка: 1. Не проводит проверку форм 2. Не подставляет $posName в формируемое сообщение 3. Почему-то не отправляет письма с адресом mail.ru Голову сломал, не могу исправить. В чем может быть дело?
Путем долгих опытов выявил, что форма работает с глюками из-за строки if(empty($_POST[js])){ в файле send.php. Получается, что эта строка должна проверять отсутствие чего-нибудь, а это невозможно, так как проверять можно только НАЛИЧИЕ чего-либо. Такой логический парадокс в духе Алисы в стране чудес )Поэтому форма работает, но криво. Может быть знаете как это можно исправить?
Разобрался! Оказывается почтовые серверы поддерживающие сертификат DMARC могут не принимать письма, содержащие не реальные обратные адреса, из-за политики анти-спам. Пишите реальный адрес при проверке и письма придут.
Ещё раз спасибо Павел!
Павел, доброго времени суток! Скачал форму, запустил, она не работает,прочитал почти все комментарии. Исправил пути в html и script, потом переписал их вручную, посмотрел установку денвера, правильно ли я вложил сайт, не помогает. У меня такая проблема - форма грузится пишет - сообщение обрабатывается... и крутится картинка, дальше ни чего не происходит! проверял скрипт подключен и библиотека тоже! третий день ломаю голову что не так!!!!!!!!!!!!!!!!
Павел, здравствуйте! Мы когда-то переписывались с вами по поводу вашей формы записи, с тех пор у меня всё отлично работает здесь: https://floating.moscow/appoint-visit/, но сегодня случайно узнал, что бывают случаи, когда форма заполнена без ошибок, клиенту выдаётся подтверждающее сообщение об отправке письма, но при этом уведомление на почту админу не уходит. Не было такого в вашей практике?
Я попробовал но у меня не вышло((( Решил, что не судьба и стал юзать конструктор форм https://www.testograf.ru/ru/blog/forma-obratnoj-svyazi.html Там можно создать любое количество форм, контактных, форм обратной связи или форм заказа для сайта. Короче все, что угодно. Добавляйте любые поля, включая загрузку файла.
Примеры форм можно посмотреть здесь: https://www.testograf.ru/ru/konstruktor-form/primeri/
Павел, добрый день!
В первую очередь, огромное спасибо за прекрасную находку - формы без перезагрузки. Всё просто и понятно, легко кастомизируется по себя. Однако, есть одна проблемка.
При заливке на хостинг форма работает исправно: письма отправляются, динамический текст о состоянии отправки демонстрируется. Но только на моём ПК. При проверке на других ПК и устройствах, строка состояния отправки письма бесконечно остаётся на этапе \"Сообщение отправляется\", хотя письмо приходит.
Сильно коды скрипта, php и самой формы не менялись. В чём может быть проблема?
Заранее спасибо!
Павел, доброго времени суток!
Подскажите пожалуйста, как можно сделать так, чтобы в письме указывалась url страница с которой было отправлено сообщение?
Спасибо!
Просто скопировал архив с вашего сайта и запустил на локальном сервере.
1) Кнопка \"отправить\" не нажимается!
2) чтобы заработали стили пришлось убрать слеш вначале href=\"css/style.css\"
Благодарю, Павел! Сначала ничего не работало - пришлось разобраться и перенастроить фаервол серва) Ваш шаблон кода + настройки mail() отправки по ssl сделали прекрасную форму :)
Здравствуйте, в первую очередь хотел бы поблагодарить за данную форму. Так же хотел бы уточнить, поменял e-mail но на него ни чего с формы не приходит, возможно ли это из-за хостинга или что, то в коде?
Здравствуйте, Павел!
Оличная форма! Все отрабатывает, но есть одно но — не отправляет по указанному адресу (проверял тысячу раз). Почему, непонятно. Подскажите, пожалуйста!
Фрагмент кола:
//Отправка письма админу о новом комментарии
$to = "fiesta-ig@meta.ua"; //Ваш e-mail адрес
Заранее признателен,
Игорь
Долго мучился, все работало, но как и у многих не приходили письма на почту, хотя форма работала. Нашел причину у самого хостинг провайдера "Если сайт работает в режиме 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""
после изменения согласно этим сообщениям все заработало, автору респект
Здравствуйте!
Подскажите, пожалуйста как добавить новое поле в форму содержащее название страницы (и отдельно ссылка на эту страницу) с которой она будет отправляться?
Еще буду очень признателен, если подскажите как добавить выпадающий список и чекбокс.
Спасибо!
Здравствуйте! У вас проблемы с кавычками в коде, который в статье. В архиве, внизу статьи, все нормально. Стоило бы написать, что denwer не отправляет письма на почту, а хранит их в папке сервера \tmp\!sendmail (если где-то про это говорили, то извините, прослушала:) ).
И спасибо огромное за урок и код:)
Было бы тоже интересно как капчу прикрутить.
Спасибо огромнейшее за урок и за коды! Проверяла Денвером - всё работает на ура на всех браузерах, кроме мозилы (при нажатии "отправить" ничего не происходит). Подскажите, пожалуйста, можно ли как-то это испавить? Может просто Денвер не "дружит" с мозилой?
Здравствуйте. Не могли бы вы немного доработать эту форму и рассказать как через форму обратной связи отсылать файлы (много файлов!) на E-mail. При этом проверять ещё и типы файлов. В идеале создать в форме какую-нибудь область, куда файлы можно перетащить и бросить. А ещё перед отправкой возможность удалить ошибочно прикреплённые.
здравствуйте, возможно не по теме, но все же.. не могу понять как подключить js к php, т.е есть форма, она обрабатывается через js и передает все к php. Не могу написать код php, так как я новичек и не дошел до изучения языка php. Помогите пожалуйста)
Здравствуйте, скачал Вашу форму, изменил "mail@yourdomain.ru" на свой и залил на сайт все как есть... Отправляет письма только если в форме посетитель указывает в email "...@ukr.net", например если напишет "login@gmail.com", то пишет что отправлено, а письма не приходят. Не подскажите в чем дело?
Спасибо за отличную статью! Да с проверками входящих данных и email, что просто супер. А то делал в позапрошлом месяце форму, там через нее потом спама столько пришло, да и в php еще скрипт какой-то подсунули. Собрал форму через stepFORM в итоге, а свою пришлось удалить.
Здравствуйте! Уже много лет с успехом и удобством использую Вашу форму и всегда она меня радует и выручает! Уже ни один сайт сделал с её использованием! Но вот сейчас возникла проблема добавить к ней ещё одно текстовое поле. Но, к сожалению, никак не получается. Вроде всё и везде прописал правильно, а это поле не видится формой (не проверяется на ошибки, не присылается на почту информация из него). Не могли бы Вы подробнее рассказать, как можно добавить поля к форме и где, что и как надо прописать для этого? Заранее большое спасибо!
Павел Макаров
dsfsdf, что у Вас не работает? Выводит ли браузер какие-нибудь ошибки? Код перепроверил, всё работает!