Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 3

PHP форма обратной связи с вложением - вместо вложения кодировка

25.07.2016, 15:47. Показов 3312. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите, пожалуйста, решить вопрос. В PHP не сильна. Есть форма обратной связи с вложением, все бы ничего, но вместо вложения в письме код:

Вот кусок из письма:
Сообщение: Заполните необходимые поля и прикрепите макет
дизайна Вашего сайта в PSD формате (не более 10МБ)

--8d3f12eab561819099499a745821c9d2
Content-Type: "application/vnd.oasis.opendocument.text"; name="40 полезных выражений_English.odt"
Content-Transfer-Encoding: base64
Content-Type: text/html; charset="utf-8"
Content-Disposition: attachment; filename="40 полезных выражений_English.odt"

UEsDBBQAAAgAAOqlVUdexjIMJwAAACcAAAAIAAAA bWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2Fz
aXMub3BlbmRvY3VtZW50LnRleHRQSwMEFAAACAAA 6qVVR4lfaDWTHQAAkx0AABgAAABUaHVtYm5h
aWxzL3RodW1ibmFpbC5wbmeJUE5HDQoaCgAAAA1J SERSAAAAtQAAAQAIAwAAAML9x+kAAAMAUExU
RTo4OTM4QT1DST5QX0Q7Ok1LP1BJPmFYPUdGSUdM U01QTERRWk1RUk1UXVVMSVdNUFlSTFdXWE1X
Y1RZY1Ved15jX1lialxoeWZNR2ZOWWRVTGRaVXJc WmhcZXFYYmliWXlnXWNlY2NlbGZpZWNpbGtl
YmllbGxpZGtta2ZrcW1ybGt0eHVqZntrc3lyaHJy dHJ1enV4dXR5e3x1cnp1eXx6dXp7e1VogFht
gl1viWVvg2l4h2t+l3Z6g32AfW2Ck3eAgHaEjHyB hXyEin+IjnmHl3yQnHWMon6XqYNvXoBuZod2
Z4F0dIN8dIN8eYp9cop+epB+ZpV/aJN9coB8hoiCboaBc4SCe4uBdomDfIyJe5GGbJmE bJeHdpuS

ну и так далее...

Вот сама форма:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<fieldset>
<form action="#" enctype="multipart/form-data" method="POST" id="feedback-form">
<input type="text" name="nameFFF" id="nameFFF" required placeholder="Ваше имя/название компании:" x-autocompletetype="name">
<input name="telFFF" id="telFFF" required placeholder="Контактный номер" class="required" type="tel" x-autocompletetype="tel" />
<input type="email" name="contactFFF" id="contactFFF" required placeholder="E-mail для связи:" x-autocompletetype="email">
<textarea name="messageFFF" id="messageFFF" required rows="5" placeholder="Кратко опишите Ваш проект:"></textarea>
<label class="add-computer-button">
<span class="button">Выбрать</span>
<mark>файл не выбран</mark>
<input type="file" name="fileFFF[]" multiple id="fileFFF">
</label>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="js/index.js"></script>
<input type="submit" id="submitFF" name="fileFFF" value="Отправить">
</form>
</fieldset>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script type="text/javascript">
document.getElementById('feedback-form').addEventListener('submit', function(evt){
var http = new XMLHttpRequest(), f = this;
evt.preventDefault();
http.open("POST", "php/contacts.php", true);
http.onreadystatechange = function() {
if (http.readyState == 4 && http.status == 200) {
alert(http.responseText);
      if (http.responseText.indexOf(f.nameFFF.value) == 0) {
        f.messageFFF.removeAttribute('value');
        f.messageFFF.value='';
      }
    }
  }
 
  http.onerror = function() {
    alert('Извините, данные не были переданы');
  }
  http.send(new FormData(f));
}, false);
</script>


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
  <?php
  if (isset ($_POST['contactFFF'])) {
   $to = "info@mysite.com";
   $from = $_POST['contactFFF'];
   $subject = 'Заполнена контактная форма с '.$_SERVER['HTTP_REFERER'];
   $subject = "=?utf-8?b?". base64_encode($subject) ."?=";
   $message =  "Имя: ".$_POST['nameFFF']."\nТелефон: ".$_POST['telFFF']."\nEmail: ".$from."\nIP: ".$_SERVER['REMOTE_ADDR']."\nСообщение: ".$_POST['messageFFF'];
   $boundary = md5(date('r', time()));
   $filesize = '';
   $headers = "Content-Type: text/plain; charset=utf-8\r\n";
   $headers .= "MIME-Version: 1.0\r\n";
   $headers .= "From: " . $from . "\r\n";
   $headers .= "Reply-To: " . $from . "\r\n";
   $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
   $message = "Content-Type: multipart/mixed; boundary=\"$boundary\"
 
   --$boundary
   Content-Transfer-Encoding: base64
   Content-Type: text/html; charset=\"utf-8\"
   Content-Transfer-Encoding: 7bit
 
 
   $message";
   for($i=0;$i<count($_FILES['fileFFF']['name']);$i++) {
     if(is_uploaded_file($_FILES['fileFFF']['tmp_name'][$i])) {
       $attachment = chunk_split(base64_encode(file_get_contents($_FILES['fileFFF']['tmp_name'][$i])));
       $filename = $_FILES['fileFFF']['name'][$i];
       $filetype = $_FILES['fileFFF']['type'][$i];
       $filesize += $_FILES['fileFFF']['size'][$i];
       $message.="
 
       --$boundary
       Content-Type: \"$filetype\"; name=\"$filename\"
       Content-Transfer-Encoding: base64
       Content-Type: text/html; charset=\"utf-8\"
       Content-Disposition: attachment; filename=\"$filename\"
 
       $attachment";
     }
   }
   $message.="
   --$boundary--";
 
 
   if ($filesize < 10000000) {
    mail($to, $subject, $message, $headers);
    echo $_POST['nameFFF'].', Спасибо, Ваше сообщение получено!';
  } else {
    echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';
  }
}
?>
Пожалуйста...помогите!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.07.2016, 15:47
Ответы с готовыми решениями:

Форма обратной связи на PHP с вложением
Здравствуйте. Имеется форма обратной связи. Помогите сделать так чтобы можно было к форме прикреплять файл &lt;?php /* Здесь мы...

Форма обратной связи с вложением на PHP
Здравствуйте! Подскажите, пожалуйста: на сайте создали форму обратной связи на PHP с возможностью прикрепления файлов. Сообщения...

Форма обратной связи с вложением
Я пытался, все таки не приходит файл на почту, но есть текст. Помогите плиз Вот такой код &lt;form action=&quot;index.php&quot;...

3
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 3
27.07.2016, 23:37  [ТС]
вопрос решен!
0
 Аватар для Зверушь
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
28.07.2016, 10:30
NaIra, в чем была проблема?
0
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 3
28.07.2016, 11:05  [ТС]
Вы знаете, я не скажу в чем была проблема, я просто взяла другую форму. Выкладываю, может кому пригодится. Форма 100% рабочая, она у меня на сайте - форма оформления заказа
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<fieldset>
<form action="php/contacts.php" enctype="multipart/form-data" method="POST" id="feedback-form">
<input type="text" name="namesender" id="namesender" required placeholder="Ваше имя/название компании:" x-autocompletetype="name" maxlength="64">
<input name="telsender" id="telsender" required placeholder="Контактный номер" class="required" type="text" x-autocompletetype="tel" maxlength="14">
<input type="text" name="emailsender" id="emailsender" required placeholder="E-mail для связи:" x-autocompletetype="email" maxlength="64">
<textarea name="message" id="message" required rows="5" placeholder="Кратко опишите Ваш проект:"></textarea>
<label class="add-computer-button">
<span class="button">Выбрать</span>
<mark>файл не выбран</mark>
<input type="file" name="file" multiple id="file">
</label>
<input type="submit" id="sendMail" name="sendMail" value="Отправить">
</form>
</fieldset>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php
  session_start();
  $admin = 'mysite@gmail.com';
 
  if ( isset( $_SESSION['sendMailForm'] ) ) {
    echo $_SESSION['sendMailForm']['error'];
    $namesender = htmlspecialchars ( $_SESSION['sendMailForm']['namesender'] );
    $telsender = htmlspecialchars ( $_SESSION['sendMailForm']['telsender'] );
    $emailsender = htmlspecialchars ( $_SESSION['sendMailForm']['emailsender'] );
    $message = htmlspecialchars ( $_SESSION['sendMailForm']['message'] );
    unset( $_SESSION['sendMailForm'] );
  } else {
    $namesender  = '';
    $telsender  = '';
    $emailsender   = '';
    $message = '';
  }
 
  if ( isset( $_POST['sendMail'] ) ) {
    $namesender  = substr( $_POST['namesender'], 0, 64 );
    $telsender  = substr( $_POST['telsender'], 0, 14 );
    $emailsender   = substr( $_POST['emailsender'], 0, 64 );
    $message = substr( $_POST['message'], 0, 350 );
 
    $error = '';
    if ( empty( $namesender ) ) $error = $error.'<li>Не заполнено поле "Имя/Название компании"</li>';
    if ( empty( $telsender ) ) $error = $error.'<li>Не заполнено поле "Контактный номер"</li>';
    if ( empty( $emailsender ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';
    if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';
    if ( !empty( $emailsender ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $emailsender ) )
      $error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>';
    if ( !empty( $error ) ) {
      $_SESSION['sendMailForm']['error']   = '<p>При заполнении формы были допущены ошибки:</p><ul>'.$error.'</ul>';
      $_SESSION['sendMailForm']['namesender']    = $namesender;
      $_SESSION['sendMailForm']['telsender']    = $telsender;
      $_SESSION['sendMailForm']['emailsender']   = $emailsender;
      $_SESSION['sendMailForm']['message'] = $message;
      header( 'Location: '.$_SERVER['PHP_SELF'] );
      die();
    }
 
    if ( !empty( $_FILES['file']['tmp_name'] ) and $_FILES['file']['error'] == 0 ) {
      $filepath = $_FILES['file']['tmp_name'];
      $filename = $_FILES['file']['name'];
    } else {
      $filepath = '';
      $filename = '';
    }
 
    $body = "ИМЯ:\r\n".$namesender."\r\n\r\n";
    $body .= "ТЕЛЕФОН:\r\n".$telsender."\r\n\r\n";
    $body .= "E-MAIL:\r\n".$emailsender."\r\n\r\n";
    $body .= "СООБЩЕНИЕ:\r\n".$message;
 
    if ( send_mail($admin, $body, $emailsender, $filepath, $filename) )
      $_SESSION['success'] = true;
    else
      $_SESSION['success'] = false;
    header( 'Location: '.$_SERVER['PHP_SELF'] );
    die();
  }
 
 
// Вспомогательная функция для отправки почтового сообщения с вложением
 function send_mail($admin, $body, $emailsender, $filepath, $filename)
 {
  $subject = '=?utf-8?b?'.base64_encode('Заполнена форма на сайте').'?=';
  $boundary = "--".md5(uniqid(time())); // генерируем разделитель
  $headers = "From: ".strtoupper($_SERVER['SERVER_NAME'])." <".$email.">\r\n";
  $headers .= "Return-path: <".$email.">\r\n";
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n";
  $multipart = "--".$boundary."\r\n";
  $multipart .= "Content-type: text/plain; charset=\"utf-8\"\r\n";
  $multipart .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
 
  $body = quoted_printable_encode( $body )."\r\n\r\n";
 
  $multipart .= $body;
 
  if ( !empty( $filepath ) ) {
    $fp = fopen($filepath, "r");
    if ( $fp ) {
      $content = fread($fp, filesize($filepath));
      fclose($fp);
      $file = "--".$boundary."\r\n";
      $file .= "Content-Type: application/octet-stream\r\n";
      $file .= "Content-Transfer-Encoding: base64\r\n";
      $file .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
      $file .= chunk_split(base64_encode($content))."\r\n";
      $multipart .= $file."--".$boundary."--\r\n";
    }
  }
 
  if( mail($admin, $subject, $multipart, $headers) )
    return true;
  else
    return false;
}
 
if (!function_exists('quoted_printable_encode'))
{
 function quoted_printable_encode ( $string )
 {
   // rule #2, #3 (leaves space and tab characters in tact)
   $string = preg_replace_callback (
     '/[^\x21-\x3C\x3E-\x7E\x09\x20]/',
     'quoted_printable_encode_character',
     $string
     );
   $newline = "=\r\n"; // '=' + CRLF (rule #4)
   // make sure the splitting of lines does not interfere with escaped characters
   // (chunk_split fails here)
   $string = preg_replace ( '/(.{73}[^=]{0,3})/', '$1'.$newline, $string);
   return $string;
 }
}
 
function quoted_printable_encode_character ( $matches ) {
 $character = $matches[0];
 return sprintf ( '=%02x', ord ( $character ) );
}
 
if ( isset( $_SESSION['success'] ) ) {
  if ( $_SESSION['success'] )
    header( 'refresh: 0; url=http://www.coder-web.com.ua/aboutme.html' );
  else
   echo '<p>Ошибка при отправке письма</p>';
}
?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.07.2016, 11:05
Помогаю со студенческими работами здесь

Форма обратной связи (вместо отправки сообщения открывается код php)
Ку всем вместо отправки сообщение открывает скрипт php p.s. Я нуб в етом код с инета взял и может ето из за того что я на локалке...

Форма обратной связи с вложением (анкета)
Здравствуйте! Ребятки тема как всегда актуальна, но мне тут просто нужна помощь так сказать в поиске ошибки. Есть на сайте форма...

Опять форма обратной связи с вложением
Здравствуйте не могу точно сформулировать вопрос, поэтому создал тему здесь. Есть форма обратной связи на сайте с вложением и есть код...

Php форма обратной связи
Доброго времени суток, есть php форма обратной связи: &lt;?php $to = 'vadikvip777@inbox.ru'; $from = &quot;vadikvip@inbox.ru&quot;; ...

PHP форма обратной связи
Доброе утро,код ниже: if(!isset($hasError)) { $emailTo = 'email'; $body = &quot;Имя: $name \r\nИмя организации:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru