Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
1 / 0 / 0
Регистрация: 16.05.2018
Сообщений: 62

Что не так с кодом?

15.01.2020, 00:12. Показов 3810. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$surname = $_POST['surname'];
$name = $_POST['name'];
$workName = $_POST['workName'];
$tel = $_POST['tel'];
$email = $_POST['email'];
$age = $_POST['age'];
$sity = $_POST['sity'];
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file']['tmp_name'])));
 
$message.= 'Content-Type: application/octet-stream; name="attachment.jpg"'.'\n';
$message.= 'Content-Transfer-Encoding: base64'.'\n';
$message.= 'Content-Disposition: attachment'.'\n\n';
$message.= $attachment.'\n';
 
mail("mail@mail.ru", "Заявка с сайта", "Фамилия:".$surname.". Имя: ".$name. ". Название работы: ".$workName. ". Телефон: ".$tel. ". E-mail: ".$email. ". Возраст: ".$age. ". Населенный пункт: ".$sity.$message, "From: mail2@mail.ru \r\n");
?>
Форма должна отправлять на mail данные полей + файл img. Вместо этого приходит такое сообщение:

Фамилия:. Имя: hgyg. Название работы: kjyfyt. Телефон: 4787. E-mail: kalinkasteisi@mail.ru. Возраст: 10. Населенный пункт: mhytfContent-Type: application/octet-stream; name="attachment.jpg"\nContent-Transfer-Encoding: base64\nContent-Disposition: attachment\n\n
\n

Что я делаю не так? Почему не приходит файл?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.01.2020, 00:12
Ответы с готовыми решениями:

Что не так с рабочим кодом?
Подскажите, что не так с кодом: $import_contacts_url = 'https://адрес_куда_отправляем'; function send_request($url,...

Что не так с кодом? Почему выдает ошибку?
Есть php код, но он не работает. Выдает ошибку (Fatal error: Call to undefined function password_hash() in...

php order desc что не так с кодом
Всем привет. Делаю сайт, встала проблема нужна сортировка новостей. Как бы не пробовал ничего не получается. &lt;?php $sql = 'SELECT...

47
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
18.01.2020, 13:53
Нет уникальных меток, два раз встречаются подряд \n, впрочем сами смотрите - это мой вариант для таких случаев (пользовался много лет назад, скачал где-то на просторах интернета, потом использовал phpmailer, сейчас рекомендую sfiftmailer). попробуйте для вашего случая:
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
if (isset($_POST['email'])) {
    $surname = $_POST['surname'];
    $name = $_POST['name'];
    $workName = $_POST['workname'];
    $tel = $_POST['tel'];
    $email = $_POST['email'];
    $age = $_POST['age'];
    $sity = $_POST['sity'];
    $mailto = "mail@mail.ru";
    $from_mail = "mail@mail.ru";
    $replyto = "mail@mail.ru";
    $from_name = "My site`s service";
    $subject = 'Сообщение с сервиса';
    $subject= '=?utf-8?B?' . base64_encode($subject) . '?=';
    $message = "Фамилия:".$surname.".<br/>
        Имя: ".$name. ".<br/>
        Название работы: ".$workName. ".<br/>
        Телефон: ".$tel. ".<br/>
        E-mail: ".$email. ".<br/>
        Возраст: ".$age. ".<br/>
        Населенный пункт: ".$sity."<br/>
        Дополнительная информация для адресата может быть здесь<br/>";
    $filename = $_FILES["file"]["name"];
    $content = chunk_split(base64_encode(file_get_contents($_FILES["file"]["tmp_name"])));
    $uid = md5(uniqid(time()));
    $header = "From: " . $from_name . " <" . $from_mail . ">\r\n";
    $header .= "Reply-To: " . $replyto . "\r\n";
    $header .= "MIME-Version: 1.0\r\n";    
    $header .= "Content-Type: multipart/mixed; boundary=\"" . $uid . "\"\r\n\r\n";
    $body = "This is a multi-part message in MIME format.\r\n";
    $body .= "--" . $uid . "\r\n";
    $body .= "Content-type:text/html; charset=utf-8\n";
    $body .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $body .= "<div>" . $message . "</div>\r\n\r\n";
 
    $body .= "--" . $uid . "\r\n";
    $body .= "Content-Type: application/octet-stream; name=\"" . $filename . "\"\r\n"; // use different content types here
    $body .= "Content-Transfer-Encoding: base64\r\n";
    $body .= "Content-Disposition: attachment; filename=\"" . $filename . "\"\r\n\r\n"; // For Attachment
    $body .= $content . "\r\n\r\n";
    $body .= "--" . $uid . "--";
    if (mail($mailto, $subject, $body, $header)) {
    echo "<p>Письмо успешно отправлено</p>"; // or use booleans here
    } else {
    echo "<p>Письмо не удалось отправить</p><pre>";
    print_r(error_get_last());
    echo '</pre>';
    }
}
?>
0
1 / 0 / 0
Регистрация: 16.05.2018
Сообщений: 62
18.01.2020, 22:15  [ТС]
Спасибо за ответ. Не работает. У меня почему то приходит на почту пустой файл с названием файла, который я отправляю
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
19.01.2020, 13:00
Steisi1982, \n в одинарных кавычках означает просто 2 символа, а не один символ новой строки. Оберните все символы переноса строки в двойные кавычки.
0
1 / 0 / 0
Регистрация: 16.05.2018
Сообщений: 62
19.01.2020, 21:10  [ТС]
Как это правильно сделать? Покажите пожалуйста на примере одной строки. Например, этой
$body .= "Content-Disposition: attachment; filename="" . $filename . ""\r\n\r\n";
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
19.01.2020, 22:34
Цитата Сообщение от Steisi1982 Посмотреть сообщение
$body .= "Content-Disposition: attachment; filename="" . $filename . ""\r\n\r\n";
PHP
1
$body .= "Content-Disposition: attachment; filename='$filename'\r\n\r\n";
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
20.01.2020, 18:31
Как дела? Удалось настроить скрипт?
Цитата Сообщение от Steisi1982 Посмотреть сообщение
Спасибо за ответ. Не работает. У меня почему то приходит на почту пустой файл с названием файла, который я отправляю
Остальные параметры ($name, $email, $tel и прочие) приходят? Только файл не пересылается? А он загружается через форму? Какое значение у параметра $_FILES['file']['size']?
0
1 / 0 / 0
Регистрация: 16.05.2018
Сообщений: 62
20.01.2020, 23:56  [ТС]
Остальные параметры доходят нормально. Проблема только с файлом. Приходит пустой файл с названием и расширением, как у прикрепляемого файла, и размером 0мб. Пересылается ли файл я не знаю. Я только изучаю php, и моих знаний не достаточно, чтобы ответить на этот вопрос. Где посмотреть значение параметра $_FILES['file']['size']? В коде его нет
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
21.01.2020, 12:09
думаю, ваша проблема решаема. пока что сделайте так:
между первой и второй строчками кода вставьте код
PHP
1
2
3
4
5
6
if (isset($_POST['email'])) {
    echo '<p>Максимально допустимый размер загружаемого файла: <strong>'.ini_get(('upload_max_filesize')).'</strong></p>';
    echo '<pre>';
    print_r($_FILES);
    echo '</pre>';
    $surname = $_POST['surname'];
и дальше сам код
запустите скрипт снова и проверьте, что выводит скрипт. потом отпишитесь мне.
0
1 / 0 / 0
Регистрация: 16.05.2018
Сообщений: 62
21.01.2020, 21:51  [ТС]
Скрипт ничего не выводит. Но я заметила, что небольшой svg-файл (29кб) доходит, не доходят изображения в формате jpg. Хотя у меня

HTML5
1
<input id="file" name="file" type="file" accept="image/*" required>
И должны доходить любые изображения
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
21.01.2020, 22:12
Steisi1982, возможно, проблема в директивах upload_max_filesize и/или post_max_size
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
22.01.2020, 10:50
Цитата Сообщение от Steisi1982 Посмотреть сообщение
Скрипт ничего не выводит. Но я заметила, что небольшой svg-файл (29кб) доходит, не доходят изображения в формате jpg
Дело не в формате файла, а в его размере. Как же это коротко объяснить.. На сервере (где размещаются сайты) есть разные настройки. Есть там и настройки по загрузке файлов. Основные для нас вот эти:
post_max_size - максимальный размер разрешенных данных для формы
upload_max_filesize - максимальный размер загружаемых файлов
memory_limit - определяет лимит памяти для одного скрипта
по умолчанию стоит upload_max_filesize = 2М, и, если размер файла больше этого значения, то файл не будет загружен, передано будет только его название.
Видимо, неправильно был вставлен тестовый скрипт. Ваши действия следующие:
1. Вместо всех скриптов вставьте этот код:
PHP
1
2
3
4
5
6
7
8
9
echo '<p>Максимально допустимый размер загружаемого файла: <strong>'.ini_get('upload_max_filesize').'</strong></p>';
echo '<p>Максимально допустимый размер разрешенных данных для формы: <strong>'.ini_get('post_max_size').'</strong></p>';
echo '<p>Лимит памяти для одного скрипта: <strong>'.ini_get('memory_limit').'</strong></p>';
if (isset($_POST['email'])) {
echo '<p>Данные формы успешно загружены. Информация о загруженном файле:</p>';
    echo '<pre>';
    print_r($_FILES);
    echo '</pre>';
}
если все правильно, должно вывести примерно вот это:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
Array
(
    [file] => Array
        (
            [name] => минус.jpg
            [type] => image/jpeg
            [tmp_name] => C:\Windows\Temp\php6586.tmp
            [error] => 0
            [size] => 46518
        )
 
)
то есть error должен быть 0, а size>0. Если это не так, то ваши действия:
2. Пробуем примитивный метод увеличения размеров загружаемых файлов (может и не работать - зависит от провайдера)
в самом начале php файла, где запускаются скрипты, вставьте вот этот код:
PHP
1
2
3
ini_set( 'upload_max_size' , '12M' );
ini_set( 'post_max_size', '13M');
ini_set( 'memory_limit', '15M' );
снова запускаем скрипт в пункте 1. если не помогает (error>0, size=0), пробуем через файл .htaccess.
3. не знаю, какой у вас провайдер. надо открыть директорию файлов сайта на сервере через панель управления или другим инструментом и найти в корне этот файл .htaccess (названия нет, только точка и расширение htaccess). открываем его в тектсовом редакторе notepad и ищем строки php_value upload_max_filesize и php_value post_max_size. меняем их значения на 18М и 20М соответственно. Если этих строк нет, то просто вставляем их. Должно получиться примерно так:
PHP
1
2
php_value upload_max_filesize 18M
php_value post_max_size 20M
и еще найдите и отредактируйте следующие строки (или добавьте их, если их нет)
PHP
1
2
php_value max_execution_time 500 
php_value max_input_time 500
снова запускаем скрипт в пункте 1. если не помогает (error>0, size=0), то остается только договариваться с провайдером или запускать файлы можно только не превышающие размер ini_get('upload_max_filesize'). JS fileapi на клиенте я тут не знаю как вкратце объяснить.
Пишите о результатах
0
1 / 0 / 0
Регистрация: 16.05.2018
Сообщений: 62
24.01.2020, 23:27  [ТС]
Я не очень поняла куда вставлять этот код
PHP
1
2
3
4
5
6
7
8
9
echo '<p>Максимально допустимый размер загружаемого файла: <strong>'.ini_get('upload_max_filesize').'</strong></p>';
echo '<p>Максимально допустимый размер разрешенных данных для формы: <strong>'.ini_get('post_max_size').'</strong></p>';
echo '<p>Лимит памяти для одного скрипта: <strong>'.ini_get('memory_limit').'</strong></p>';
if (isset($_POST['email'])) {
echo '<p>Данные формы успешно загружены. Информация о загруженном файле:</p>';
    echo '<pre>';
    print_r($_FILES);
    echo '</pre>';
}
Вместо этого
PHP
1
2
3
4
5
6
7
if (mail($mailto, $subject, $body, $header)) {
    echo "<p>Письмо успешно отправлено</p>"; // or use booleans here
    } else {
    echo "<p>Письмо не удалось отправить</p><pre>";
    print_r(error_get_last());
    echo '</pre>';
 }
Да?
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
25.01.2020, 11:48
нет. это отладочный скрипт. ВЕСЬ мой код замените этим. когда настроите - отладочный скрипт этот убираете и вставляете нужный код
0
1 / 0 / 0
Регистрация: 16.05.2018
Сообщений: 62
25.01.2020, 23:22  [ТС]
Тогда не работает. Он вообще ничего не выдает. Да и сам скрипт тоже не выдает сообщения об успешной отправке формы. Попробовала без cms. Тоже файл пустой приходит. Наверное нужно действительно на хостинг писать
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
26.01.2020, 13:51
создайте обычный пустой файл и назовите его, например, tester.php. в этот файл вставьте код:
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
<?php
header('Content-Type: text/html; charset=utf-8');
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
 
echo '<p>Максимально допустимый размер загружаемого файла: <strong>'.ini_get('upload_max_filesize').'</strong></p>';
echo '<p>Максимально допустимый размер разрешенных данных для формы: <strong>'.ini_get('post_max_size').'</strong></p>';
echo '<p>Лимит памяти для одного скрипта: <strong>'.ini_get('memory_limit').'</strong></p>';
if (isset($_POST['email'])) {
echo '<p>Данные формы успешно загружены: email='.
    htmlspecialchars($_POST['email'], ENT_QUOTES, 'utf-8').';<br/>';
echo 'Информация о загруженном файле:</p>';
    echo '<pre>';
    print_r($_FILES);
    echo '</pre>';
}
?>
<form enctype="multipart/form-data" action="" method="POST">
<label for="email">Email</label>
<input type="text" name="email" id="email" value=""/><br/>
<input type="hidden" name="MAX_FILE_SIZE" value="10000000"/>
<label for="file">File</label>
<input type="file" name="file" id="file" value=""/><br/>
<p><input type="submit" value="Send"/></p>
</form>
сохраните файл и разместите его в корне сайта (туда, где все скрипты загружены).
в браузере наберите адрес http://ваш_домен/tester.php
должны будут отобразиться следующие сообщения:
HTML5
1
2
3
Максимально допустимый размер загружаемого файла: ?M
Максимально допустимый размер разрешенных данных для формы: ?M
Лимит памяти для одного скрипта: ?M
где вместо ? должно быть какое-то число, а под ними
должна будет отобразиться форма с полями Email, File и кнопкой Sent
заполните форму и нажмите на кнопку Sent
если все сделали правильно, то над формой должно появиться примерно такое сообщение
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Данные формы успешно загружены: email=entered_email@dsd.ru;
Информация о загруженном файле:
 
Array
(
    [file] => Array
        (
            [name] => uploads_file_name.jpg
            [type] => image/jpeg
            [tmp_name] => C:\Windows\Temp\phpBBD1.tmp
            [error] => 0
            [size] => 4713
        )
 
)
попробуйте это сделать и напишите о результатах
0
Невнимательный
 Аватар для ft4l
3107 / 1277 / 358
Регистрация: 08.02.2013
Сообщений: 7,463
Записей в блоге: 2
26.01.2020, 16:45
Лучший ответ Сообщение было отмечено Steisi1982 как решение

Решение

Попробовал в линуксе, немного поменял
Кликните здесь для просмотра всего текста
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
<?php
    header('Content-type: text/html; charset=utf-8');
 
    $TO     ='mail@mail.ru'; // "mail@mail.ru"
    $FROM   ='mail@mail.ru'; // "mail@mail.ru"
 
    $ERRORS = [];
    $STATUS = 0;
/*
    define('CRITICAL_ERROR',    1); 
    define('OTHER_ERROR',       2); 
    define('TEXT_IS_OK',        4);
    define('ALL_IS_OK',         8);
    define('SEND',              16);
 */
    $email = $name = $surname = $workName = $tel = $age = $sity = '';
    $FIELDS =[
        'email' =>  [1,'Ваш email'], // 1 is 'required'
        'name' =>   [1,'Ваше имя'],
        'surname' =>[0,'Ваша фамилия'],
        'workName' =>[0,'Ваше место работы'],
        'tel' =>    [0,'Ваш телефон'],
        'age' =>    [0,'Ваш возраст'],
        'sity' =>   [0,'Ваш город']
    ];
if ($_SERVER['REQUEST_METHOD']=='POST'&& empty($_POST)){
    $ERRORS[]='Your data is not received, Make You sure they aren\'t too big';
    $STATUS = 1;    // CRITICAL_ERROR
}
elseif (isset($_POST['email'])) {
    $email = filter_var(trim($_POST['email']), FILTER_VALIDATE_EMAIL);
   if (!$email) {
        $ERRORS[]='Sorry, Your email isn\'t valid';
        $STATUS = 1;    // CRITICAL_ERROR
    }
    function to_utf($str) { // для всяких %FF
        global $STATUS;
        if (preg_match('##u', $str)) return $str;
        $STATUS |=  2; // OTHER_ERROR
        return trim(iconv("UTF-8", "UTF-8//IGNORE", $val));
    }
    function str_post(&$ARR, $key){
        $val = (isset($ARR[$key]))? trim($ARR[$key]): '';
        $val = to_utf($val);
        if(empty($val)) return '';
        $val = preg_replace( // для всяких %00
            ['#[\x00-\x1f\x7f]+#', '#\s+#'], //все управляющие символы включая переносы строк и табуляцию
            ['', ' '], // пробелы наверное просто надо оставить не больше одного подряд ??
            $val
        );
        return trim($val);
    }
    foreach(array_slice(array_keys($FIELDS), 1) AS $k) { // все кроме email
        $$k = str_post($_POST, $k);
        if(($FIELDS[$k][0]) && empty($$k)) { // обязательные поля кроме email
            $ERRORS[]="Sorry, field '{$FIELDS[$k][1]}' is empty";
            $STATUS |= 1; // CRITICAL_ERROR
        }
    }
    if (!($STATUS & 1)) $STATUS |= 4;//     TEXT_IS_OK if no CRITICAL_ERROR
 
}
 
if (($STATUS & 4) && isset($_FILES['file'])) { // if TEXT_IS_OK
 
    $filename = basename(str_post($_FILES["file"], 'name'));
    if (empty($filename)) {
        $ERRORS[]="Sorry, filename is empty or unrecognized";
        $STATUS |= 1; // CRITICAL_ERROR     
    }
    if ($_FILES["file"]['size'] == 0){
        $ERRORS[]="Sorry, was received empty file";
        $STATUS |= 1; // CRITICAL_ERROR     
    }
    if($_FILES["file"]['error']) {
         $arr = [
            1 => 'Размер принятого файла превысил upload_max_filesize',
            2 => 'Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме',
            3 => 'Загружаемый файл был получен только частично',
            4 => 'Файл не был загружен',
            6 => 'Отсутствует временная папка',
            7 => 'Не удалось записать файл на диск',
            8 => 'PHP-расширение остановило загрузку файла'
        ];
        $ERRORS[]=  $arr[$_FILES["file"]['error']] ?? 'Unknown error';
        $STATUS |= 1; // CRITICAL_ERROR     
    }
    if (!($STATUS & 1) // no CRITICAL_ERROR
     && is_uploaded_file($_FILES['file']['tmp_name'])) { // лучше перебдеть чем недобдеть )))
        $content = chunk_split(base64_encode(file_get_contents($_FILES["file"]["tmp_name"])));
        $STATUS |= 8; // ALL_IS_OK
    }
}
 
if($STATUS & 8) { // if ALL_IS_OK
    $from_name = "My site`s service";
    $subject = 'Сообщение с сервиса from '.$email;
  
    $from_name = '=?utf-8?B?' . base64_encode($from_name) . '?=';// если русские буквы вместо "My site`s service";
    $subject= '=?utf-8?B?' . base64_encode($subject) . '?=';
    $uid = md5(uniqid(time()));
 
    $header = <<<E
From: $from_name <{$FROM}>
Reply-To: $FROM
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="$uid"
 
 
E
;
    $body = <<<E
This is a multi-part message in MIME format
--$uid
Content-type:text/html; charset=utf-8
Content-Transfer-Encoding: 7bit
 
<div>
<ol>
<li>E-mail: {$email}
<li>Имя: $name
<li>Фамилия: $surname
<li>Место работы:    {$workName}
<li>Телефон:     $tel
<li>Возраст: $age
<li>Населенный пункт:    $sity
</ol>
</div>
 
--$uid
Content-Type: application/octet-stream; name="$filename"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="$filename"
 
$content
 
--$uid--
E
;
    if (! mail($TO, $subject, $body, $header)) {
        $ERRORS[]= 'mail() error. Message: <pre>' . var_export(error_get_last()) ."</pre>\n";
        $STATUS |= 1; // CRITICAL_ERROR     
    } else $STATUS |= 16; // SEND
}
/*
echo '<p>Максимально допустимый размер загружаемого файла: <strong>'.ini_get('upload_max_filesize').'</strong></p>';
echo '<p>Максимально допустимый размер разрешенных данных для формы: <strong>'.ini_get('post_max_size').'</strong></p>';
echo '<p>Лимит памяти для одного скрипта: <strong>'.ini_get('memory_limit').'</strong></p>';
*/
?>
<!DOCTYPE html>
<html><head>
    <title>xxx</title>
    <style>
    html    {padding:0; margin:0; width:100%;
background:url(data:image/gif;base64,R0lGODdhAQAGALEAAABtAP//AG0AAAAAACwAAAAAAQAGAAACBAQSIgUAOw==) 0/contain repeat-x;}
    body    {width:88%; margin:1ex auto; padding:1ex 1em; background:#EEE; border-radius: 1em;}
    .frm    {width:70%; margin:1em auto; border:solid 2pt #074;}
    .frm *  {font:600 102% serif; padding:3pt;}
    .frm i  {color:#008; font:500 100% obligue, sans;}
    .frm input  {float:right; clear:right; width:40%; margin:2pt;}
    .frm span   {float:right; margin:0 1em;}
    .required   {color:#700; }
    .required::after    {content: "→";}
    .err    {background:%EE5; color:red;}
    </style>
</head>
<body>
<header></header>
<nav></nav>
<?php
 
if ($STATUS & 3) { //
    echo '<dl class="err">'."\n";
    foreach(array_keys($ERRORS) AS $k)
        echo '<dt>Ошибка</dt><dd>'.$ERRORS[$k].'</dd>';
    if ($STATUS & 2)        echo '<dt>Сообщение</dt><dd>В некоторых данных кодировка не соответствовала utf-8</dd>';
    echo '</dl>'."\n";
    echo '<xmp>'.var_export($_POST).'</xmp>';
    echo '<xmp>'.var_export($_FILES).'</xmp>';
}
if ($STATUS & 16) echo '<h2>Сообщение отправляется</h2>
    <p>Спустя какое то время возможно получателю его доставят :)<br/>    </p>
';
else {
?>
<form action="?" method="post" enctype="multipart/form-data">
<fieldset class="frm"><legend>test</legend>
<?php
foreach($FIELDS AS $k => $v)
    printf('<input type="text" name="%s" value="%s"%s /><span %s>%s</span>'."\n",
        $k, htmlspecialchars($$k), ($v[0]?' required':''), ($v[0]?'class="required"':''), $v[1]);
?>
<!-- input type="hidden" name="MAX_FILE_SIZE" value="2048000"/ -->
<input type="file" name="file" required /><span class="required">Файл</span>
<!-- accept=".jpg, .jpeg, .gif, .png, .svg" думаю не стоит картинок может не найтись )) -->
<!-- 
<input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" />
это я сам не понял зачем может прикручиваться -->
<input type="submit" value="OK"/>
 
<i> Убедитесь что размер загружаемого файла не превышает <?=ini_get('upload_max_filesize')?></i>
</fieldset>
</form>
<?php
}
?>
<footer>
    <-- iframe height="30%" src="https://www.youtube.com/embed/ySKJaNdG2PY"
        allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
        allowfullscreen>
    </iframe -->
</footer>
</body>
</html>

Вроде нормально работает с \n эти \r\n походу для совместимости с виндовс.
Хотя у меня через sendmail который через smtp gmail с учётными данными их ящика )

Подменяет, как будто, все $FROM реальным... адресом.
Если напрямую слать, даже не знаю как оно отнесётся к левым $FROM
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
26.01.2020, 16:56
Цитата Сообщение от Steisi1982 Посмотреть сообщение
Остальные параметры доходят нормально. Проблема только с файлом.
Если только файл не доходит, то в этом случае левые From вроде проходят. Пробуем отправить файл, что-то пошло не так
0
Невнимательный
 Аватар для ft4l
3107 / 1277 / 358
Регистрация: 08.02.2013
Сообщений: 7,463
Записей в блоге: 2
26.01.2020, 18:58
попытки слать больше чем php может проглотить, просто обнуляют $_POST и $_FILES
втыкеал туда это чтобы заметить
Цитата Сообщение от x_lab Посмотреть сообщение
if ($_SERVER['REQUEST_METHOD']=='POST'&& empty($_POST)){
$ERRORS[]='Your data is not received, Make You sure they aren\'t too big';
$STATUS = 1; // CRITICAL_ERROR
}
хотя тоже неизвестно, возможно не везде так, но вероятно как бы )
и ... английский не знаю ))

файл у меня приходит... ) Только не сразу нашёл где посмотреть прикреплённые файлы

Добавлено через 1 час 13 минут
Цитата Сообщение от x_lab Посмотреть сообщение
<div>
<ol>
<li>E-mail: {$email}
<li>Имя: $name
<li>Фамилия: $surname
Совсем забыл, письмо то в html XSS-инъекции
Нужно все переменные обработать htmlspecialchars() , чтобы не получать на email кучу скриптов и подобного html

ТАк же, нужно делать, на сессиях/куках/файлах наверное, защиту от слишком частой отправки сообщений,
чтобы не попасть в спам листы вроде какое то ограничение есть по частоте получения писем.
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
26.01.2020, 19:06
это однозначно. вот только файл получилось бы отправить. к сожалению ответы редко приходят, и в одно время на форум не попадаем. мой скрипт отправляет файл. просто самому интересно, в чем причина.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.01.2020, 19:06
Помогаю со студенческими работами здесь

Что не так с кодом? ( пытаюсь понять, что не так? )
Есть исходный код. Hook, работает хорошо, но есть минус огромный - перестаёт писать в лог, при открытии программы\игры Фуллскрином. т.е...

что не так с кодом?
Есть кусок кода: .ELSEIF uMsg==WM_CTLCOLOREDIT invoke SetTextColor,wParam,Yellow invoke SetBkColor,wParam,Black invoke...

Что не так с кодом?
Вот условие: Даны натуральные числа n, b0,b1,…,bn.Вычислить: f(b0)+f(b1)+…+f(bn), где f(x)=x^2,если х кратно 3 f(x)=х,если х при...

Что не так с кодом?
Задание Имеется текстовая строка, которая содержит произвольное скобочное выражение (скобки (), , или {}). Необходимо создать функцию...

что не так с кодом?
Только начал изучать программирование по книге Прата С. возникли проблемы с упражнениями в конце второй главы, а именно с 5: Напишите...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru