За последние 24 часа нас посетили 22389 программистов и 1024 робота. Сейчас ищут 699 программистов ...

Помогите разобраться с формой....

Тема в разделе "Работа с почтой", создана пользователем OlgaWhite, 1 июн 2018.

  1. OlgaWhite

    OlgaWhite Новичок

    С нами с:
    1 июн 2018
    Сообщения:
    4
    Симпатии:
    0
    Всем привет!
    Помогите разобраться с прикреплением файлов. Пыталась найти ответ в интернете, но толком ничего не нашла.
    Письмо приходит нормально, но только текст. Пробовала разные варианты... Нужно, чтобы приходили прикреплённые файлы. В обработчике формы, который представлен ничего не прописывала, так как делаю что-то неправильно и выдаёт ошибку (только что касается текстового содержимого).
    Что посоветуете?

    Форма:
    PHP:
    1. <div id="form">
    2.         <form action="mail_form" method="post" enctype="multipart/form-data"
    3. >
    4.             <p>Имя:</p><input name="name" type="text" required />
    5.             <p>Ваша почта:</p><input name="email" type="text" required />
    6.             <p>Тема:</p><input name="tema" type="text" required />
    7.             <p>Ваш вопрос:</p><textarea name="question" required></textarea>
    8.             <p>Прикрепить файл:</p><input name="files[]" type="file" multiple="" />
    9.             <br />
    10.             <input type="submit" value="отправить" />
    11.         </form>
    12. </div>
    13.  
    14. mail_form.php:
    15. <?php
    16.  
    17.     $my_email = "test@mail.ru";
    18.     $path_log = "log.txt";
    19.     $time_back = 3;
    20.  
    21.     function error_msg($message){
    22.  
    23.         $message = "<h2 style='color: red;text-shadow: -1px -1px 1px #fff, 2px 2px 1px #fff font-size: 60px; margin-top: 120px;'>".$message."</h2>";
    24.         return $message;
    25.     }
    26.  
    27.     function success_msg($message){
    28.  
    29.         $message = "<h2 style='color: #2d2d2d;text-shadow: -1px -1px 1px #fff, 2px 2px 1px #fff font-size: 60px; margin-top: 120px;'>".$message."</h2>";
    30.         return $message;
    31.     }
    32.  
    33.     function clear_data($var){
    34.  
    35.         return trim(strip_tags($var));
    36.     }
    37.  
    38.     function send_mail($email, $subj, $text, $from){
    39.  
    40.         $headers  = "From: ".$from." \r\n";
    41.         $headers .= "MIME-Version: 1.0\r\n";
    42.         $headers .= "Content-Type: text/html; charset=utf-8 \r\n";
    43.  
    44.         $result = mail($email, $subj, $text, $headers);
    45.  
    46.         if(!$result){
    47.  
    48.             return false;
    49.         }
    50.  
    51.         return true;
    52.     }
    53.  
    54.     function check_format($data, $type){
    55.  
    56.         switch($type){
    57.  
    58.             case "email":
    59.                 $pattern = "/^[a-z0-9_][a-z0-9\._-]*@([a-z0-9]+([a-z0-9-]*[a-z0-9]+)*\.)+[a-z]+$/i";
    60.                 if(preg_match($pattern, $data)){
    61.  
    62.                     return true;
    63.                 }
    64.                 break;
    65.  
    66.         }
    67.  
    68.         return false;
    69.     }
    70.  
    71.     // Узнаём предыдущую страницу
    72.     $prev_page = $_SERVER["HTTP_REFERER"];
    73.     // Наши сообщения
    74.     $msg = "";
    75.     // Статус письма
    76.     $status_email = "";
    77.  
    78.     header("Content-Type: text/html; charset=utf-8");
    79.  
    80.     if($_SERVER["REQUEST_METHOD"] == "POST"){
    81.  
    82.         if(isset($_POST["name"], $_POST["email"], $_POST["question"])){
    83.  
    84.             $name       = clear_data($_POST["name"]);
    85.             $email     = clear_data($_POST["email"]);
    86.             $question   = clear_data($_POST["question"]);
    87.  
    88.             if(check_format($email, "email") && !empty($question)){
    89.  
    90.                 $e_title = "Новое сообщение с сайта adonis-spb.com";
    91.                 $e_body  = "<html>";
    92.                     $e_body  .= "<body>";
    93.                     $e_body  .= "Имя: ".$name;
    94.                     $e_body  .= "<br />";
    95.                     $e_body  .= "Почта: ".$email;
    96.                     $e_body  .= "<br />";
    97.                     $e_body  .= "Сообщение: ".$question;
    98.                     $e_body  .= "</body>";
    99.                 $e_body  .= "</html>";
    100.                 // END Формируем письмо
    101.  
    102.                 if(send_mail($my_email, $e_title, $e_body, $prev_page)){
    103.                     $status_email = "success";
    104.                     $msg  = success_msg("Спасибо!.<br />Мы ответим вам в ближайшее время.");
    105.                 }else{
    106.                     $status_email = "error";
    107.                     $msg  = error_msg("При отправке письма произошла ошибка.");
    108.                 }
    109.  
    110.                 // Записываем в файл
    111.                 $str  = "Время: ".date("d-m-Y G:i:s")."\n\r";
    112.                 $str .= "Имя: ".$name."\n\r";
    113.                 $str .= "Почта: ".$email."\n\r";
    114.                 $str .= "Вопрос: ".$question."\n\r";
    115.                 $str .= "Письмо: ".$status_email."\n\r";
    116.                 $str .= "==========================\n\r";
    117.                 file_put_contents($path_log, $str, FILE_APPEND);
    118.  
    119.             }else{
    120.  
    121.                 $msg = error_msg("Заполните форму правильно!");
    122.             }
    123.  
    124.         }else{
    125.  
    126.             $msg = error_msg("Произошла ошибка!");
    127.         }
    128.     }else{
    129.  
    130.         exit;
    131.     }
    132. ?>
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    путь относительный, задавай путь от корня сайта, а то этот будет всегда разный.
     
  3. OlgaWhite

    OlgaWhite Новичок

    С нами с:
    1 июн 2018
    Сообщения:
    4
    Симпатии:
    0
    Путь у меня задан правильно...
    Сообщения доходят нормально. Мне важно понять, как сделать так, чтобы файлы приходили сразу на почту. Пробовала разные варианты. Либо перестает работать форма, либо приходит файл, который не открывается....
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    ошибку покажи
    --- Добавлено ---
    неправильно
    --- Добавлено ---
    у тебя тут вообще не прикрепляются файлы

    https://github.com/PHPMailer/PHPMailer
     
  5. OlgaWhite

    OlgaWhite Новичок

    С нами с:
    1 июн 2018
    Сообщения:
    4
    Симпатии:
    0
    Я знаю, что сейчас файлы у меня не прикрепляются вообще никак. Я об этом написала....

    Я запуталась....
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    https://github.com/PHPMailer/PHPMailer
    --- Добавлено ---
    PHP:
    1. //Attachments
    2.     $mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
    3.     $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name