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

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

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

Author24 — интернет-сервис помощи студентам
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>Результат...

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

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

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

20
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.12.2014, 14:10 2
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 3
Цитата Сообщение от FreeZon Посмотреть сообщение
Что не правильно ?
Если бы Вы включили отображение ошибок, то увидели бы такую ошибку:
Код
Notice: Undefined variable: _FILE
Из которой ясно что переменная $_FILE не определена. И тогда Вы бы догадались, что там нужно использовать $_FILES а не $_FILE.

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

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

Не по теме:

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

0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
22.12.2014, 16:54  [ТС] 6
Цитата Сообщение от Виталюска Посмотреть сообщение
попробуй вот такую проверку
Крч не работает...Вот мой код:
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 7
Цитата Сообщение от FreeZon Посмотреть сообщение
Крч не работает...
так а что не работает, какие ошибки выдаёт?
0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
22.12.2014, 17:21  [ТС] 8
Цитата Сообщение от Виталюска Посмотреть сообщение
так а что не работает, какие ошибки выдаёт?
В том то и дело... что в конфиге прописано: 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 9
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  [ТС] 10
Цитата Сообщение от Виталюска Посмотреть сообщение
у тебя там ошибок море
Ты хоть ошибки ты выдели... чтобы мне знать какие

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

Добавлено через 47 минут
...
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.12.2014, 18:55 11
Цитата Сообщение от FreeZon Посмотреть сообщение
Все равно белый экран
что белый экран? Что вообще даже форму не выводит?
0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
22.12.2014, 19:03  [ТС] 12
Цитата Сообщение от Виталюска Посмотреть сообщение
что белый экран? Что вообще даже форму не выводит?
Белый экран становиться когда код достигает этой строки:
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 13
Цитата Сообщение от FreeZon Посмотреть сообщение
До этих строчек код выполняется нормально без ошибок
ну вообще он у тебя с этих строчек только начинает выполняться. ты пробовал мою страницу которую я тебе скинул одним текстом? скапируй так как у меня и запихай все в один файл и попробуй. у меня все работает
0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
22.12.2014, 19:09  [ТС] 14
....

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как проверить, что файл НЕ существует с помощью Bash
bytestream 25.01.2025
В системном администрировании проверка существования файлов является фундаментальной операцией, особенно при написании скриптов на Bash. Правильная обработка ситуаций, когда файл отсутствует,. . .
Как проверить, что строка пустая, неопределена или null в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript разработчики регулярно сталкиваются с необходимостью проверки строковых значений на различные состояния. Валидация данных является критически важным. . .
Как проверить существование ключа в объекте или массиве в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript программисты постоянно сталкиваются с необходимостью работать с объектами и массивами. Эти структуры данных являются фундаментальными элементами языка и. . .
Как создать ArrayList из массива (array) в Java
bytestream 25.01.2025
При разработке программного обеспечения на языке Java программисты часто сталкиваются с необходимостью эффективного управления наборами данных. Массивы и ArrayList являются двумя фундаментальными. . .
Как сгенерировать случайные целые числа (int) в указанном диапазоне в Java
bytestream 25.01.2025
В программировании генерация случайных чисел является важнейшим инструментом для решения множества практических задач. От создания игровых механик до реализации алгоритмов машинного обучения, от. . .
Как сделать, чтобы grep выводил строки до и после найденной
hw_wired 25.01.2025
Утилита grep стала незаменимым инструментом для поиска и фильтрации информации в Unix-подобных операционных системах. Эта командная утилита позволяет осуществлять поиск строк, соответствующих. . .
Как клонировать определенную ветку в Git
bytestream 24.01.2025
Одной из ключевых функций Git является возможность клонирования веток, что позволяет создавать локальные копии удаленных репозиториев и работать с определенными версиями проекта. Этот механизм. . .
Как в цикле обойти строки DataFrame в Pandas Python
bytestream 24.01.2025
DataFrame представляет собой одну из основных структур данных в библиотеке Python Pandas, которая организует информацию в виде двумерной таблицы с строками и столбцами. Эта структура данных особенно. . .
Как получить имя текущей ветки в Git
bytestream 24.01.2025
При работе с Git часто возникает необходимость определить имя текущей ветки, в которой ведется разработка. Знание текущей ветки является критически важным аспектом для эффективного управления. . .
Как отсортировать массив объектов по значению поля объекта в JavaScript
bytestream 24.01.2025
При разработке веб-приложений на JavaScript разработчики часто сталкиваются с необходимостью работать с массивами объектов. Эти структуры данных представляют собой упорядоченные наборы элементов, где. . .
Ошибка "src refspec master does not match any" при пуше коммита в Git
bytestream 24.01.2025
При работе с системой контроля версий Git разработчики нередко сталкиваются с различными ошибками, одной из которых является сообщение "src refspec master does not match any". Эта ошибка возникает. . .
Как округлить не более двух цифр после запятой в JavaScript
bytestream 24.01.2025
При работе с числами в JavaScript разработчики часто сталкиваются с необходимостью округления десятичных значений до определенного количества знаков после запятой. Это особенно важно при работе с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru