Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2013, 22:34   #1
Jereme
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 51
По умолчанию Прикрепление несколько файлов в обратной связи

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

Код HTML:
<input type="file" name="mail_file" size="30"><br>
PHP код:
 /**/// Если поле выбора вложения не пустое - закачиваем его на сервер
       
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))
       {
       
       
             
$headers .= "Content-Type: ".$content." charset=".$charset."\r\n";
          if (
mail($mailto,$subject,$sendmessage,$headers))
          {
             
$status "Ваше сообщение отправлено!";
          }
          else
          {
             
$status "По техническим причинам сообщение не было отправлено. Попробуйте снова, а если не получится, обратитесь к разработчикам";
          }
       }
       
//отправка сообщения с вложением
       
else 
       {
          
$fp fopen($path,"r");
          if (!
$fp)
          {
              print 
"Файл ".$path." не может быть прочитан";
              exit();
          }
          
$file fread($fpfilesize($path));
          
fclose($fp);
            
          
$boundary "--".md5(uniqid(time())); // генерируем разделитель
    
          
$headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
          
$multipart .= "--".$boundary."\n";
            
          
$multipart .= "Content-Type: text/html; charset=$charset\n";
          
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
          
$multipart .= "$sendmessage\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 = \"".$picture."\"\n\n";
          
$message_part .= chunk_split(base64_encode($file))."\n";
          
$multipart .= $message_part."--".$boundary."--\n";
            
          if(!
mail($mailto$subject$multipart$headers)) $status "По техническим причинам сообщение не было отправлено. Попробуйте снова, а если не получится, обратитесь к разработчикам";
          else 
$status "Ваше сообщение отправлено!";
       }
   }
}
?> 
Mega HiP-Hop--- http://muzxclusive.com/
Jereme вне форума Ответить с цитированием
Старый 21.06.2013, 10:45   #2
Minus_yu
Чатланин!
Форумчанин
 
Аватар для Minus_yu
 
Регистрация: 20.11.2010
Сообщений: 140
Сообщение

Код HTML:
<input type="file" name="mail_file" size="30"><br>
<input type="file" name="mail_file1" size="30"><br>
<input type="file" name="mail_file2" size="30">

PHP код:
$them 'Тема письма';
$to "mail@sitename.ru";
$un        strtoupper(uniqid(time()));
$head   "From: ".$post['email']." \n";
$head  .= "Mime-Version: 1.0\n";
$head  .= "Content-Type:multipart/mixed;";
$head  .= "boundary=\"----------".$un."\"\n\n";
$body   "------------".$un."\nContent-Type:text/html;\n";
$body   .= "Content-Transfer-Encoding: 8bit\n\n".$message."\n\n";
foreach(
$_FILES as $value) {
/*здесь можно еще проверить а был ли мальчик if ($value['error']==0) */
$body   .= "------------".$un."\n";
$body   .= "Content-Type: ".$value['type'].";";
$body   .= "name=\"".basename($value['name'])."\"\n";
$body   .= "Content-Transfer-Encoding:base64\n";
$body   .= "Content-Disposition:attachment;";
$body   .= "filename=\"".basename($value['name'])."\"\n\n";
$body   .= chunk_split(base64_encode(file_get_contents($value['tmp_name'])))."\n";
}
mail$to$them$body$head ); 
код не проверял, но как-то так...

Последний раз редактировалось Minus_yu; 21.06.2013 в 10:47.
Minus_yu вне форума Ответить с цитированием
Старый 21.06.2013, 11:24   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

Как вариант использовать массив
Код:
<input type="file" name="mail_file[]" size="30"><br/>
<input type="file" name="mail_file[]" size="30"><br/>
обрабатывать в цикле
Код:
foreach ($f as $_FILES['mail_file'])
из + - можно хоть 3, хоть 10 полей для фотографий, или даже динамически их добавлять - код обработки всегда останется одинаковым
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
форма обратной связи Ol'ga PHP 3 01.03.2013 12:40
Форма обратной связи Cone PHP 9 07.12.2011 07:47
кодировка обратной связи RAVAL(c) PHP 3 13.02.2011 20:11
Скрипт обратной связи Helen888 Фриланс 6 02.05.2010 11:11
Форма обратной связи belvision PHP 5 10.11.2008 16:57