За последние 24 часа нас посетили 20345 программистов и 1012 роботов. Сейчас ищет 371 программист ...

Помогите найти ошибку в форме

Тема в разделе "Прочие вопросы по PHP", создана пользователем IgoryanVL, 17 окт 2018.

  1. IgoryanVL

    IgoryanVL Новичок

    С нами с:
    29 мар 2018
    Сообщения:
    12
    Симпатии:
    0
    Ребят, всем привет!
    Подскажите в чем может быть ошибка?
    Из формы все данные в письме на почту прилетают норм, кроме файла. Он вообще не прикрепляется к письму.
    HTML:
    1. <input type="file" name="userfile[]" multiple id="userfile" class="w100">
    PHP:
    1. <?php
    2. // Файлы phpmailer
    3. require 'class.phpmailer.php';
    4. require 'class.smtp.php';
    5.  
    6. $name = $_POST['name'];
    7. $number = $_POST['number'];
    8. $email = $_POST['email'];
    9. $comments = $_POST['comments'];
    10.  
    11.  
    12. // Настройки
    13. $mail = new PHPMailer;
    14.  
    15. $mail->isSMTP();
    16. $mail->Host = 'smtp.yandex.ru';
    17. $mail->SMTPAuth = true;                    
    18. $mail->Username = 'test';
    19. $mail->Password = 'test';
    20. $mail->SMTPSecure = 'ssl';                          
    21. $mail->Port = 465;
    22. $mail->setFrom('test@yandex.ru');
    23. $mail->addAddress('test@gmail.com');
    24.  
    25. // Прикрепление файлов
    26.   for ($ct = 0; $ct < count($_FILES['userfile']['tmp_name']); $ct++) {
    27.         $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name'][$ct]));
    28.         $filename = $_FILES['userfile']['name'][$ct];
    29.         if (move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)) {
    30.             $mail->addAttachment($uploadfile, $filename);
    31.         } else {
    32.             $msg .= 'Failed to move file to ' . $uploadfile;
    33.         }
    34.     }  
    35.  
    36. // Письмо
    37. $mail->isHTML(true);
    38. $mail->Subject = "LEMON - order"; // Заголовок письма
    39. $mail->Body    = "Имя:  $name <br> Телефон:  $number <br> Почта:  $email <br> Комментарий:  $comments"; // Текст письма
    40.  
    41. // Результат
    42. if(!$mail->send()) {
    43.     echo 'Message could not be sent.';
    44.     echo 'Mailer Error: ' . $mail->ErrorInfo;
    45. } else {
    46.     echo 'ok';
    47. }
    48. ?>
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @IgoryanVL,
    Проверьте правильность действий в 27-й строке.
    В 26-й строке лучше вызов функции подсчета количества вынести до начала цикла, или в блок инициализации (присвоив значение переменной
     
  3. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @IgoryanVL, кстати, для чего выполняете move_uploaded_file()?
    Файл нужен для истории? Почему бы просто не отправить файл и забыть о нём?
     
  4. IgoryanVL

    IgoryanVL Новичок

    С нами с:
    29 мар 2018
    Сообщения:
    12
    Симпатии:
    0
    Можете помочь строчкой кода правильной? )
     
  5. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Если не надо сохранять отправленные файлы, то попробуйте так (вместо строк с 26 по 34-ю):
    PHP:
    1. foreach ($_FILES['userfile']['tmp_name'] as $ct => $tmpfilename) {
    2.     if ($_FILES['userfile']['error'] == UPLOAD_ERR_OK) {
    3.         $filename = $_FILES['userfile']['name'][$ct];
    4.         $mail->addAttachment($tmpfilename, $filename);
    5.     } else {
    6.         $msg .= 'Failed to add attachment: ' . $filename;
    7.     }
    8. }
     
  6. IgoryanVL

    IgoryanVL Новичок

    С нами с:
    29 мар 2018
    Сообщения:
    12
    Симпатии:
    0
    Не помогло :(