Полюбите код! И он полюбит Вас!

Последние комментарии:

Марат : Для этого и делали! Рад, что помог! Приходите ещё! далее

2018-02-16 20:31:51



Виктор : Спасибо! Очень полезная статья. Нужно было очистить всю базу данных, далее

2018-02-16 20:30:13



Евгений : Спасибо за перевод sublime!!!! далее

2018-02-15 16:42:05



Марат : Вообще, после написания статьи - у них вышло обновление, может далее

2018-02-13 19:19:01



Сергей : Доброе время суток!После правки кода, капчи вообще нет! Ни старой, далее

2018-02-13 19:10:15



Это интересно:

Рейтинги страниц.

Вы здесь - Главная - PHP - POST

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

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

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

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

И мы разберем два варианта:

1.

Первый вариант самый простой, какой можно придумать! Открываем поисковик и забиваем наш поисковый запрос:

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

Можно, конечно, и самому написать, но, как известно …лень мать прогресса! И в действительности я не буду вам расписывать все значения и смысл кода в обработчике, единственное скажу, что для работы данного скрипта требуется включенная функция  file_uploads, можно поподробнее почитать здесь.

И собственно готовая первая форма отправки сообщения:

Отправка сообщения с вложением

Внимание!

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

После отправки сообщения будет выдавать ошибку…

В поле 'To:' введите свой емайл и ваше сообщение с вложением придёт к вам!

Естественно, что никакого внимания не стоит обращать на вид, потому, что  декорировать всегда можно, а вот найти работоспособный скрипт, довольно не просто!

To:
Subject:
Сообщение:
Photo:

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

Скачать архив с исходниками. После того, как скачали архив, разархивируйте в нужную папку и можно  тестировать!

2

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

Грубо говоря возьмем два скрипта и поженим их, удалив все ненужное!

Начнем с формы...

Наша форма:

<form method="post" action="обработчик.php" >

<p>Ваше имя:</p>

       <input type="text" name="name" title="Введите ваше имя" required/>

 <p>Ваш e-mail:</p>

        <input type="text" name="email" required/>

<p>Ваше сообщение:</p>

        <textarea name="mess" cols="70" rows="7" required></textarea>

<p>Введите  два не нулевых числа и их сумму</p>

         <input type="text" size="4" name="a" required/>

плюс

          <input type="text" size="4" name="b" required/>

равно

         <input type="text" size="4" name="summa" required/><br>

          <input type="submit" value="Отправить" />

</form>

И добавим в нашу форму ту часть, которая отвечает за прикрепление файла из первого пункта, в архиве файл index.php 27 строчка:

<tr><td width=50%>Photo:</td><td align=right><input type=file name=mail_file maxlength=64></td></tr>

Почистим, удалим все ненужное:

<input type=file name=mail_file maxlength=64>

Кавычки можно ставить, можно и не ставить, и так и так будет работать!

<input type="file" name="mail_file" maxlength="64">

Добавим :

<p>Прикрепите файл</p>

И… данную строчку разместим после поля с текстом, наша форма в окончательном виде:

<form method="post" action="обработчик.php" >

<p>Ваше имя:</p>

<input type="text" name="name" title="Введите ваше имя" required/>

<p>Ваш e-mail:</p>

<input type="text" name="email" required/>

<p>Ваше сообщение:</p>

<textarea name="mess" cols="70" rows="7" required></textarea>

<p>Прикрепите файл</p>

<input type="file" name="mail_file" maxlength="64">

<p>Введите  два не нулевых числа и их сумму</p>

<input type="text" size="4" name="a" required/>

плюс

<input type="text" size="4" name="b" required/>

равно

<input type="text" size="4" name="summa" required/><br>

<input type="submit" value="Отправить" />

</form>

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

Наш обработчик:

<?php

if (isset($_POST['name'])) {$name = $_POST['name'];}

if (isset($_POST['email'])) {$email = $_POST['email'];}

if (isset($_POST['mess'])) {$mess = $_POST['mess'];}

if (isset($_POST['a'])) {$a = $_POST['a'];}

if (isset($_POST['b'])) {$b = $_POST['b'];}

if (isset($_POST['summa'])) {$summa = $_POST['summa'];}

function clear_data($vvod)

{

return trim(strip_tags($vvod));   

}

$name =  clear_data($_POST['name']);

$email = clear_data($_POST['email']);

$mess =  clear_data($_POST['mess']);

$to = "$email "; //Переменная кому - "to" равна переменной "email", которая заполняется в форме "Ваш e-mail:"

$headers = "Content-type: text/plain; charset = utf-8";

$subject = "Это тестовое сообщение с сайта DwWEB.RU, для проверки работы формы!!!";

$message = "Имя пославшего: $name \nЭлектронный адрес: $email \nСообщение: $mess";

$sum = $a $b;

if($a == $b && $a == 0){

echo "Вам же написали! Два не нулевых числа!";

echo "<a href=5-kapcha-dlia-formi.html>Вернуться к заполнению формы</a>";

}

else

{

if( $summa != $sum)

{

echo "Вам нужно в первый класс!!";

echo "<a href=5-kapcha-dlia-formi.html>Вернуться к заполнению формы</a>";

}

else

{

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

if ($send == "true")

{

echo "Спасибо за отправку Вашего сообщения.<br>\n";

echo "<a href=5-kapcha-dlia-formi.html>Вернуться на страницу с описанием</a><br>\n";

echo "<html><head><meta http-equiv='Refresh' content='3; URL=6-Pereadresatsia-posle-opravki.html'></head><body><center><b></body></html>";

}

else

{

echo "Сообщение не отправлено. Приносим свои извинения. Видимо сервер не может обработать ваше сообщение, скопируйте этот email Vasia@mail.ru и отправьте из своей почты. ";

}

}

}

?>

И будем брать все нам нужное из данного обработчика и вставлять в наш обработчик.

Здесь код в качестве иллюстрации, но и его можно посмотреть здесь, и мы периодически будем обращаться к нему, и если  мы будем писать о нумерации строк, то можно открыть данную страницу в  браузере и посмотреть код ctrl U – там будет нумерация слева…

Либо код ниже, обработчик из архива, возьмем его полностью :

<?php

  if(empty($_POST['mail_to'])) exit("Введите адрес получателя");

  // проверяем правильности заполнения с помощью регулярного выражения

  if (!preg_match("/^[0-9a-z_]@[0-9a-z_^\.]\.[a-z]{2,3}$/i", $_POST['mail_to']))

exit("Введите адрес в виде somebody@server.com");

  $_POST['mail_to'] = htmlspecialchars(stripslashes($_POST['mail_to']));

  $_POST['mail_subject'] = htmlspecialchars(stripslashes($_POST['mail_subject']));

  $_POST['mail_msg'] = htmlspecialchars(stripslashes($_POST['mail_msg']));

  $picture = "";

  // Если поле выбора вложения не пустое - закачиваем его на сервер

  if (!empty($_FILES['mail_file']['tmp_name']))

  {

    // Закачиваем файл

    $path = $_FILES['mail_file']['name'];

    if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;

  }

  $thm = $_POST['mail_subject'];

  $msg = $_POST['mail_msg'];

  $mail_to = $_POST['mail_to'];

  // Отправляем почтовое сообщение

  if(empty($picture)) mail($mail_to, $thm, $msg);

  else send_mail($mail_to, $thm, $msg, $picture);

  // Вспомогательная функция для отправки почтового сообщения с вложением

  function send_mail($to, $thm, $html, $path)

  {

    $fp = fopen($path,"r");

    if (!$fp)

    {

      print "Файл $path не может быть прочитан";

      exit();

    }

    $file = fread($fp, filesize($path));

    fclose($fp);

   

    $boundary = "--".md5(uniqid(time())); // генерируем разделитель

    $headers .= "MIME-Version: 1.0\n";

    $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";

    $multipart .= "--$boundary\n";

    $kod = 'utf-8'; // или $kod = 'windows-1251';

    $multipart .= "Content-Type: text/html; charset=$kod\n";

    $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";

    $multipart .= "$html\n\n";

    $message_part = "--$boundary\n";

    $message_part .= "Content-Type: application/octet-stream\n";

    $message_part .= "Content-Transfer-Encoding: base64\n";

    $message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";

    $message_part .= chunk_split(base64_encode($file))."\n";

    $multipart .= $message_part."--$boundary--\n";

    if(!mail($to, $thm, $multipart, $headers))

    {

      echo "К сожалению, письмо не отправлено";

      exit();

    }

  }

?>

Всё, что идет до переменной $picture = "";  нам не нужно! Потому, что это всё у нас уже есть.

Далее нам нужно разобраться с  логикой, т.е. что за чем должно идти…

Первое условие, это наличие, либо отсутствие загруженного файла.

Если загруженный файл отсутствует, то выполняем все операции проверки и отправки сообщения, как в нашем обработчике, начиная со строки 43 - if($a == $b && $a == 0)  и до конца…

Если файл существует, то идем по пути отправки сообщения из второго обработчика с элементами проверки на сумму м на нули…

Всё предельно просто!

Помним, что в двух обработчиках разные переменные и этот конфликт также нужно решить!

И давайте это сейчас прямо решим! Чтобы дальше у нас не возникало проблем!

Возьмем основные переменные из стороннего обработчика, строки с 32 по 36, после замены эти строки нам не нужны...:

$thm = $_POST['mail_subject'];

$msg = $_POST['mail_msg'];

$mail_to = $_POST['mail_to'];

$thm заменим везде на $subject

$msg  на $mess

$mail_to на $to

Далее нам нужно взять переменную $picture = "";  и  вспомогательную функцию и поднять в нашем обработчике почти до самого верха:

<?php

if (isset($_POST['name'])) {$name = $_POST['name'];}

if (isset($_POST['email'])) {$email = $_POST['email'];}

if (isset($_POST['mess'])) {$mess = $_POST['mess'];}

if (isset($_POST['a'])) {$a = $_POST['a'];}

if (isset($_POST['b'])) {$b = $_POST['b'];}

if (isset($_POST['summa'])) {$summa = $_POST['summa'];}

$picture = "";

function send_mail($to, $subject, $html, $path)

  {

    $fp = fopen($path,"r");

    if (!$fp)

    {

      print "Файл $path не может быть прочитан";

      exit();

    }

    $file = fread($fp, filesize($path));

    fclose($fp);

   

    $boundary = "--".md5(uniqid(time())); // генерируем разделитель

    $headers .= "MIME-Version: 1.0\n";

    $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";

    $multipart .= "--$boundary\n";

    $kod = 'utf-8'; // или $kod = 'windows-1251';

    $multipart .= "Content-Type: text/html; charset=$kod\n";

    $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";

    $multipart .= "$html\n\n";

 

    $message_part = "--$boundary\n";

    $message_part .= "Content-Type: application/octet-stream\n";

    $message_part .= "Content-Transfer-Encoding: base64\n";

    $message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";

    $message_part .= chunk_split(base64_encode($file))."\n";

    $multipart .= $message_part."--$boundary--\n";

 

    if(!mail($to, $subject, $multipart, $headers))

    {

      echo "К сожалению, письмо не отправлено";

      exit();

    }

  }

Дальше у нас будет наш код обработчика:

function clear_data($vvod)

{

return trim(strip_tags($vvod));   

}

$name =  clear_data($_POST['name']);

$email = clear_data($_POST['email']);

$mess =  clear_data($_POST['mess']);

$to = "$email";

$headers = "Content-type: text/plain; charset = utf-8";

$subject = "Это тестовое сообщение с сайта DwWEB.RU, для проверки работы формы!!!";

$message = "Имя пославшего: $name \nЭлектронный адрес: $email \nСообщение: $mess";

$sum = $a $b;

Дальше вставляем функцию загрузки файла :

  if (!empty($_FILES['mail_file']['tmp_name']))

{

    // Закачиваем файл

   $path = $_FILES['mail_file']['name'];

    if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;

  }

И дальше будет самое интересное:

Первое условие если   файла нет, то выполняем стандартную проверку капчи, если все нормально то сообщение будет оправлено:

if(empty($picture))

{

if($a == $b && $a == 0){

echo "Вам же написали! Два не нулевых числа!";

echo "<a href=101.html>Вернуться к заполнению формы</a>";

}

else

{

if( $summa != $sum)

{

echo "Вам нужно в первый класс!!";

echo "<a href=101.html>Вернуться к заполнению формы</a>";

}

else

{

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

if ($send == "true")

{

echo "Спасибо за отправку Вашего сообщения.<br>\n";

echo "<a href=101.html>Вернуться на страницу с описанием</a><br>\n";

}

else

{

echo "Сообщение не отправлено. Приносим свои извинения. Видимо сервер не может обработать ваше сообщение, скопируйте этот email Vasia@mail.ru и отправьте из своей почты. ";

}

}

}

}

И дальше нам нужно условиме иначе, т.е. если файл отсутствует… :

else

{

if($a == $b && $a == 0){

echo "Вам же написали! Два не нулевых числа!";

echo "<a href=101.html>Вернуться к заполнению формы</a>";

}

else

{

if( $summa != $sum)

{

echo "Вам нужно в первый класс!!";

echo "<a href=101.html>Вернуться к заполнению формы</a>";

}

else

{

send_mail($to, $subject, $mess, $picture);

echo "Письмо отправлено!";

}

}

}

Соединяем все вместе:

<?php

if (isset($_POST['name'])) {$name = $_POST['name'];}

if (isset($_POST['email'])) {$email = $_POST['email'];}

if (isset($_POST['mess'])) {$mess = $_POST['mess'];}

if (isset($_POST['a'])) {$a = $_POST['a'];}

if (isset($_POST['b'])) {$b = $_POST['b'];}

if (isset($_POST['summa'])) {$summa = $_POST['summa'];}

$picture = "";

function send_mail($to, $subject, $html, $path)

  {

    $fp = fopen($path,"r");

    if (!$fp)

    {

      print "Файл $path не может быть прочитан";

      exit();

    }

    $file = fread($fp, filesize($path));

    fclose($fp);

   

    $boundary = "--".md5(uniqid(time())); // генерируем разделитель

    $headers .= "MIME-Version: 1.0\n";

    $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";

    $multipart .= "--$boundary\n";

    $kod = 'utf-8'; // или $kod = 'windows-1251';

    $multipart .= "Content-Type: text/html; charset=$kod\n";

    $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";

    $multipart .= "$html\n\n";

 

    $message_part = "--$boundary\n";

    $message_part .= "Content-Type: application/octet-stream\n";

    $message_part .= "Content-Transfer-Encoding: base64\n";

    $message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";

    $message_part .= chunk_split(base64_encode($file))."\n";

    $multipart .= $message_part."--$boundary--\n";

 

    if(!mail($to, $subject, $multipart, $headers))

    {

      echo "К сожалению, письмо не отправлено";

      exit();

    }

  }

function clear_data($vvod)

{

return trim(strip_tags($vvod));   

}

$name =  clear_data($_POST['name']);

$email = clear_data($_POST['email']);

$mess =  clear_data($_POST['mess']);

$to = "$email";

$headers = "Content-type: text/plain; charset = utf-8";

$subject = "Это тестовое сообщение с сайта DwWEB.RU, для проверки работы формы!!!";

$message = "Имя пославшего: $name \nЭлектронный адрес: $email \nСообщение: $mess";

$sum = $a $b;

  if (!empty($_FILES['mail_file']['tmp_name']))

  {

    // Закачиваем файл

    $path = $_FILES['mail_file']['name'];

    if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;

  }

if(empty($picture))

{

if($a == $b && $a == 0){

echo "Вам же написали! Два не нулевых числа!";

echo "<a href=101.html>Вернуться к заполнению формы</a>";

}

else

{

if( $summa != $sum)

{

echo "Вам нужно в первый класс!!";

echo "<a href=101.html>Вернуться к заполнению формы</a>";

}

else

{

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

if ($send == "true")

{

echo "Спасибо за отправку Вашего сообщения.<br>\n";

echo "<a href=101.html>Вернуться на страницу с описанием</a><br>\n";

}

else

{

echo "Сообщение не отправлено. Приносим свои извинения. Видимо сервер не может обработать ваше сообщение, скопируйте этот email Vasia@mail.ru и отправьте из своей почты. ";

}

}

}

}

else

{

if($a == $b && $a == 0){

echo "Вам же написали! Два не нулевых числа!";

echo "<a href=101.html>Вернуться к заполнению формы</a>";

}

else

{

if( $summa != $sum)

{

echo "Вам нужно в первый класс!!";

echo "<a href=101.html>Вернуться к заполнению формы</a>";

}

else

{

send_mail($to, $subject, $mess, $picture);

echo "Письмо отправлено!";

}

}

}

?>

И вот наша форма с прикрепленным файлом, вы можете протестировать данную форму, она оправит сообщение на тот емайл, который вы введете в форме!

Особо не обращайте внимания на декорирование! Это как с ремонтом! Когда есть стены, поменять обои не проблема!

Внимание!

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

После отправки сообщения будет выдавать ошибку…

 ...

Ваше имя:

Ваш e-mail:

Введите два не нулевых числа и их сумму

плюс равно

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

Скопировать коды.

Понравилась статья!? Не стесняйся – поделись ссылкой!

И!

Пожалуйста! Если вам не трудно - прокомментируйте то, что вы прочитали! Вам понравилось, или не понравилось! Напишите, какие мысли возникли у вас, и это бесплатно для вас, но очень ценно для нас!!! Всё, что вы здесь видите - это написано для вас! Никаким другим образом мы не можем понять вашу реакцию. Может, что-то стоит добавить или наоборот убрать. Либо, что-то стоило изменить...

P.S.

25 октября 2017

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

Почему стоит подписаться на наши новости!?

Расскажу историю, вчера искал ответ на один из вопросов (конечно, я могу и сам написать, но чаще всего, вначале, ищу в интернете, может есть готовое решение…) и было множество вариантов, которые были описаны, но ни одного, с примерами! И мало того, что они предлагают решения, которые непонятно как реализовывать, особенно новичкам, у которых больше вопросов, чем ответов. Так они еще и не работают!

У нас же, на сайте – только рабочие проверенные скрипты! Полностью с описанием и с примерами! И реализовать может человек с нулевыми знаниями!

Мы есть здесь:

Проголосовать за статью!
  С 24 сентября мы запускаем новый скрипт в тестовом режиме (только свои скрипты)
  Вы можете проголосовать за понравившуюся статью.

  Еще никто не проголосовал
    


Просмотров 3310

Друзья!

Для того, чтобы вы получили бесплатную информацию, мы потратили и время и деньги!

Мы существуем от кликов по рекламе!

Если вы не нашли подходящего блока объявлений, то вы еще можете помочь проекту!

Не стесняйтесь!

Даже самая маленькая сумма будет употреблена на продвижение и улучшение проекта!

Заранее благодарим Вас!

Оставить комментарий:

Для отображения аватара после отправки сообщения, необходимо быть зарегистрированным в Граватаре.



Комментарии

Комментариев пока нет.

* Обязательные поля
(Не публикуется)
 
Жирный Курсив Подчеркнутый Перечеркнутый Степень Индекс Код PHP Код Кавычки Вставить линию Вставить маркированный список Вставить нумерованный список Вставить ссылку Вставить e-mail Вставить изображение Вставить видео
 
Улыбка Печаль Удивление Смех Злость Язык Возмущение Ухмылка Подмигнуть Испуг Круто Скука Смущение Несерьёзно Шокирован
 
5000
Сколько будет 1 + 2 + 3?
 
(введите ответ)
 
Уведомлять о новых коментариях по почте.
 

Оставить комментарии через вконтакте

Все дела сделаны!

Теперь можно и поиграть!

Понравилась игра!? Растфнуть на весь экран

Улучши поведенческий фактор на своём сайте.

Забери код здесь

Пишем полную инструкцию о пользовании ruweb.net + DirectAdmin

RuWeb.net - гибкий хостинг
Индекс цитирования