Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 31.05.2018
Сообщений: 3
1

Форма с прикрепление файлов

31.05.2018, 11:04. Просмотров 538. Ответов 2
Метки нет (Все метки)

Помогите разобраться с прикреплением файлов. Пыталась найти ответ в интернете, но толком ничего не нашла.
Письмо приходит нормально, но только текст. Пробовала разные варианты... Нужно, чтобы приходили прикреплённые файлы. В обработчике формы, который представлен ничего не прописывала (только что касается текстового содержимого).
Что посоветуете?



Форма обратной связи:

HTML5
1
2
3
4
5
6
7
8
9
10
11
<div id="form">
        <form action="mail_form" method="post">
            <p>Имя:</p><input name="name" type="text" required />
            <p>Ваша почта:</p><input name="email" type="text" required />
            <p>Тема:</p><input name="tema" type="text" required />
            <p>Ваш вопрос:</p><textarea name="question" required></textarea>
            <p>Прикрепить файл:</p><input name="files[]" type="file" multiple="" />
            <br />
            <input type="submit" value="отправить" />
        </form>
 </div>


Обработчик формы:

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

Форма обратной связи (прикрепление фото)
Доброго времени суток, есть форма обратной связи. Нужно сделать так чтоб я мог прикреплять...

Сообщения + прикрепление файлов
Имеется личный кабинет, при заходу на чужую страничку можно отправить сообщение. Собственно как...

Прикрепление несколько файлов в обратной связи
Здравствуйте, есть обратная связь с прикреплением файла. Все работает, все круто, но хотелось бы...

Прикрепление файлов к письму без загрузки на сервер
Здравствуйте С формы отправляется письмо с вложенными файлами вложенные к письму файлы...

2
Скрытый в тени
24 / 16 / 6
Регистрация: 07.01.2016
Сообщений: 71
31.05.2018, 11:53 2
Для отправки файлов нужно добавлять атрибут enctype="multipart/form-data". Т.е. будет так:

HTML5
1
<form action="mail_form" method="post" enctype="multipart/form-data">
1
0 / 0 / 0
Регистрация: 31.05.2018
Сообщений: 3
31.05.2018, 13:41  [ТС] 3
Хорошо, допустим.....

Так в обработчик же тоже нужно прописывать какие-то функции, чтобы файл/файлы долетали до почты?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2018, 13:41

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Форма для поиска файлов
Здравствуйте. Необходимо создать форму, в которой есть поле с выпадающим списком и поле, в котором...

Форма отправляет только <20 файлов
Доброго времени суток! Имеется форма, в которой следующая строка: &lt;input type=&quot;file&quot;...

Форма загрузки файлов - не работает
Здравствуйте, уважаемые программисты. Помогите, пожалуйста, поправить код загрузки файлов. Вот сам...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.