За последние 24 часа нас посетили 20093 программиста и 1082 робота. Сейчас ищут 693 программиста ...

Проблемы с отправкой файла

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

Метки:
  1. NikRabe

    NikRabe Новичок

    С нами с:
    15 июн 2019
    Сообщения:
    4
    Симпатии:
    1
    Добрый день! Недавно начал работать с РНР и ещё не разобрался со всем до конца, в связи с чем прошу помощи у более сведующих.
    Мне необходимо соединить эти 2 вещи воедино, помните пожалуйста новичку.
    PHP:
    1. <?php
    2. // Файлы phpmailer
    3. require 'phpmailer/PHPMailer.php';
    4. require 'phpmailer/SMTP.php';
    5. require 'phpmailer/Exception.php';
    6.  
    7. // Переменные, которые отправляет пользователь
    8. $name = $_POST['name'];
    9. $email = $_POST['email'];
    10. $text = $_POST['text'];
    11.  
    12. // Проверяем валидность EMail
    13. if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    14.  
    15. $mail = new PHPMailer\PHPMailer\PHPMailer();
    16. try {
    17.    $msg = "ok";
    18.    $mail->isSMTP();
    19.    $mail->CharSet = "UTF-8";                                      
    20.    $mail->SMTPAuth = true;
    21.  
    22.    // Настройки вашей почты
    23.    $mail->Host     = 'ssl://smtp.yandex.ru'; // SMTP сервера
    24.    $mail->Username = '********@yandex.ru'; // Логин на почте
    25.    $mail->Password = '*********'; // Пароль на почте
    26.    $mail->SMTPSecure = 'ssl';
    27.    $mail->Port     = 465;
    28.    $mail->setFrom('********', 'Подпись'); // Адрес самой почты
    29.  
    30.    // Получатель письма
    31.    $mail->addAddress('********@gmail.com');  
    32.  
    33.    // Прикрипление файлов к письму
    34. if (!empty($_FILES['myfile']['name'][0])) {
    35.    for ($ct = 0; $ct < count($_FILES['myfile']['tmp_name']); $ct++) {
    36.        $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['myfile']['name'][$ct]));
    37.        $filename = $_FILES['myfile']['name'][$ct];
    38.        if (move_uploaded_file($_FILES['myfile']['tmp_name'][$ct], $uploadfile)) {
    39.            $mail->addAttachment($uploadfile, $filename);
    40.        } else {
    41.            $msg .= 'Неудалось прикрепить файл ' . $uploadfile;
    42.        }
    43.    }
    44. }
    45.  
    46.        // -----------------------
    47.        // Само письмо
    48.        // -----------------------
    49.        $mail->isHTML(true);
    50.  
    51.        $mail->Subject = 'Заголовок письма';
    52.        $mail->Body   = "<b>Имя:</b> $name <br>
    53.       <b>Почта:</b> $email<br><br>
    54.       <b>Сообщение:</b><br>$text";
    55.  
    56.  
    57. // Проверяем отравленность сообщения
    58. if ($mail->send()) {
    59.    echo "$msg";
    60. } else {
    61. echo "Сообщение не было отправлено. Неверно указаны настройки вашей почты";
    62. }
    63.  
    64. } catch (Exception $e) {
    65.    echo "Сообщение не было отправлено. Причина ошибки: {$mail->ErrorInfo}";
    66. }
    67.  
    68. } else {
    69.    echo 'mailerror';
    70. }
    // Обработчик отправки с формы данных и файлов на почту

    PHP:
    1. <?
    2.  
    3. $client1 = $_POST['name'];//присвоить переменной значение, полученное из формы name=name
    4. $client2 = $_POST['email']; //полученное из формы name=email
    5. $client3 = $_POST['phone']; //полученное из формы name=phone
    6. $client4 = $_POST['message']; //полученное из формы name=message
    7.  
    8.  
    9. /** Error reporting */
    10. /** Include path **/
    11. ini_set('include_path', ini_get('include_path').';/Classes/');
    12. /** PHPExcel */
    13. include 'Classes/PHPExcel.php';
    14. /** PHPExcel_Writer_Excel2007 */
    15. include 'Classes/PHPExcel/Writer/Excel2007.php';
    16. // Create new PHPExcel object
    17. echo date('H:i:s') . " Create new PHPExcel object \n";
    18. $objPHPExcel = PHPExcel_IOFactory::load("excel.xlsx");
    19. /* $objPHPExcel = new PHPExcel(); */
    20. // Set properties
    21. echo date('H:i:s') . " Set properties \n";
    22. $objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
    23. $objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
    24. $objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
    25. $objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
    26. $objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");
    27. // Add some data
    28. echo date('H:i:s') . " Add some data\n";
    29. $objPHPExcel->setActiveSheetIndex(0);
    30. $objPHPExcel->getActiveSheet()->SetCellValue('B2', $client1); // $client1 - заполняет клиент в форме
    31. $objPHPExcel->getActiveSheet()->SetCellValue('B3', $client2);
    32. $objPHPExcel->getActiveSheet()->SetCellValue('B4', $client3);
    33. $objPHPExcel->getActiveSheet()->SetCellValue('B5', $client4);
    34. // Rename sheet
    35. echo date('H:i:s') . " Rename sheet \n";
    36. $objPHPExcel->getActiveSheet()->setTitle('Simple');
    37. // Save Excel 2007 file
    38. echo date('H:i:s') . " Write to Excel2007 format \n";
    39. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
    40. echo date ('H:i:s'). "Test log";
    41. $objWriter->save(str_replace('.php', '.xlsx', __FILE__));
    42. // Echo done
    43. echo date('H:i:s') . " Done writing file. \r \n";
    44.  
    45. ?>
    //Второй обработчик. Он открывает файл, вносит в него данные с формы, и сохраняет их в новый файл.

    Мне нужно чтобы открылся шаблон екселевский, с формы данные брались и заносились в него. И после этого чтобы этот файл улетал заполненный на майл.
    Прошу помощи, ибо не могу сообразить как их собрать воедино.
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @NikRabe, если будешь плодить дубликаты тем на форуме, то вместо ответа скорее всего получишь бан. Создал тему и жди. Когда-нибудь найдётся тот кто ответит.
     
  3. NikRabe

    NikRabe Новичок

    С нами с:
    15 июн 2019
    Сообщения:
    4
    Симпатии:
    1
    Понимаю, прошу простить моё нетерпение, более такое не повторится, кроме того сумел сам разобраться, всё заработало как нужно. Тема более не актуальна, вопрос закрыт.
     
    Valick нравится это.