Помощник
|
Как проверить, что загруженный файл на сервер - zip-архив? |
sc2r2bey
|
Сообщение
#1
|
||
|
|
||
|
|||
gaaarfild |
10.12.2010, 17:33;
Ответить: gaaarfild
Сообщение
#2
|
|
Наверно, распаковать его))
|
|
|
ZiTosS |
10.12.2010, 18:47;
Ответить: ZiTosS
Сообщение
#3
|
|
|
surfer, если почитать инфу про ZIP (wikipedia.en - zip, Работаем с ZIP-файлами), данный формат файла содержит заголовки, которые можно прочитать и сверить.
ZIP-файл начинается с последовательностей записей четырех типов: LOCREC, CENTREC, ENDREC, EXTREC Каждая запись начинается с метки 'PK' (0x504B) и типа записи: (0x0102) - CENTREC (0x0304) - LOCREC (0x0506) - ENDREC (0x0708) - EXTREC Получаем код проверки: [php]<?php // разрешенные первые 4 байта => 504b - PK, остальное - тип архива $allow_zip = array( "504b0102", "504b0304", "504b0506", "504b0708" ); $filename_zip = "file.zip"; // имя файла для проверки // проверяем наличие файла и если существует, пытаемся открыть его на чтение if( !file_exists($filename_zip) || ($res = fopen($filename_zip, 'r')) == false ) exit('Не могу получить доступ к файлу'); $flag = ""; // сверяемая строка (4 байта) // считываем первые 4 байта из файла for($i = 0; $i < 4; $i++) if( ($sym = fgetc($res)) !== false ) // если не конец файла (EOF) $flag .= $sym; // заносим символ в флаг $flag = bin2hex($flag); // преобразуем бинарную строку в 16-ричную. echo in_array($flag, $allow_zip) ? "ZIP" : "NOT ZIP"; // если флаг попадает в разрешенные - то ZIP, иначе NOT ZIP ?>[/php] Проверил на файлах типов: zip, gz, tgz, tar, xls. Всё работает нормально. P.s.: Советую всё равно так же проверять по Mime и расширению, так часть сразу отбросим
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Как в пушсетках покупают по 100-200 тысяч кликов за день? | 2 | Boymaster | 697 | Вчера, 17:52 автор: Boymaster |
|
Как вы отдыхаете от работы за компом | 151 | adw-kupon.ru | 19864 | 23.4.2024, 13:52 автор: Vmir |
|
Как вы бросили работу и перешли на заработок с сайтов? | 20 | uahomka | 3477 | 23.4.2024, 11:54 автор: Skyworker |
|
Во что Вы играете? | 400 | Vmir | 67986 | 20.4.2024, 18:39 автор: SaintExchange |
|
Во что сегодня инвестировать? Делимся своими приносящими прибыль вариантами |
76 | traveliver | 5097 | 20.4.2024, 18:27 автор: SaintExchange |
Текстовая версия | Сейчас: 25.4.2024, 15:21 |