[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как проверить, что загруженный файл на сервер?
Страницы: 1, 2
sc2r2bey
как проверить, что загруженный файл на сервер - zip-архив?
т.е. файл созданный при помощи архиватора, упаковав один или несколько файлов, не через проверку расширения и mime-типа, которые легко подделать?
nugle
так не подойдёт
$_FILES['имя']['type']?
sc2r2bey
нет так можно подделать
Sanchopansa
ну проверь сажем расширение файла.. а потом попробуй распаковать и отлавливай ошибки.. если их не будет то значит это архив smile.gif
sc2r2bey
расширение можно тоже подделать
Sanchopansa
ну так расширени можно... а вот если это не будет настояший архив то разархиватор вернет ошибку и все.. тут говоришь юзверю что облом...
получается 2 уровня защиты и проверки:
- проверка по расширению;
- проверка на валидность архива если прошли по расширению

Ну и еще можно конечноже проверить по типу который описывали выше.. будет идеальная зашита smile.gif
sc2r2bey
if(! is_resource(zip_open($filename))) {
die("Загруженный файл не является ZIP-архивом");
}

пока нашел такое решение, только не пойму что значит is_resource
Sanchopansa
http://ua.php.net/manual/en/function.is-resource.php

Это значит что файл действительно архив и он открылся.
sc2r2bey
каково предназначение данной функции в целом, что такое ресурс?
Sanchopansa
http://ua.php.net/manual/en/language.types.resource.php
Вот самый правитльный ответ на твой вопрос.
http://translate.google.com/
а вот это тебе в помошь!
sc2r2bey
а по человечески в чем смысл то?
Sanchopansa
Блин ну что не понятно то?
Ресурс - специальная переменная, содержащая ссылку на внешний ресурс.
Переменные типа ресурс содержат специальные указатели на открытые файлы, соединения с базой данных и .т.д.
twin
Смысл простой. Если функция zip_open() смогла распаковать архив, то его содержимое записывается в оперативную память, а в php образуется указатель - своего рода адрес, по которому PHP может это содержимое получить. Этот адрес называется "указатель на ресурс". Такой тип переменной.
Дальше is_resource() проверяет, действительно ли это такой указатель или нет. Если да - значит архив успешно распакован и все в шоколаде.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
sc2r2bey
а разве так не одно и тоже?
if(zip_open($filename)) {
die("Загруженный файл не является ZIP-архивом");
}
twin
Нет. Во втором случае корректнее написать так:
if(zip_open($filename)) {
die("Не удалось сохранить ZIP-архив");
}
Разница понятна?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.