Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка файла на MIME тип! нелп!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
politaev
Отправлено: 12 Января, 2010 - 00:53:28
Post Id



Новичок


Покинул форум
Сообщений всего: 40
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




ВСЕМ ПРИВЕТ!

Вот такой вопросик:

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

if($_FILES['uploadfile']['type']!='application/x-rar-compressed'){echo "ERROR...Можно загружать только .rar ";}
Так вот проблема! application/x-rar-compressed - говорят не каждый браузер может это считать с файла, это так?
А Можно проверку файла на тип сделать вот так: сравнить концовку ,например, ".rar", если можно то как это сделать? Может кто что лучше посоветует..... Ниндзя
 
 Top
Ch_chov
Отправлено: 12 Января, 2010 - 05:21:13
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




politaev пишет:
говорят не каждый браузер может это считать с файла, это так?

Это не трудно проверить. Основных браузеров не так уж и много.


politaev пишет:
сравнить концовку ,например, ".rar", если можно то как это сделать?

 
 Top
Мелкий Супермодератор
Отправлено: 12 Января, 2010 - 12:31:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




politaev пишет:
А Можно проверку файла на тип сделать вот так: сравнить концовку ,например, ".rar", если можно то как это сделать? Может кто что лучше посоветует.....

Можно, но это проверка на расширение. Т.е. можно будет закачивать любой файл, только лишь изменив ему имя.

Определите mime явно на сервере, чтобы не зависить от браузера:


-----
PostgreSQL DBA
 
 Top
valenok Модератор
Отправлено: 12 Января, 2010 - 14:20:33
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




а. Браузер тут не причем. Вы наверняка слышали о том, что PHP исполняется на сервере.
б. Проверять тип файла по расширению нельзя.


-----
Truly yours, Sasha.
 
My status
 Top
Мелкий Супермодератор
Отправлено: 12 Января, 2010 - 14:32:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




valenok пишет:
а. Браузер тут не причем. Вы наверняка слышали о том, что PHP исполняется на сервере.

http://php.su/phphttp/?uploads
Цитата:
$_FILES['uploadfile']['type'] - MIME-тип принятого файла (если браузер смог его определить), например: image/gif, image/png, image/jpeg, text/html;


-----
PostgreSQL DBA
 
 Top
Ch_chov
Отправлено: 12 Января, 2010 - 15:43:07
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




valenok пишет:
Браузер тут не причем. Вы наверняка слышали о том, что PHP исполняется на сервере.

При загрузке файлов браузер отправляет заголовок Content-Type: тип файла (который можно легко подделать).
Этот тип как раз и находится в $_FILES['uploadfile']['type']


valenok пишет:
Проверять тип файла по расширению нельзя

Почему нельзя? Если расширение файла не входит в список запрещённых.
Даже если внутри этого файла находится исполняемый код, чтобы его запустить, пользователь должен иметь возможность менять конфигурацию сервера.
Каким образом проверять файлы, которые не имеют mime тип ?
mime_content_type доступна не на каждом сервере.


Статья по теме.



Значение $_FILES['uploadfile']['type'] при загрузке rar архива

CODE (text):
скопировать код в буфер обмена
  1. Opera 10         string[28] "application/x-rar-compressed"
  2. IE 8             string[24] "application/octet-stream"
  3. Google Chrome 3  string[0]  ""
  4. Firefox 3.5      string[28] "application/x-rar-compressed"

(Отредактировано автором: 12 Января, 2010 - 15:52:38)

 
 Top
JustUserR
Отправлено: 12 Января, 2010 - 21:41:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




valenok пишет:
Браузер тут не причем
А разве не он отсылвает Content-type в POST-запросе при загрузке файла? Другое дело что MIME можно посмотреть с помощью magic_mime то есть по двоичным кодам в самом файле (Такие таблицы соответствий использует Apache)


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
CenapaTop
Отправлено: 12 Января, 2010 - 22:15:31
Post Id



Частый гость


Покинул форум
Сообщений всего: 166
Дата рег-ции: Авг. 2009  


Помог: 1 раз(а)




А так нельзя ?
PHP:
скопировать код в буфер обмена
  1. if (rar_open ("file.rar")) echo 'rar';
  2. else echo 'не rar';
 
 Top
JustUserR
Отправлено: 13 Января, 2010 - 12:09:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




CenapaTop пишет:
rar_open ("file.rar"))
Это слишком сильно зависит от сервера и модулей - у меня такой командды например нет - другие дело вызввать архиватор и сммотреть может ли он разархивировать данный файл - но опять-таки под Linux с RARом тяжко - и если даже какой-то сервис хранит RAR-файлы то не факт что он сам ими пользуется - а просто отдает на скачку


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Ch_chov
Отправлено: 14 Января, 2010 - 07:29:18
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Цитата:
Это слишком сильно зависит от сервера и модулей - у меня такой командды например нет
Можно задействовать какой нибудь специальный php класс для работы с RAR архивами.

Например: http://www[dot]htmlweb[dot]ru/php/functi[dot][dot][dot]n/RarArchive.php
 
 Top
JustUserR
Отправлено: 14 Января, 2010 - 12:27:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Ch_chov пишет:
Можно задействовать какой нибудь специальный php класс для работы с RAR архивами.
В принципе я соглаен что идея проверить является ли данный файл архивом путем его попытки разархивирования на сервере очень даже неплоха и скорее всего очень удобна


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB