Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Определить формат файлов.
 
 автор: NovikovMA   (14.02.2007 в 15:37)   письмо автору
 
 

Доброе время суток.

Есть задача: Сделать файло-обменник только для определенных файлов, т.е. для картинок (всех), для файлов Microsoft Office, для MCD файлов, и для Архивов (только если в них есть все перечисленные выше файлы).

Причем проверка просто на расширение - не дело (потому что можно просто изменить его).
Начал копать форматы файлов, но вот не знаю, что делать с mcd файлами файлами. Кто может подсказать на эту тему что-нить?

И еще: есть ли функции для работы с архивами? (ну чтоб можно было определить настоящий формат файлов, которые находятся в архиве).

И вообще все советы выслушаю и приму во внимание.
Заранее спасибо!

   
 
 автор: Loki   (14.02.2007 в 16:48)   письмо автору
 
   для: NovikovMA   (14.02.2007 в 15:37)
 

Может это поможет?
http://ru2.php.net/mime_content_type

   
 
 автор: NovikovMA   (14.02.2007 в 19:05)   письмо автору
 
   для: Loki   (14.02.2007 в 16:48)
 

Спасибо, скорее всего это оно

   
 
 автор: Staglu   (14.02.2007 в 18:05)   письмо автору
 
   для: NovikovMA   (14.02.2007 в 15:37)
 

Есть один пример: (Взят с книги PHP Ворое издание)

<?php
$path 
"d:/main/scripts/index.php";//Путь может быть разный

echo strrchr($path"."); //По идеии должен выдать расширение . php

//Потом дальше код для расширения

?>

   
 
 автор: Ralph   (14.02.2007 в 19:02)   письмо автору
 
   для: Staglu   (14.02.2007 в 18:05)
 

Не,ну человек же написал,что его интересует не расширение,а реальный формат файла

   
 
 автор: LEM   (14.02.2007 в 19:06)   письмо автору
 
   для: Staglu   (14.02.2007 в 18:05)
 

Также pathinfo (строка); возвращает массив [extension] - расширение
Возможно вам пригодяться и другие элементы:
<?php

$string 
'text/text.txt';

$array_info pathinfo($string);

print_r($array_info);

?>

Выводит:

Array ( [dirname] => text [basename] => text.txt [extension] => txt ) 

   
 
 автор: NovikovMA   (14.02.2007 в 19:09)   письмо автору
 
   для: LEM   (14.02.2007 в 19:06)
 

не, это не совсем то, что надо.

потому что если переименовать text.txt в tex.mp3, то она выдаст mp3,а мне нужет нормальный формат

   
 
 автор: Unkind   (14.02.2007 в 20:00)   письмо автору
 
   для: NovikovMA   (14.02.2007 в 19:09)
 

Вы не сможете определить реальный формат. Можно только попытаться.

   
 
 автор: Ralph   (14.02.2007 в 21:56)   письмо автору
 
   для: Unkind   (14.02.2007 в 20:00)
 

Разве что попробовать краткий анализ текста файла на некоторые ключевые слова...

   
 
 автор: NovikovMA   (14.02.2007 в 22:46)   письмо автору
 
   для: Ralph   (14.02.2007 в 21:56)
 

Ключевые слова в mp3 файле?
Там их просто нет ))
Вообще-то подсказали функцию mime_content_type, вроде это оно, только php говорит, что
Call to undefined function: mime_content_type()
хотя в описании она есть и php=4.30
а есть у кого-нить описания форматов?
в google не отправлять, нашел только старый rtf формат из офисовских...

   
 
 автор: Киналь   (14.02.2007 в 22:52)   письмо автору
 
   для: NovikovMA   (14.02.2007 в 22:46)
 

>а есть у кого-нить описания форматов?

Не то ищете. Ищите лучше как можно больше разных MIME-типов интересующих вас форматов и налаживайте определени его определение (там нужна какая-то библиотека). Это самый надежный способ. Проблема только в том. что один и тот же формат может давать разные миме, но это решается сбором статистики или поиском.

   
 
 автор: NovikovMA   (14.02.2007 в 23:02)   письмо автору
 
   для: Киналь   (14.02.2007 в 22:52)
 

Спасибо, буду пинать админов ))

   
 
 автор: NovikovMA   (15.02.2007 в 00:33)   письмо автору
 
   для: NovikovMA   (14.02.2007 в 23:02)
 

Кстати, если что, то нашел список mime типов:
графические:


image/bmp bmp
image/gif gif
image/jpeg jpeg jpg jpe
image/png png
image/tiff tiff tif

аудио:

audio/basic au snd
audio/midi mid midi kar
audio/mpeg mpga mp2 mp3
audio/x-pn-realaudio ram rm
audio/x-pn-realaudio-plugin rpm
audio/x-realaudio ra
audio/x-wav wav

видео:

video/mpeg mpeg mpg mpe
video/quicktime qt mov
video/x-msvideo avi
video/x-sgi-movie movie

модели:

model/vrml wrl vrml

текстовые:

text/css css
text/html html htm
text/plain asc txt
text/richtext rtx
text/rtf rtf
text/sgml sgml sgm
text/xml xml

архивы:

application/x-gtar gtar
application/x-tar tar
application/zip zip

приложения Microsoft:

application/msword doc
application/vnd.ms-excel xls
application/vnd.ms-powerpoint ppt

типы MIME для корректной работы wap:

application/vnd.wap.wbxml wbxml
application/vnd.wap.wmlc wmlc
application/vnd.wap.wmlscriptc wmlsc
image/vnd.wap.wbmp wbmp
text/vnd.wap.wml wml
text/vnd.wap.wmlscript wmls

другие приложения:

application/octet-stream bin dms lha exe class
application/pdf pdf
application/postscript ai eps ps
application/x-shockwave-flash swf

   
 
 автор: Unkind   (15.02.2007 в 00:53)   письмо автору
 
   для: NovikovMA   (15.02.2007 в 00:33)
 

1) Смотрите комментарии к этой функции на php.net.
2) MIME можно подделать.

   
 
 автор: Ralph   (15.02.2007 в 01:44)   письмо автору
 
   для: Unkind   (15.02.2007 в 00:53)
 

>...какие в mp3 могут быть ключевые слова...
Вот я с телефона из разных типов файлов навыдергивал первые байты:
ZIP
PK?`?/<(`?е*HiddenInside.exeн?t  PKф?(6ЎпМ?щИindex.phpнVЭnЪ  PKK¬ияclan/users/12345.datК
RAR
Rar!П?sў)  Rar!П?sИІt ?,  Rar!П?sІ?t ?,?
WAV
RIFF4\WAVEfmt ?  RIFF0зWAVEfmt @@data
JPEG
яШяаJFIFяю;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 75
яШяаJFIFddямDu

   
 
 автор: Ralph   (15.02.2007 в 01:51)   письмо автору
 
   для: Ralph   (15.02.2007 в 01:44)
 

По моему,можно найти какие то схожие фрагменты...А был бы у меня компьютер и хороший архив разнообразных файлов,думаю,я изучил бы их и что-нибудь да придумал...А то,что ключевых слов нет,в чем то может быть и полезно,к примеру,если бы в тексте mp3-файла я обнаружил слова header,fsockopen или echo,я бы очень удивился и заинтересовался бы этим файлом поподробнее ;-)

   
 
 автор: Loki   (15.02.2007 в 10:43)   письмо автору
 
   для: Ralph   (15.02.2007 в 01:51)
 

если у вас сервер не настроен на исполнение файлов с расширением mp3 как php, то какая разница?

   
 
 автор: NovikovMA   (16.02.2007 в 02:34)   письмо автору
 
   для: Loki   (15.02.2007 в 10:43)
 

необходимо сделать что-то вроде тематического файлообменника, причем есть явная причина не пускать туда видео и звук (т.к. это учебный сайт).
А то я боюсь, что его будут использовать как хранитель файлов и порева, что собссно не очень хотелось бы...

   
 
 автор: Loki   (16.02.2007 в 10:54)   письмо автору
 
   для: NovikovMA   (16.02.2007 в 02:34)
 

Единственный надежный способ который я знаю - перекомпиляция исходника (пережатие картинки, например). Во всех остальных случаях можно к файлу "паровозом" зацепить любые произвольные данные. Хочется надеяться, что есть менее ресурсоемкие способы...

   
 
 автор: NovikovMA   (16.02.2007 в 20:01)   письмо автору
 
   для: Loki   (16.02.2007 в 10:54)
 

мне тоже ))
А что, если открывать потоком этот файл?
Можно что-нить найти из них?

На сколько я знаю, если открывать Word'овский документ потоком, то там будет поток типа
WordDocument, Workbook -это Excel.
А у видео есть что-нить похожее?

А в общем, чего это я, щас сам проверю ))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования