Доброго времени суток всем знатокам и сведующим. Недавно начал изучать и осваивать РНР на более или менее нормальном уровне и применять его на действительной практике, но пока что знаний не хватает.Столкнулся с проблемой при изучении и выполнении боевого задания. Прошу помощи у всех кто может помочь. Суть задания следующая: Клиент заходит на страницу сайта. Кликает в необходимый пункт (кнопку) перед ним выпадает форма обратной связи, он заполняет в ней необходимые некоторые поля и нажимает на кнопочку "отправить". И на почту кому требуется приходит заполненный excel файл с информацией забранной с формы на сайте. Порыскав по интернету я познакомился с таки замечательными вещами как PHPExcel и PHPMailer. Прекрасные вещи и думаю я еще не раз к ним вернусь. Как их использовать более или менее разобрался, подключил сделал, настроил по отдельности все работает замечательно. С формы все берется, заполняется в файл (PHPExcel) , а на почту улетает файл с сообщением ((тестовое вложение)PHPMailer). Более или менее разобрался, вот только теперь не могу сообразить как мне "склеить" мои 2 эти результата в один. На сколько я примерно себе представил то файл excel шаблон (в который будут заноситься данные из формы) лежит на сервере и обработчик будет его открывать заносить туда данные из формы, но вот только дальше я немного не понимаю где этот файл с которым я работаю и куда и как его прикрепить к письму которое формируется далее и отправляется. Прошу помочь с муками моими, ибо бьюсь над этим уже неделю... Мои коды обработчиков так же прилагаю. PHP: <? require 'phpmailer/PHPMailer.php'; require 'phpmailer/SMTP.php'; require 'phpmailer/Exception.php'; $client1 = $_POST['name'];//присвоить переменной значение, полученное из формы name=name $client2 = $_POST['email']; //полученное из формы name=email $client3 = $_POST['phone']; //полученное из формы name=phone $client4 = $_POST['message']; //полученное из формы name=message /** Error reporting */ error_reporting(E_ALL); /** Include path **/ ini_set('include_path', ini_get('include_path').';/Classes/'); /** PHPExcel */ include 'Classes/PHPExcel.php'; /** PHPExcel_Writer_Excel2007 */ include 'Classes/PHPExcel/Writer/Excel2007.php'; // Create new PHPExcel object echo date('H:i:s') . " Create new PHPExcel object \n"; $objPHPExcel = PHPExcel_IOFactory::load("excel.xlsx"); /* $objPHPExcel = new PHPExcel(); */ // Set properties echo date('H:i:s') . " Set properties \n"; $objPHPExcel->getProperties()->setCreator("Maarten Balliauw"); $objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw"); $objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document"); $objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document"); $objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes."); // Add some data echo date('H:i:s') . " Add some data\n"; $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->SetCellValue('B2', $client1); // $client1 - заполняет клиент в форме $objPHPExcel->getActiveSheet()->SetCellValue('B3', $client2); $objPHPExcel->getActiveSheet()->SetCellValue('B4', $client3); $objPHPExcel->getActiveSheet()->SetCellValue('B5', $client4); // Rename sheet echo date('H:i:s') . " Rename sheet \n"; $objPHPExcel->getActiveSheet()->setTitle('Simple'); // Save Excel 2007 file echo date('H:i:s') . " Write to Excel2007 format \n"; $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); echo date ('H:i:s'). "Test log"; $objWriter->save(str_replace('.php', '.xlsx', __FILE__)); // Echo done echo date('H:i:s') . " Done writing file. \r \n"; exit; ?> //Это обработчик который открывает шаблон excel файла, добавляет в него данные и сохраняет новый файл (кстати заодно хотел бы узнать, а как дать имя сохраняемому файлу, можете подсказать заодно пожалуйста ?) PHP: <?php // Файлы phpmailer require 'phpmailer/PHPMailer.php'; require 'phpmailer/SMTP.php'; require 'phpmailer/Exception.php'; // Переменные, которые отправляет пользователь $name = $_POST['name']; $email = $_POST['email']; $text = $_POST['text']; // Проверяем валидность EMail if (filter_var($email, FILTER_VALIDATE_EMAIL)) { $mail = new PHPMailer\PHPMailer\PHPMailer(); try { $msg = "ok"; $mail->isSMTP(); $mail->CharSet = "UTF-8"; $mail->SMTPAuth = true; // Настройки вашей почты $mail->Host = 'ssl://smtp.yandex.ru'; // SMTP сервера $mail->Username = '********@yandex.ru'; // Логин на почте $mail->Password = '*********'; // Пароль на почте $mail->SMTPSecure = 'ssl'; $mail->Port = 465; $mail->setFrom('********', 'Подпись'); // Адрес самой почты // Получатель письма $mail->addAddress('********@gmail.com'); // Прикрипление файлов к письму if (!empty($_FILES['myfile']['name'][0])) { for ($ct = 0; $ct < count($_FILES['myfile']['tmp_name']); $ct++) { $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['myfile']['name'][$ct])); $filename = $_FILES['myfile']['name'][$ct]; if (move_uploaded_file($_FILES['myfile']['tmp_name'][$ct], $uploadfile)) { $mail->addAttachment($uploadfile, $filename); } else { $msg .= 'Неудалось прикрепить файл ' . $uploadfile; } } } // ----------------------- // Само письмо // ----------------------- $mail->isHTML(true); $mail->Subject = 'Заголовок письма'; $mail->Body = "<b>Имя:</b> $name <br> <b>Почта:</b> $email<br><br> <b>Сообщение:</b><br>$text"; // Проверяем отравленность сообщения if ($mail->send()) { echo "$msg"; } else { echo "Сообщение не было отправлено. Неверно указаны настройки вашей почты"; } } catch (Exception $e) { echo "Сообщение не было отправлено. Причина ошибки: {$mail->ErrorInfo}"; } } else { echo 'mailerror'; } //Это обработчик который я нашел в интернете, он забирает данные с формы и файл прикрипленный к форме обратной связи и этот файл отправляет вместе с данными из формы на почту. Помогите объединить эти 2 вещи в одну ибо я уже всю голову сломал как их соединить, чтобы человек заполнял данные в форме, запустил обработчик. Обработчик открыл файл - заполнил файл и отправил этот файл на E-mail. Спасибо всем заранее за помощь и просветление
Форум - это не только способ получить ответ автору темы, но тем, кто будет сталкиваться с вопросом позже. Поделись, пожауйста, решением)