Форма отправки файла с сайта

Форма отправки файла с сайта

Главная | Веб-дизайн и оптимизация сайтов | Фотолаборатория | Радиотехника | Полезные программы | Разработка сайтов Ваш браузер не поддерживает технологию iframes. Для навигации используйте верхнее меню

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

• Создание формы обратной связи на сайте
• Проверка ввода формы обратной связи
• Простая форма обратной связи с проверкой введенных данных
• Создание анкеты на сайте
• Проверка формы обратной связи "на лету"
• Отправка файлов через форму обратной связи
• Капча в форме обратной связи
• Простая капча для формы обратной связи
• Заказ товаров и услуг через форму обратной связи
• Форма обратной связи — отправка писем на разные адреса
• Проблемы с кодировкой в форме обратной связи
• Создание кнопок в форме обратной связи
• Календарь в форме обратной связи
• Оформление формы обратной связи
>> смотреть все статьи о создании формы обратной связи

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

В предыдущих статьях были рассмотрены различные варианты формы обратной связи и проверка её заполнения посетителем сайта. Довольно часто, кроме простого сообщения от посетителя сайта, требуется переслать автору фотографию, документ, резюме и т.п. Форма обратной связи позволяет легко реализовать отправку любого файла с компьютера пользователя на ваш e-mail. Иногда можно встретить формулировку "Отправка аттача с сайта" от англ. Attach (Прикреплять).

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

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

В любом случае, начинаем с добавления в созданную нами форму обратной связи (см. статью "Создание формы обратной связи на сайте") строчку кода , которая как раз и отвечает за формирование строчки с кнопкой Обзор. При нажатии на неё открывается стандартное окно Windows для выбора файла. Кроме того, обязательно надо добавить в начале формы атрибут enctype="multipart/form-data" тега

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

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

Оптимально, на мой взгляд, использовать готовый РНР-скрипт солидной фирмы, например, Worx International Inc. Одна из её разработок — популярный класс для работы с почтовым сервером class.phpmailer.php, который позволяет реализовать множество полезных функций, не занимаясь написанием собственных РНР-скриптов. Скачать эту прелесть можно бесплатно с сайта фирмы-разработчика. Так как сайт англоязычный и у некоторых читателей могут возникнуть трудности с загрузкой, я разместил его здесь. Скачиваете файл (размер 10 Кб), разархивируете и размещаете class.phpmailer.php на своем сайте в той же директории, где и страничка с формой обратной связи. Если вы хотите более подробно познакомиться с данной программой, рекомендую заглянуть на сайт www.php-mail.ru, особенно в гостевую книгу, а также на сайт От новичка до профессионала.

Теперь нам осталось только немного изменить РНР-страничку, отвечающую за отправку почты с вложенным файлом, добавив в неё class.phpmailer.php командой include "class.phpmailer.php"; и несколько строк для обработки пересылаемого файла.

Полный рабочий код страницы mail.php для отправки с сайта сообщений с прикрепленным файлом приведен ниже:

From = $_REQUEST[’email’];
$mail->FromName = $_REQUEST[‘name’];
$mail->AddAddress(‘ pupkin@rambler.ru ‘);
$mail->IsHTML(true);
$mail->Subject = $_POST[‘title’];

if(isset($_FILES[‘files’]))
<
if($_FILES[‘files’][‘error’] == 0)
<
$mail->AddAttachment($_FILES[‘files’][‘tmp_name’],$_FILES[‘files’][‘name’]);
>
>
$mail->Body = $message;
if (!$mail->Send()) die (‘Mailer Error: ‘.$mail->ErrorInfo);
<
echo ‘ Спасибо за отправку вашего сообщения
Нажмите, чтобы вернуться на главную страницу’;
>
if (!empty($_POST[‘submit’])) send_mail();
?>

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

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

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

Форма загрузки файла для сайта

Давайте начнем с того, что нужно сделать — это создать файл index.php, так как в противном случае наша форма не будет работать. Если у кого-то уже был создан index.htm — просто измените расширение. Ничего с вашим landing page не случится. Не паникуйте :). После этого, создадим самую обычную форму, с двумя полями.

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

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

Для того, чтобы задать приятный внешний вид полю с type=»file» — придется потанцевать с бубном. В сети существует много решений, но я выбрал с использованием javascript. Я нашел такой скрипт, который задает классы для текстового поля, кнопки «Выбрать» и общего контейнера для них.

Скачивайте исходник и найдете его в папке js. Не могу дать ссылку на исходник, так как нашел его на форуме. Он очень маленький — всего 3 кб в неоптимизированном виде. Давайте подключим его (Перед закрывающимся тегом ):

Для вызова плагина воспользуемся следующей конструкцией:

Его можно расположить сразу после подключения самого скрипта.

Давайте теперь разберем классы:

  • Для управления полем в котором будет выводится имя загруженного файла теперь будем пользоваться .fileName
  • Для управления кнопкой, при нажатии на которую открывается окно загрузки — .fileBtn
  • Для управления областью, в которой находятся предыдущие 2 элемента воспользуемся .fileUpload

Для управления текстом внутри кнопки нужно открыть скрипт и в 8 строке изменить мой текст на свой 🙂 Там есть комментарий, поэтому, кто не знаком с javascript — смело открывайте и редактируйте. Даю слово, — вы разберетесь.

Читайте также:  Кэш что это такое в андроиде

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

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

С отправкой файла на почту — не так все просто, как с данными, занесенными в поля формы. Для того, чтобы грамотно обработать файл воспользуемся дополнительным php скриптом. Его нужно скачать и положить рядом с формой. Можете даже не открывать 🙂

Называется он class.phpmailer.php. Готово. Теперь давайте разбираться дальше. Для того, чтобы данные отправлялись к нам на почту вставьте в файл с формой (куда-нибудь в футер) следующий код:

Думаю, основные моменты — понятны, так как она прокомментированы. Да, код не идеален. Можно дописать кучу проверок и т.п. Кто пожелает — милости прошу. Заодно, — поможете остальным.

Мне больше нравится front-end. поэтому я попробую разобраться и протестировать атрибут accept для поля input=»file». Он довольно интересен, и позволяет фильтровать файлы, которые можно загружать в форму, но к сожалению, работает не во всех браузерах. Так гласят форумы 🙂 Вот хочу протестировать самостоятельно и сделать свои выводы. Попробую на днях рассказать вам о своем эксперименте. А не сегодня — все. Надеюсь вам пригодится данная форма для отправки файлов. Пока!

Это результат объединения статей:

  • Форма обратной связи PHP
  • Прикрепить файл к письму PHP
  • Multiple files

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

Особенности:

  • Внешний вид:
  • форма по прежнему резиновая, но теперь наименования пунктов располагаются слева (см. свойство float),
  • при нажатии на label фокус получает соответствующий input,
  • при наведении курсора мышки на поле, его границы становятся голубыми, при фокусе — бледно-голубыми,
  • правильно заполненные поля будут темнеть.

Если нужен вид из предыдущей формы, то следует заменить содержимое тега style: .

  • Поддержка от IE10 включительно.
  • Проверка на правильность заполнения полей осуществляется не на стороне сервера.
  • Ниже представлены два варианта скрипта отправки данных с сайта на почту: с Javascript (Ajax) и без.

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

    1. PHP вынесен в отдельный файл
    2. при нажатии клавиши F5 форма не будет отправлена снова
    3. после отправки формы страница не будет перезагружена

    Файл contacts.html

    Файл contacts.php

    2. Форма связи в одном файле

    Рекомендации к скрипту отправки файлов на почту

    1. нужно заменить свой@yandex.ru
    2. нужно заменить contacts.php на полный адрес, например, http://сайт.ru/папка/папка/contacts.php
    3. серые заголовки лучше убрать. Они меняют адрес хостинга на тот, что посетитель указывает в форме. Но некоторые почтовые сервисы (например, Яндекс.Почта) при их наличии не присылают письма вовсе
    4. для того, чтобы добавить новое поле, нужно внести изменение в HTML и PHP код. Другими словами, добавить те же участки, что и для messageFF
    5. для того, чтобы настроить прикрепление только одного файла, следует убрать всё выделенное. По умолчанию прикреплять можно несколько файлов
    6. для того, чтобы можно было прикреплять только определённый тип файлов, в input прописывается атрибут accept. По умолчанию неважно что прикреплять: картинки, видео или документы

    Скорее всего письма будут падать в СПАМ папку, поэтому для них нужно создать правило. Скажем, так это делается в Яндекс.Почте:

    Если на хостингах выключена функция mail() (галка может именоваться "sendmail_from"), то скрпт работать не будет. Так как по факту email отправляется с электронного ящика хостинга.

    127 комментариев:

    Виталий Здравствуйте, подскажите пожалуйста как поставить эту форму на сайт (wordpress). Просто скопировать код и вставить на страницу? Форма отображается, но и первая часть кода, где нужно изменить емаил на свой тоже отображается. Или первую часть кода нужно разместить в файле на сервере? Виталий Положил первую часть кода в файл mail.php и поместил его в папку с темой шаблона, чтобы можно было редактировать из админки.. изменил емаил на свой, но сообщения не приходят. ( Виталий И еще бы хотелось чтобы после отправки сообщения внизу или где нибудь писалось"ваше сообщение отправлено. спасибо" чтобы человек был уверен в отправке..как такое реализовать? NMitra Здравствуйте, я далека от WP. Попробуйте посмотреть папку wp-content/themes/ваша_тема, а именно файл page.php. Сообщение есть и оно появляется, если верно код разместить. Вячеслав Спасибо! Хорошая форма. NMitra Рада слышать! Владимир Телевной Здравствуйте. Ваш сайт безусловно хорош. Форма данная тоже. Но только вот вопрос можно ли реализовать прикрепление нескольких файлов. И желательно чтоб это делалось путем перетаскивания файла на форму. Что то типа этого http://www.manhunter.ru/demo/upload.html (это демонстрация), источник http://www.manhunter.ru/webmaster/712_zagruzka_faylov_peretaskivaniem_v_okno_brauzera.html

    Спасибо заранее =) Владимир Телевной P.S.
    Желательно чтоб было реализовано все на столько же просто как данная форма. Т.к. я не просто ноль, а ноль с большим минусом. И мои знания ограничиваются копировал-вставил. NMitra Здравствуйте, я боялась этого вопроса )) Пока нет времени написать полноценное решение и толком разобраться. Нужно объединить:

    http://habrahabr.ru/post/120370/
    http://www.emanueleferonato.com/2008/07/22/sending-email-with-multiple-attachments-with-php/
    http://www.w3schools.com/html/html5_draganddrop.asp Владимир Телевной Будем ждать полноценного решения. Спасибо за ответ. Александр Как бы ещё его заставить вызываться в модальном окне? 🙂 NMitra Как содержимое любого модального окна можно сделать, например, этого http://shpargalkablog.ru/2011/02/modalnoe-okno-css.html Александр А как бы подправить форму, чтобы сообщение об успешной отправке было отдельно? дело в том, что при такой форме достаточно нажать F5 и письмо сваливается снова. Так можно и весь ящик замусорить. Ну или проверку какую-нибудь защитную добавить? NMitra Здесь http://shpargalkablog.ru/2014/01/feedback-form.html пример с XMLHttpRequest()
    Или посмотрите тут http://shpargalkablog.ru/2013/08/bell-site.html

    php практически везде одинаковый, работает благодаря функции mail Владимир Электрик как сделать чтобы отправлять сразу 6 файлов подряд
    . NMitra Владимир, помню, уже спрашивали, но никак не могу с собой бороться. Есть либо знания (ответ на комментарий на автомате, требует малое время), либо большой интерес к теме (пишется новая статья-ответ), либо финансовый стимул. Ссылки на материал по теме в комментарии 9. Sfera Не хватает обязательного поля Телефон Анонимный Подскажите, если отправляю письмо без прикрепленного файла выходит ошибка:
    "Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in.
    Warning: Cannot modify header information — headers already sent by (output started at. "
    Как разрешить отправлять без прикрепленного файла? NMitra Посмотрю на следующей недели. Анонимный NMitra, все еще актуально, Как разрешить отправлять без прикрепленного файла?
    Спасибо NMitra Хм, а у меня все отправляется. http://img.shpargalkablog.ru/1.html NMitra Поэтому подсказывайте, что выдает у вас, если сделать так:

    Анонимный Подскажите как сделать чтобы можно было прикрепить несколько файлов? Анонимный Подскажите как добавить защиту от спама? NMitra Фильтра по IP в большинстве случаев хватает. Чтобы его узнать, следует строку

    Читайте также:  Как убрать линию границы в word

    $message = "Имя: ".$_POST[‘nameFF’]."
    Email: ".$from."
    Сообщение: ".$_POST[‘messageFF’];

    $message = "Имя: ".$_POST[‘nameFF’]."
    Email: ".$from."
    Сообщение: ".$_POST[‘messageFF’]."
    IP: ".$_SERVER[‘REMOTE_ADDR’];

    Затем при обнаружении IP, рассылающего спам

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

    if($_SERVER["REMOTE_ADDR"] != 0.000.000.000) <
    mail($to, $subject, $message, $headers);
    > Анонимный Отличная, красивая форма, понятный код, очень помогло, спасибо! NMitra Благодарю за отзыв! Анонимный Как это работает? Куда все это вставлять? В примере с обычной обратной связью был отдельный файл contcts.php, а тут все вместе. Делают также с этим примером, но почему-то при отправке выдает ошибку Method Not Allowed
    The requested method POST is not allowed for the URL /demo/index.html Анонимный Вроде разобрался. Задал форме action, письма приходят. Но почему-то вместе диалоговго окна об ошибке или успехе переводит на пустую страницу. NMitra Будет время тоже переделаю на XMLHttpRequest
    Вам нужно создать страницу с расширением .php и весь код в неё добавить или подключить php на HTML страницах (служба поддержки хостера должна подсказать как, чаще добавляется строка в .htaccess) Анонимный Если приложить 2 файла общим весом менее 10 мб, то письмо не отправляется, типо, превышен лимит в 10 мб. NMitra Вместо

    if ($filesize Анонимный Спасибо. Только функцию по проверке веса все-таки тоже хотелось бы иметь. NMitra if ($filesize Анонимный Здравствуйте, письма приходят, но картинки не отображаются, вместо них набор букв-цифр NMitra Здравствуйте, попробуйте упрощённый вариант http://shpargalkablog.ru/2014/05/email-file-php.html Но скорее всего и он не будет работать: проблема или в хостере (именно с его ящика приходят письма), или в почтовом клиенте. У вас где находится почтовый ящик (программа/сервис)? Анонимный весьма полезный блог, спасибо за подробный разбор этой темы, форму с прикреплением файла именно с вашего блога использовала много раз. NMitra Спасибо за отклик! Анонимный Странно, но никто не нашел ошибку скрипта! NMitra Поделитесь, пожалуйста Анонимный Она уже была замечена. Но не донесена должным образом. К сути, если крепишь файл объемом до 1Мб и более 2-х тогда считается сумма файлов в байтах, т.е. она превысит 10000000 если закрепить их по 1-му килобайту. От 1Мб вроде норм. Как обойти этот недочет? Анонимный Так что вы скажите? Каков ваш будет положительный ответ? NMitra Плаваю я в этих байтах. Итак,

    килобайт (КБ) = 1024 байта
    мегабайт(МБ) = 1024 килобайта

    10 МБ = 10485760 байт (тут всё сравнительно верно)

    А дальше не поняла. Прикрепляются два файла по 1 МБ, в итоге сумма получается 2МБ. Но форма выдаёт ошибку, что превышен размер? Анонимный Хорошо, для пущей продуктивности беседы. Уже предметнее приложу скрин, вот значение http://s017.radikal.ru/i419/1505/57/bde886d658a0.jpg которые будет в результате прикрепления 2-ух файлов общим весом 176Кб Анонимный А это уже если файл весит 6Мб http://s013.radikal.ru/i323/1505/5e/43ee22f10e0d.jpg — теперь понимаете о чем я? Анонимный Ну и чтоб уж исчерпывающая инфо. — это результат 2-ух файлов более 1-го Мб в сумме 7Мб http://s019.radikal.ru/i619/1505/34/fa139891d090.jpg NMitra Поняла, $_FILES[‘fileFF’][‘size’] передаёт строку, а нужно число. NMitra Попробуйте, поправила Анонимный Можно вашу почту, аську или скайп? NMitra n.mitra@yandex.ru Анонимный Приходят знаки вопросов вместо имени. Где то надо указать кодировку? NMitra Попробуйте вместо

    $subject = "Заполнена контактная форма с ".$_SERVER[‘HTTP_REFERER’];

    $subject = ‘Заполнена контактная форма с ‘.$_SERVER[‘HTTP_REFERER’];
    $subject = "=?utf-8?b?". base64_encode($subject) ."?="; Анонимный Спасибо за код, очень полезен. но вот возникла загвоздка.

    Письма отправляются без проблем, но вложений нет, подскажите в чем загвоздка, или это проблема в хостинге и нужно настроить разрешение на запись? NMitra Извините, не назову причины NMitra Попробуйте потестировать более простые вариант
    1) http://shpargalkablog.ru/2015/02/multiple-files-php.html
    2) http://shpargalkablog.ru/2014/05/email-file-php.html Анонимный А не может быть проблемы в скрипте? Я взял его из темы об отправке письма без вложения, так как в этой статье скрипта по отправке нет после формы, не нужно ли что то в скрипт отправки что нибудь добавить из-заа добавления отправки файла? NMitra Угу, скрипт PHP разный, также в той форме я использовала XMLHttpRequest(), а в этой нет. Не стала разбираться как через XMLHttpRequest() передать данные о файле. Анонимный поработал на стороне хостинга, файлы стали оправляться, но они не читаемы, можете подсказать как это поправить? NMitra Честно говоря, не могу. Какой почтовый сервис? Попробуйте отправить на Яндекс.Почту. Анонимный Спасибо. В итоге проблема была в почте на хостинге, которая на основе нашего домена, на яндекс почте открылся файл без проблем, как и на туже почту но не в веб браузере а полученные через почтовую программу. Большое спасибо Вам за помощь и за скрипт. sergey как сделать только html код такой формы и добавить свой mail NMitra "как сделать только html код такой формы" — Уберите всё до

    email нужно добавлять в php Анонимный Как реализовать такую же форму, но с записью данных полей в файл doc(rtf) и отправкой этого файла на почту? NMitra Извините, не подскажу ответа — не было необходимости разбирать ваш вопрос ранее 🙁 Анонимный подскажите как добавить еще строки, телефон,
    адрес Анонимный Все работает, но почему-то вложение не приходит на мобильный телефон. В чем может быть проблема? NMitra Проблема может быть в почтовом клиенте. Для увеличения скорости работы он может отключить показ изображения. Если на компьютере показывается письмо полностью, а на мобильном в том же почтовом клиенте без изображения, то я бы написала письмо в службу поддержке почтового клиента. Анонимный Извините, если тема актуальна еще. Ставлю на joomla 2.5. Нажимаю отправить — открывается пустое окно ,а точнее выкидывает на страницу с названием файла php, куда скопировала код. При этом на почту приходит сообщение. NMitra Угу, POST выполняется. Данный пример предполагает, что php и html должны быть в одном файле. Иначе нужно делать через XMLHttpRequest() как тут http://shpargalkablog.ru/2014/01/feedback-form.html только с другой кодировкой Анонимный Спасибо! Попробую. А то очень хочется, чтобы заработало, хорошая и удобная форма. Анонимный К сожалению не получится, joomla режет код в редакторе, а как по файлам правильно разнести, я не поняла. Анонимный И вариант с другой формой не пройдет. Joomla режет любой код скрипта в редакторе. NMitra Тогда делайте редирект с php файла как тут http://shpargalkablog.ru/2013/08/bell-site.html NMitra Если делать без задержки, то посетитель лишь увидит что страница перезагрузилась Александр Стрельченко Доброй ночи!
    Подскажите, пожулайста, в какую сторону "копать" ?
    С PHP не имел дела ранее, но знания js помогли правильно разобраться во внедрении Вашего обработчика.
    В итоге письмо после submit пришло всего два раза (причем, на разные адреса по одному разу. менял, думал беда в почтовиках).
    Alert срабатывает каждый раз "успешно".
    Заранее благодарю за помощь! Возможно, исходник нужно прикрепить, чтобы Вы смогли понять.
    С уважением, Александр. NMitra Доброе утро!
    Попробуйте удалить заголовки:

    Читайте также:  К вечеру мы сделали большую половину работы

    $headers .= "From: " . $from . "
    ";
    $headers .= "Reply-To: " . $from . "
    ";

    У меня с ними тоже Яндекс режет письма. Александр Стрельченко Здравствуйте еще раз.
    Заголовки эти сразу удалил и не использовал.

    Оставил только эти два:

    $headers = "MIME-Version: 1.0
    ";
    $headers .= "Content-Type: multipart/mixed; boundary="$boundary"
    ";

    Возможно, еще в где-то проблема может быть? NMitra Это нужно.
    Попробуйте второй вариант, тоже самое, но почему-то лучше срабатывает.
    А форма без файлов нормально работает http://shpargalkablog.ru/2014/01/feedback-form.html ? Александр Стрельченко Второй вариант, это тот, в котором "Форма связи в одном файле"? Не пробовал его..
    Без файлов пробовал до этого, но не по вашему шаблону. Срабатывала каждый раз. Александр Стрельченко Кстати, код для "Формы связи в одном файле" сразу при загрузке странички выдает алерт "Размер файлов превышает 10мб". Скопировал Ваш код один в один и проверил) Александр Стрельченко Доброй ночи еще раз.
    Нашел логи с сервера и заметил ошибку наконец-то свою. Может кто-то когда-то столкнется с такой же ситуацией.
    Конкретные строчки из лога:

    PHP Warning: is_uploaded_file() expects parameter 1 to be string, array given in /путь/к/файлу/contacts.php on line 19, referer: http://ваш.сайт

    Я делал прикрепление одного файла, а в html мой инпут имел такой вид:

    Убрав скобки массива "[]" все заработало, при этом письма доходят моментально и с вложением.

    В Вашей статье все грамотно отмечено цветом, что обязательно удалить нужно их, но я зря поторопился)))
    Благодарю за Ваше решение!
    NMitra Доброго утра, Александр. Большое спасибо, что написали! А то я бы гадала что да как. Кирилл Спасибо огромное Вам за данную форму. Установил. Все работает.
    Но. Прошу помочь разобраться в одном недочете.
    Ввели все данные, нажали отправить, получаем сообщение:"размер файлов превышает 10 мб".
    В этой ситуации из поля "сообщение" пропадает ранее написанный текст. Это нехорошо. В остальных полях информация сохраняется.
    Можно с этим что-то сделать? Александр Стрельченко Кирилл, чтобы ранее написанный текст не пропадал, удали эти события:

    f.messageFF.removeAttribute(‘value’); // очистить поле сообщения
    f.messageFF.value=»; // очистить поле сообщения NMitra Добавила дополнительное условие, попробуйте, при возможности, отпишитесь о результатах, сама не успела потестировать.

    Александр, еще раз спасибо за активное участие! Кирилл Москвитин Спасибо.
    Но можно как-то сделать, чтобы успешной отправке сообщения текст пропадал, а при ошибке оставался?
    Сейчас остается и так, и так.
    В принципе я и так доволен))
    И еще вопрос..
    Для работы формы без ошибок пришлось удалить .htaccess
    А без него вроде как нельзя. Можете помочь? Кирилл А! И еще..)
    При вынесении скрипта в отдельный файл страница перезагружается и форма не работает.
    Это решаемо? NMitra Кирилл, я скрипт поправила (см. статью) при успешной отправке поле очистится, при ошибке — останется.

    .htaccess удалять не стоит. Смотрите какое именно правило не даёт работать форме. Его (правило) можно ограничить одной страницей, расширением файла и т.п.

    Вы имеете ввиду JS? NMitra "При вынесении скрипта в отдельный файл страница перезагружается и форма не работает." — проверила, у меня работает. Вы верно указываете путь к файлу contacts.php? Виктор Загоруйко Подскажите, как после отправки письма и выдачи сообщения что все нормально отправилось сделать переход на главную или другую страницу сайта? Что и где нужно прописать? Александр Стрельченко Виктор, попробуй добавить в конце этих строк "location.href = "URL"; (как пример):

    if (http.responseText.indexOf(f.nameFF.value) == 0) < // очистить поле сообщения, если в ответе первым словом будет имя отправителя
    f.messageFF.removeAttribute(‘value’);
    f.messageFF.value=»;
    location.href = "/articles/blog/"; // это как пример ссылки — можешь указать в любом виде (http://google.com) или любую другую
    >

    Не тестировал, поэкспериментируй.
    Возможно есть решения с помощью PHP, конечно. Кирилл Москвитин Спасибо огромное Вам за работу и поддержку!
    Работает! Однако, поля имя и e-mail все равно остаются при успешной отправке. Но я в восторге)))
    "При вынесении скрипта. " — сам файл .js забыл вынести на сервер)
    В .htaccess я вообще не буль-буль..( Буду пыхтеть..
    Виктор Загоруйко Александр, я уже перепробывал много вариантов, но почему то не получается. Как вы пишите — получается что выводит весь html код страницы))) в окне. Бился и по другим вариантам — никак не выходит. Кирилл В общем чего-то наделал с .htaccess и все заработало))) Надеюсь, надолго)
    Еще раз спасибо за помощь!) Виктор Загоруйко NMitra, спасибо! Но не помогло. Вот страница сайта http://modulpicture.com/index.php?route=nnews/article&ncat=59&nnews_id=34, форма во всплывающем окне при нажатии на красную кнопку внизу. Ничего не происходит после того что вы подсказали)))ю Сейчас буду курить вашу ссылку Виктор Загоруйко Проблема решилась! Всем спасибо.

    P.S. Может кому понадобится — location.href = "ваш-сайт"; надо вставлять не вместо if (http.responseText.indexOf(f.nameFF.value) == 0) < // очистить поле сообщения, если в ответе первым словом будет имя отправителя
    f.messageFF.removeAttribute(‘value’);
    f.messageFF.value=»; или за этими строчками, а вот так if (http.responseText.indexOf(f.nameFF.value) == 0) <
    f.messageFF.removeAttribute(‘value’);
    f.messageFF.value=»;
    >
    >
    >
    location.href = "http://ваш_сайт"; Дмитрий Все замечательно работает, но прикрепить можно только один файл. Хоть и написано, что по умолчанию прикреплять можно несколько файлов. Помогите, пжл, мне обязательно нужна возможность прикреплять несколько фото. NMitra Можно прикреплять несколько файлов:
    1) нажать кнопку
    2) нажать на файл
    3) нажать кнопку CTRL (или SHift, чтобы выделить идущие подряд файлы или нажатой правой кнопкой мышки выделить область из группы файлов)
    4) нажать на другой файл

    Это стандартная процедура. Можно как в Яндекс.Почте сделать, чтобы при добавлении файлов они суммировались, но это более трудоёмко и не всем может подходить. Дмитрий Спасибо за быстрый ответ, разобрался.
    Но появилась новая проблема: выходит сообщение "Извините, данные не были переданы" и все формы остаются заполненными , хотя на самом деле на почту все приходит моментально. Дмитрий Пока вопрос снимается. Не знаю причину сбоя. Заново отписал код, загрузил на сайт — вроде опять работает. Анонимный Господа, поставил форму по второму варианту. На самом сайте перед формой выходит alert("Ваше сообщение получено, спасибо!");’; > ?> . В чем дело? NMitra Ставьте по первому, у вас PHP не поддерживается на HTML страницах Unknown Когда сообщение отправлено или не отправлено. Вместо русских букв Появляются знаки вопроса. Как это можно исправить?
    Если вместо русс. букв написать англ — тогда выводит нормально англ. буквы. Анонимный Повторю вопрос:
    Когда сообщение отправлено или не отправлено. Вместо русских букв Появляются знаки вопроса. Как это можно исправить?
    Если вместо русс. букв написать англ — тогда выводит нормально англ. буквы. NMitra У вас кодировка utf-8?

    Ссылка на основную публикацию
    Усики для автомобильной антенны
    Убираясь в бардачке я наткнулся на ремкомплект антенных усиков — лежит наверно уже полгода, всё наклеить не могу, то забываю,...
    Телефонный шлюз что это
    VoIP-шлюз — это межсетевой шлюз, предназначенный для перевода трафика между сетями различных типов. VoIP-шлюзы можно разделить на многоканальные и одноканальные:...
    Телефонная клавиатура на компьютере
    Виртуальная клавиатура выручит Вас, когда выйдет из строя основное физическое устройство ввода, полностью или частично ( поломается несколько клавиш )....
    Усиление сигнала интернета на даче своими руками
    С наступление дачного сезона, я озадачился установкой хорошего скоростного интернет на даче, у нас голосовая связь работает без проблем, а...
    Adblock detector