Форма отправки с вложением

Форма отправки с вложением

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

  • Форма обратной связи 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 в большинстве случаев хватает. Чтобы его узнать, следует строку

    $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 Доброе утро!
    Попробуйте удалить заголовки:

    Читайте также:  Фотоаппарат sony super steadyshot

    $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?

    Читайте также:  Как узнать трафик интернета на мтс смарт

    Здравствуйте! Помогите пожалуйста, кому не сложно.
    Есть форма:

    К ней подключен скрипт, который собирает данные из формы и отправляет на сервер (насколько я понимаю):

    И все это дело отправляет на почту такая конструкция на PHP:

    Нужно прикрутить возможность отправки файлов (из третьего поля формы) на e-mail. В программировании можно сказать я полный ноль. Нашла в гугле только то, что метод serialize для этого не подходит, нужно делать через FormData. Буду очень вам благодарна за помощь!

    • Вопрос задан более трёх лет назад
    • 6118 просмотров

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

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

    Проще использовать библиотеки типа PHPMailer, PEAR/Mail2 и т.п.

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

    Html формы с полем отправки файла

    Html формы с полем отправки файла представлен ниже. При клике по кнопке " browse " пользователь получает возможность выбрать файл на своей локальной машине.

    Форма будет выглядеть следующим образом:

    Обратите внимание, что в атрибутах формы мы указали enctype="multipart/form-data" . Это скажет браузеру, что форма может быть использована для отправки файлов. Также мы добавили поля " name " и " email " с целью собрать как можно больше информации о пользователе. Затем идет поле отправки файла.

    При клике по кнопке submit , данные, включая данные о посылаемом файле, отправятся в файл-обработчик, путь к которому мы указали в атрибуте формы action .

    Получаем информацию о загруженном файле

    Сперва мы проверим полученные данные, затем, в случае успешной проверки, отправим данные на электронную почту.

    Всю информацию о загруженных файлах можно получить при помощи массива $_FILES .

    Содержимое массива $_FILES для нашего примера приведено ниже. Обратите внимание, что значение атрибута name (у нас оно равно uploaded_file ) в поле выбора файла может быть любым.

    • $_FILES[‘uploaded_file’][‘name’]
      Оригинальное имя файла на компьютере пользователя.
    • $_FILES[‘uploaded_file’][‘type’]
      Mime-тип файла, в случае, если браузер предоставил такую информацию. Пример: "image/gif". Этот mime-тип не проверяется в PHP, так что не полагайтесь на его значение без проверки.
    • $_FILES[‘uploaded_file’][‘size’]
      Размер в байтах принятого файла.
    • $_FILES[‘uploaded_file’][‘tmp_name’]
      Временное имя, с которым принятый файл был сохранен на сервере.
    • $_FILES[‘uploaded_file’][‘error’]
      Код ошибки, которая может возникнуть при загрузке файла. Этот элемент был добавлен в PHP 4.2.0

    Получаем имя, тип и размер загруженного файла:

    Как видите, информация о загруженном файле доступна через массив $_FILES .

    Проверяем размер и тип расширения загруженного файла

    Предположим, что получаемый файл должен быть изображением (" jpg ", " jpeg ", " gif ", " bmp ") и не должен превышать 100 Kb. Тогда наш код будет выглядеть так:

    В вышеприведенном коде мы проверяем размер и тип файла. Максимально допустимый размер файла равен 100 KB ( $max_allowed_file_size ). Массив $allowed_extensions содержит названия всех допустимых расширений файла. Таким образом, расширение файла проходит проверку на соответствие значениям массива $allowed_extensions . При обнаружении ошибок переменной $error присваивается соответствующая запись.

    Копируем загруженный файл

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

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

    Копируем загруженный файл в папку ‘ uploads ‘. Если вы хотите переименовать папку ( uploads ), обновите переменную $upload_folder .

    Убедитесь, что папка ‘ uploads ‘ имеет права доступа 777. Файл сохранен на вашем сервере, и вы можете обратиться к нему в любой момент.

    Отправляем письмо

    Составим и отправим письмо на электронную почту администратора сайта (или кому хотите). Для отправки и компоновки письма будем использовать pear library (инструкцию по установке смотрите ниже). Pear классы PEAR::Mail и PEAR::Mail_Mime используются для отправки электронной почты с прикрепленными файлами.

    Для начала мы должны подключить файлы pear library для этих классов:

    Ниже приведен код компоновки и отправки письма:

    Класс Mail_mime() поможет в создании MIME послания. В приведенном выше коде мы создали объект Mail_mime , обновили тело письма ( $message->setTXTBody($text); ) и добавили прикрепленный файл ( $message->addAttachment(file) ).

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

    Сохраните файл как " pear-installer.php ". Загрузите этот файл на ваш сервер в любой каталог. Затем пропишите путь к файлу в вашем браузере:
    http://www.yourdomain.com/pear-installer.php
    Появится веб-интерфейс для установки PEAR на вашем сайте. Следуйте инструкции по установке. После установки Pear, найдите и установите пакеты " mail " и " mail_mime ".

    Простая форма с загрузкой, скачать

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

    Ссылка на основную публикацию
    Файл с расширением dav чем открыть
    Файл формата DAV открывается специальными программами. Чтобы открыть данный формат, скачайте одну из предложенных программ. Чем открыть файл в формате...
    У вас сломался холодильник
    Поломка холодильника всегда застает в врасплох. И определить причину моментально практически невозможно. Нужно как можно быстрее «спасти» продукты. Обычно надолго...
    У каких марок телефонов хорошая камера
    Производители будто бы соревнуются - кто сколько датчиков встроит в девайс. Есть уже с четырьмя и даже пятью камерами! Как...
    Файл подкачки windows 7 на флешку
    В прошлой статье рассказано, как определиться с оптимальным размером файла подкачки, что делать с SSD-дисками и как установить размер файла...
    Adblock detector