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

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

22.12.2014, 13:59. Показов 2005. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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
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
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
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
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
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
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
22.12.2014, 19:28  [ТС] 16
Цитата Сообщение от Виталюска Посмотреть сообщение
неужели браузер тебе не выводит ошибки
ДА! не чего он не выводит... Если бы выводил я бы знал где и что... А так я в слепую все пишу.
0
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
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2014, 23:32
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru