Как в форму обратной связи добавить вложение файла?

175
15 октября 2018, 22:40

Не пойму как отправлять вложенные файлы в форме. Код

<form id="feedback-form" enctype="multipart/form-data" method="post"> 
 
  <div id="feedback-return" class="alert" style="display: none"></div> 
 
  <div> 
    <label>Ф.И.О.</label> 
    <input type="text" name="name"> 
  </div> 
 
  <div> 
    <label>Почта</label> 
    <input type="email" name="email"> 
  </div> 
 
  <div> 
    <label>Телефон</label> 
    <input type="text" name="phone"> 
  </div> 
 
  <div> 
    <label>Файл</label> 
    <input type="file" name="file"> 
  </div> 
 
  <div> 
    <label>Предложения и пожелания</label> 
    <textarea name="message"></textarea> 
  </div> 
 
  <div> 
    <input id="feedback-submit" type="submit" value="Отправить"> 
  </div> 
 
</form>

jQuery(document).ready(function(e) {
  "use strict";
  $('#feedback-submit').on('click', function(e) {
    e.preventDefault();
    var $this = $(this),
      message = $('#feedback-return'),
      form = $('#feedback-form');
    $.ajax({
      type: "POST",
      url: '../contact/feedback-process.php',
      dataType: 'json',
      cache: false,
      data: $('#feedback-form').serialize(),
      success: function(data) {
        if (data.info !== 'error') {
          $this.parents('form').find('input[type=text],input[type=email],input[type=hidden],input[type=file],textarea,select').filter(':visible').val('');
          message.hide().removeClass('alert-success').removeClass('alert-danger').addClass('alert-success').html(data.msg).fadeIn('slow').delay(3000).fadeOut('slow');
        } else {
          message.hide().removeClass('alert-success').removeClass('alert-danger').addClass('alert-danger').html(data.msg).fadeIn('slow').delay(3000).fadeOut('slow');
        }
      }
    });
  });
});

Код обработчика PHP (feedback-process.php)

if($_POST) {
    $to = '--почта--';
    $subject = '--тема--';
    $name        = $_POST['name'];
    $mail        = $_POST['email'];
    $message     = $_POST['message'];
    $tel         = $_POST['phone'];
}
$message = '
Имя: '.$name.'<br>
Почта:  '.$mail.'<br>
Телефон: '.$tel.'<br>
Сообщение: '.$message.'<br>
';
$check_tel = '/(8|7|\+7)?9\d{9}/';

if ($name == '') {
    echo json_encode(array('info' => 'error', 'msg' => "<b>Ошибка!</b> Не указано имя."));
    exit();
} else if ($mail == '') {
    echo json_encode(array('info' => 'error', 'msg' => "<b>Ошибка!</b> Не указана почта"));
    exit();
} else if ($tel == '') {
    echo json_encode(array('info' => 'error', 'msg' => "<b>Ошибка!</b> Не указан телефон."));
    exit();
} else if (!preg_match($check_tel, $tel)) {
    echo json_encode(array('info' => 'error', 'msg' => "Не верно указан <b>телефон</b>! <br>Номер должен быть в формате <b>+7×××××××××</b> или <b>8×××××××××</b>"));
    exit();
} else {
    //Send Mail
    $headers =
    'From: --почта--'. "\r\n".
    'Reply-To: --почта--'. "\r\n".
    'MIME-Version: 1.0'. "\r\n".
    'Content-type: text/html; charset=utf-8'. "\r\n".
    'X-Mailer: PHP/'.phpversion();
    if (@mail($to, $subject, $message, $headers)) {
        echo json_encode(array('info' => 'success', 'msg' => "<b>Спасибо!</b> Ваше сообщение отправлено."));
    } else {
        echo json_encode(array('info' => 'error', 'msg' => "<b>Ошибка!</b> Сообщение не отправлено, попробуйте еще раз."));
    }
}

Как обрабатывать поле файла? Всё что нагуглил присылает письмо без вложений. Помогите, пожалуйста.

READ ALSO
Многомерный массив JSON и PHP

Многомерный массив JSON и PHP

У меня есть массивы:

278
Разбивка строки по длинее и переносу строки

Разбивка строки по длинее и переносу строки

Есть такая функция, которая разбивает строку на части заданной длинны:

149
Yii2 Все товары в подкатегориях

Yii2 Все товары в подкатегориях

Вообщем такая проблема, есть проект на yii2 там есть категории с бесконечной вложенностью и такая задача вывести все товары из данной под категории...

145