PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 1
Guooff Отправлено: 20 Февраля, 2010 - 18:50:45 • Тема: Проблема с формой "отправка письма с вложением" • Форум: Обсуждение статей

Ответов: 8
Просмотров: 8808
Доброе время суток, я очень долгое время искал, как создать форму отправки изображений и вот на мой взгляд нашёл ( http://php.su/articles/?cat=exam...les&page=060 ), но я столкнулся с проблемой, наверно начну с начала самого...

создал у себя на сервере папку gallery_forma в неё вложил 2ва файла - index.php и simple_mail.php


Файл index.php имеет код таков:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <HTML>
  2.  
  3. <HEAD>
  4.  
  5. <TITLE>Отправка сообщения с вложением</TITLE>
  6.  
  7. </HEAD>
  8.  
  9. <BODY>
  10.  
  11. <H3> <center><font color=#1E90FF>Отправка сообщения с вложением</font></H3>
  12.  
  13. <center>
  14.  
  15. <table width=1 border=0>
  16.  
  17. <form action=simple_mail.php enctype='multipart/form-data' method=post>
  18.  
  19.  
  20.  
  21. <tr><td width=50%>To:</td><td align=right><input type=text name=mail_to maxlength=32></td></tr>
  22.  
  23. <tr><td width=50%>Subject:</td><td align=right><input type=text name=mail_subject maxlength=64></td></tr>
  24.  
  25. <tr><td colspan=2>Сообщение:<br><textarea cols=50 rows=8 name=mail_msg></textarea></td>
  26.  
  27. <tr><td width=50%>Photo:</td><td align=right><input type=file name=mail_file maxlength=64></td></tr>
  28.  
  29. </tr><tr><td colspan=2><input type=submit value='Отправить'></td></tr>
  30.  
  31. </form>
  32.  
  33. </table>
  34.  
  35. </center>
  36.  
  37. </BODY>
  38.  
  39. </HTML>



Файл simple_mail.php имеет код таков:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3.  
  4.  if(empty($_POST['mail_to'])) exit(" ТУТ Я ПИШУ СВОЙ ЭМЕИЛ ");
  5.  
  6.  // проверяем правильности заполнения с помощью регулярного выражения
  7.  
  8.  if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i", $_POST['mail_to']))
  9.     exit("Введите адрес в виде somebody@server.com");
  10.  
  11.  $_POST['mail_to'] = htmlspecialchars(stripslashes($_POST['mail_to']));
  12.  
  13.  $_POST['mail_subject'] = htmlspecialchars(stripslashes($_POST['mail_subject']));
  14.  
  15.  $_POST['mail_msg'] = htmlspecialchars(stripslashes($_POST['mail_msg']));
  16.  
  17.  $picture = "";
  18.  
  19.  // Если поле выбора вложения не пустое - закачиваем его на сервер
  20.  
  21.  if (!empty($_FILES['mail_file']['tmp_name']))
  22.  
  23.  {
  24.  
  25.    // Закачиваем файл
  26.  
  27.    $path = $_FILES['mail_file']['name'];
  28.  
  29.    if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;
  30.  
  31.  }
  32.  
  33.  $thm = $_POST['mail_subject'];
  34.  
  35.  $msg = $_POST['mail_msg'];
  36.  
  37.  $mail_to = $_POST['mail_to'];
  38.  
  39.  // Отправляем почтовое сообщение
  40.  
  41.  if(empty($picture)) mail($mail_to, $thm, $msg);
  42.  
  43.  else send_mail($mail_to, $thm, $msg, $picture);
  44.  
  45.  // Вспомогательная функция для отправки почтового сообщения с вложением
  46.  
  47.  function send_mail($to, $thm, $html, $path)
  48.  
  49.  {
  50.  
  51.    $fp = fopen($path,"r");
  52.  
  53.    if (!$fp)
  54.  
  55.    {
  56.  
  57.      print "Файл $path не может быть прочитан";
  58.  
  59.      exit();
  60.  
  61.    }
  62.  
  63.    $file = fread($fp, filesize($path));
  64.  
  65.    fclose($fp);
  66.  
  67.    
  68.  
  69.    $boundary = "--".md5(uniqid(time())); // генерируем разделитель
  70.  
  71.    $headers .= "MIME-Version: 1.0\n";
  72.  
  73.    $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
  74.  
  75.    $multipart .= "--$boundary\n";
  76.  
  77.    $kod = 'koi8-r'; // или $kod = 'windows-1251';
  78.  
  79.    $multipart .= "Content-Type: text/html; charset=$kod\n";
  80.  
  81.    $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
  82.  
  83.    $multipart .= "$html\n\n";
  84.  
  85.  
  86.  
  87.    $message_part = "--$boundary\n";
  88.  
  89.    $message_part .= "Content-Type: application/octet-stream\n";
  90.  
  91.    $message_part .= "Content-Transfer-Encoding: base64\n";
  92.  
  93.    $message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";
  94.  
  95.    $message_part .= chunk_split(base64_encode($file))."\n";
  96.  
  97.    $multipart .= $message_part."--$boundary--\n";
  98.  
  99.  
  100.  
  101.    if(!mail($to, $thm, $multipart, $headers))
  102.  
  103.    {
  104.  
  105.      echo "К сожалению, письмо не отправлено";
  106.  
  107.      exit();
  108.  
  109.    }
  110.  
  111.  }
  112.  
  113. ?>
  114.  
  115.  


то есть всё как в примере.... http://php.su/articles/?cat=exam...les&page=060

и всё, когда я к примеру всё заполняю... мне пишет - Введите адрес в виде somebody@server.com, но а если не чего не заполнять и нажать просто кнопку отправить, то выдаёт мой эмеил на который должна форма отправки отправлять все данные + фото (вот сама форма http://www[dot]freestyle-sk8[dot]com[dot]ua/gallery_forma/ )

Что делать и как быть - я совершенно не знаю... Помогите пожалуйста решить данную проблему

За благовременно спасибо!!!!

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB