Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577

Проверка формата загружаемого файла

22.12.2014, 13:59. Показов 2283. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
if ($_FILE['file_ava']['type'] == "image/gif" || $_FILE['file_ava']['type'] == "image/png" || $_FILE['file_ava']['type'] == "image/jpeg")
{
//продолжаем загрузку
}
else {// тут если файл не картинка}
Что не правильно ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.12.2014, 13:59
Ответы с готовыми решениями:

Проверка формата загружаемого файла
Есть проблемос. У меня есть скрипт: <html> <font face="Arial"> <head> <title>Результат загрузки файла</title> ...

Проверка загружаемого файла
Нужно проверить файл на странице оброботки, чтобы он был с именем, в которое входят только английские буквы и цифри. <form...

Проверка типа загружаемого файла
<form method=POST action=p57.php enctype="multipart/form-data"> <input type=file size=50 name=fnam> <br> <input type=submit...

20
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.12.2014, 14:10
FreeZon, а что не работает?

Добавлено через 49 секунд
попробуй вот такую проверку
PHP
1
[PHP]if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['file_ava']['name']))  { }else {}
[/PHP]
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
22.12.2014, 15:02
Цитата Сообщение от FreeZon Посмотреть сообщение
Что не правильно ?
Если бы Вы включили отображение ошибок, то увидели бы такую ошибку:
Code
1
Notice: Undefined variable: _FILE
Из которой ясно что переменная $_FILE не определена. И тогда Вы бы догадались, что там нужно использовать $_FILES а не $_FILE.

Вывод: никогда не отключайте вывод ошибок...
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 4
22.12.2014, 15:18
Вывод: никогда не отключайте вывод ошибок...
Мысль правильная, но сформированна не совсем корректно.
Во первых речь идет не о выводе ошибок, а о выводе вспомогательных уведомлений т.е. notice-ов. Тут вы полностью правы - в процессе разработки необходимо обязательно их выводить и если они появляются разбираться почему так случилось и исправлять. Может показаться, что все работает и без исправлений, но это не так.
Во вторых, если вы выкладываете свой код в интернет, то на этом сервере наоборот все сообщений об ошибках должны быть скрыты.

Какой вывод? На серевере разработки - ОБЯЗАТЕЛЬНО выводим все ошибки, а на продкашен сервере - ОБЯЗАТЕЛЬНО скрываем все ошибки.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
22.12.2014, 15:48
Цитата Сообщение от bushart Посмотреть сообщение
Мысль правильная, но сформированна не совсем корректно.
Во первых речь идет не о выводе ошибок, а о выводе вспомогательных уведомлений т.е. notice-ов. Тут вы полностью правы - в процессе разработки необходимо обязательно их выводить и если они появляются разбираться почему так случилось и исправлять. Может показаться, что все работает и без исправлений, но это не так.
Во вторых, если вы выкладываете свой код в интернет, то на этом сервере наоборот все сообщений об ошибках должны быть скрыты.
Какой вывод? На серевере разработки - ОБЯЗАТЕЛЬНО выводим все ошибки, а на продкашен сервере - ОБЯЗАТЕЛЬНО скрываем все ошибки.
Вы думаете я этого не знаю, для чего Вы это написали? Когда человек научится программировать, он сам решит что ему уже можно отключать вывод. А на такой стадии их категорически отключать нельзя. Ни уровня E_NOTICE ни уровня E_STRICT.

Не по теме:

Детям говорят "не открывай дверь незнакомым людям!". И ничего больше. Так им будет проще запомнить. Им никто не объясняет, что незнакомец может оказаться бандитом, который украдет все ценности из дома, похитит ребенка. Но несмотря на этом, незнакомец может оказаться простым почтальоном который принес извещение о том что Вы выиграли в каком нибудь розыгрыше, и Вам нужно сходить на почту забрать приз.... Когда дети вырастают они открывают эти двери, даже незнакомым... Может так Вам будет понятнее...

0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
22.12.2014, 16:54  [ТС]
Цитата Сообщение от Виталюска Посмотреть сообщение
попробуй вот такую проверку
Крч не работает...Вот мой код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if (preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['file_ava']['name']))
                {
                    if(preg_match('<\A[^\\\\/:\*\?"\<\>\|]+\Z>', $_FILES['file_ava']['filename']) ) 
                    {
                        $ava_tmp = $_FILES['file_ava']['tmp_name'];
                        $ava_name = $FILES['file_ava']['name'];
                        move_uploaded_file($ava_tmp,"/images/".$ava_name);
                        include "/include/bd_connect_user.php";
                        $login = varFilters($_POST['login']);
                        $password = mysql_real_escape_string(varFilters($_POST['password']));
                        $pol = varFilters($_POST['r1']);
                        $ava = "http:/vktools.tk/images/".$ava_name;
                        $sql_add = "INSERT INTO `user1680_vktools`.`site_user` (`Id`, `group`, `UserName`, `avatar`, `Password`, `email`, `sex`) VALUES (NULL, '2', '$login', '$ava', '$password', '$email', '$pol');";
                        mysql_query($sql_add);
                        mysql_close();
                        $error_reg = "Готово!";
                    } 
                    else 
                    {
                        $error_reg = 'Имя загружаемой аватарки содержит запрещенные символы';
                    }
                }
                else {$error_reg = "Недопустимый формат изображения ...";}
HTML5
1
2
3
4
5
6
<form action="<?=$_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">
<label>Выберите аватар с компьютера (.jpg .png .gif):</label> <div class="input-control file" data-role="input-control">
                        <input name="file_ava" type="file" tabindex="-1" style="z-index: 0;"><input type="text" readonly="" style="z-index: 1; cursor: default;" >
                        <button class="btn-file" type="button"></button>
                    </div>
</form>
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.12.2014, 16:57
Цитата Сообщение от FreeZon Посмотреть сообщение
Крч не работает...
так а что не работает, какие ошибки выдаёт?
0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
22.12.2014, 17:21  [ТС]
Цитата Сообщение от Виталюска Посмотреть сообщение
так а что не работает, какие ошибки выдаёт?
В том то и дело... что в конфиге прописано: error_reporting(8191); // Все ошибки...
А у меня белый экран. Давайте я вам щяс всю страницу скину register.php

Добавлено через 1 минуту
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
<?php
session_start();
include "/include/methods.php";
if ($_POST['btn_reg'])
{
    if (!empty($_POST['login']) && !empty($_POST['password']) && !empty($_POST['password_2']))
    {
        if ($_POST['capcha_key'] == $_SESSION['captcha_keystring'])
        {
            if ($_POST['password'] == $_POST['password_2'])
            {
                if (preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['file_ava']['name']))
                {
                        $ava_tmp = $_FILES['file_ava']['tmp_name'];
                        $ava_name = $FILES['file_ava']['name'];
                        move_uploaded_file($ava_tmp,"/images/".$ava_name);
                        include "/include/bd_connect_user.php";
                        $login = varFilters($_POST['login']);
                        $password = mysql_real_escape_string(varFilters($_POST['password']));
                        $pol = varFilters($_POST['r1']);
                        $ava = "http:/vktools.tk/images/".$ava_name;
                        $sql_add = "INSERT INTO `user1680_vktools`.`site_user` (`Id`, `group`, `UserName`, `avatar`, `Password`, `email`, `sex`) VALUES (NULL, '2', '$login', '$ava', '$password', '$email', '$pol');";
                        mysql_query($sql_add);
                        mysql_close();
                        $error_reg = "Готово!";
                        
                }
                else {$error_reg = "Недопустимый формат изображения ...";}
            }
            else {$error_reg = "Введенные пароли не совпадают.";}
        }
        else {$error_reg = "Капча введена не верно.";}
    }
    else {$error_reg = "Вы заполнили не все поля.<br>Введенные пароли не совпадают.";}
}
else {}
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">
<div id="error_reg" style="padding-left:15px;color:red;"><?=$error_reg?></div>
<div style="padding: 15px;"><label>Логин:</label> <div class="input-control password"><input type="text" name="login" placeholder="Введите ваш логин для входа..."></div>
<label>Пароль:</label> <div class="input-control password"><input type="password" name="password" placeholder="Введите ваш пароль для входа..."><button class="btn-reveal"></button></div>
<label>Повторите пароль:</label> <div class="input-control password"><input type="password" name="password_2" placeholder="Повторите ваш пароль..."><button class="btn-reveal"></button></div>
<label>Адрес электронной почты:</label> <div class="input-control password"><input type="email" name="email" placeholder="example@site.ru"></div>
<label style="padding-right: 15px;display: inline-block;">Ваш пол:</label> 
                        <div class="input-control radio inline-block" data-role="input-control">
                            <label class="inline-block">
                                <input type="radio" value="man" name="r1" checked="">
                                <span class="check"></span>
                                Мужской
                            </label>
                            <label class="inline-block">
                                <input type="radio" value="wooman" name="r1">
                                <span class="check"></span>
                                Женский
                            </label>
                        </div>
<label>Выберите аватар с компьютера (.jpg .png .gif):</label> <div class="input-control file" data-role="input-control">
                        <input name="file_ava" type="file" tabindex="-1" style="z-index: 0;"><input type="text" readonly="" style="z-index: 1; cursor: default;" >
                        <button class="btn-file" type="button"></button>
                    </div>
                    <div id="capcha_reg" style="text-align: center;padding: 15px;" >
                    <img src="/kcaptcha/"/>
                    <div class="input-control"><input style="margin-top: 15px;" type="text" name="capcha_key" placeholder="Введите текст с картинки..."></div>
                    </div>
                    <input type="submit" value="Зарегистрироваться" class="success" style="float: right;margin: 15px;" name="btn_reg">
</div>
</form>
Добавлено через 2 минуты
methods.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
error_reporting(8191);
function ToRedirect($url) 
{
    echo "<script>window.location.href='$url';</script>";
}
function varFilters($var) 
{
    $var = strip_tags($var);
    $var = trim($var);
    $var = stripslashes($var);
    $var = htmlspecialchars($var);
    $result = $var;
    return $result;
}
?>
bd_connect_user.php

PHP
1
2
3
4
5
6
7
8
9
<?php
$bd_user_host = 'хост';
$bd_user_login = 'логин';
$bd_user_pass = 'пасс'; 
$bd_DB = 'бд нэйм';
$bd_TABLE = 'таблица';
$bd_conn_db = mysql_connect($bd_user_host,$bd_user_login,$bd_user_pass); 
mysql_select_db($bd_DB);
?>
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.12.2014, 17:21
FreeZon, у тебя там ошибок море
вот пробуй
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
<form action="" method="post" enctype="multipart/form-data">
<label>Выберите аватар с компьютера (.jpg .png .gif):</label> <div class="input-control file" data-role="input-control">
                        <input type="file" tabindex="-1" style="z-index: 0;" name="file_ava"><input type="text" name="file_ava" readonly="" style="z-index: 1; cursor: default;" >
                        <input type="submit" name="sent" value="Добавить">
                    </div>
</form>
<?php
 
if (preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['file_ava']['name']))
                {
                    if(preg_match('<\A[^\\\\/:\*\?"\<\>\|]+\Z>', $_FILES['file_ava']['name']) ) 
                    {
                        $ava_tmp = $_FILES['file_ava']['tmp_name'];
                        $ava_name = $_FILES['file_ava']['name'];
                        move_uploaded_file($ava_tmp,"/images/".$ava_name);
                        include "/include/bd_connect_user.php";
                        $login = varFilters($_POST['login']);
                        $password = mysql_real_escape_string(varFilters($_POST['password']));
                        $pol = varFilters($_POST['r1']);
                        $ava = "http:/vktools.tk/images/".$ava_name;
                        $sql_add = "INSERT INTO `user1680_vktools`.`site_user` (`Id`, `group`, `UserName`, `avatar`, `Password`, `email`, `sex`) VALUES (NULL, '2', '$login', '$ava', '$password', '$email', '$pol');";
                        mysql_query($sql_add);
                        mysql_close();
                        $error_reg = "Готово!";
                    } 
                    else 
                    {
                        $error_reg = 'Имя загружаемой аватарки содержит запрещенные символы';
                    }
                }
                else {$error_reg = "Недопустимый формат изображения ...";}
 
?>
0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
22.12.2014, 18:17  [ТС]
Цитата Сообщение от Виталюска Посмотреть сообщение
у тебя там ошибок море
Ты хоть ошибки ты выдели... чтобы мне знать какие

Добавлено через 3 минуты
Цитата Сообщение от Виталюска Посмотреть сообщение
вот пробуй
Все равно белый экран

Добавлено через 47 минут
...
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.12.2014, 18:55
Цитата Сообщение от FreeZon Посмотреть сообщение
Все равно белый экран
что белый экран? Что вообще даже форму не выводит?
0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
22.12.2014, 19:03  [ТС]
Цитата Сообщение от Виталюска Посмотреть сообщение
что белый экран? Что вообще даже форму не выводит?
Белый экран становиться когда код достигает этой строки:
PHP
1
if (preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['file_ava']['name']))
Или этой
PHP
1
if(preg_match('<\A[^\\\\/:\*\?"\<\>\|]+\Z>', $_FILES['file_ava']['name']) )
До этих строчек код выполняется нормально без ошибок

Добавлено через 4 минуты
весь код я выше указал
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.12.2014, 19:04
Цитата Сообщение от FreeZon Посмотреть сообщение
До этих строчек код выполняется нормально без ошибок
ну вообще он у тебя с этих строчек только начинает выполняться. ты пробовал мою страницу которую я тебе скинул одним текстом? скапируй так как у меня и запихай все в один файл и попробуй. у меня все работает
0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
22.12.2014, 19:09  [ТС]
....

Добавлено через 2 минуты
Цитата Сообщение от Виталюска Посмотреть сообщение
ну вообще он у тебя с этих строчек только начинает выполняться. ты пробовал мою страницу которую я тебе скинул одним текстом? скапируй так как у меня и запихай все в один файл и попробуй. у меня все работает
Вот весь код: https://vk.com/doc213967748_353032147
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.12.2014, 19:13
FreeZon, ты даже не скопировал то что я тебе скинул
у тебя ошибка в $ava_name = $FILES['file_ava']['name'];
должно быть $ava_name = $_FILES['file_ava']['name'];
неужели браузер тебе не выводит ошибки
0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
22.12.2014, 19:28  [ТС]
Цитата Сообщение от Виталюска Посмотреть сообщение
неужели браузер тебе не выводит ошибки
ДА! не чего он не выводит... Если бы выводил я бы знал где и что... А так я в слепую все пишу.
0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
22.12.2014, 19:42  [ТС]
Цитата Сообщение от Виталюска Посмотреть сообщение
ты даже не скопировал то что я тебе скинул
в том то и дело, то что я вставил, то что ты отправил...
У меня нету такого $FILE
скрин смоотри
Миниатюры
Проверка формата загружаемого файла  
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.12.2014, 20:02
FreeZon, ну значит исправил т.к. по ссылке
Цитата Сообщение от FreeZon Посмотреть сообщение
там есть эта ошибка, покажи скрин что он делает на сайте
0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
22.12.2014, 22:05  [ТС]
Цитата Сообщение от Виталюска Посмотреть сообщение
там есть эта ошибка, покажи скрин что он делает на сайте
https://vktools.tk/register.php
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.12.2014, 23:32
Цитата Сообщение от FreeZon Посмотреть сообщение
action="<?=$_SERVER['PHP_SELF']?>"
попробуй вместо этого просто action=""
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.12.2014, 23:32
Помогаю со студенческими работами здесь

Проверка размера загружаемого файла
Суть проблемы вот в чем: есть некоторая проверка размера загружаемого файла прямо в форме, на php, что-нибудь вроде: if ($_FILES...

Проверка сторон загружаемого изображения
Здравствуйте друзья! Требовалось проверить стороны загружаемого изображения, чего я добился функцией getimagesize() ...

Размер загружаемого файла
Здравствуйте. Есть задача загрузить на сайт книги с расширением fb2. Загружаю с помощью следующего кода: &lt;p&gt; ...

Переименование загружаемого файла
Вопрос: Как переименовать фаил при загрузке его на сервер через форму!? Можно ли в этом случае использовать int rename ( string old,...

Размер загружаемого файла
Приветствую. Такая проблема: необходимо узнать размер загружаемого файла на сервер до его загрузки. На сколько я понял, это не под силу...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru