Я создаю скрипт загрузки файла и ищу лучший методы и практики для проверки загруженных файлов.
Допустимые расширения:
$allowed_extensions = array('gif','jpg','png','swf','doc','docx','pdf','zip','rar','rtf','psd');
Вот список того, что я делаю.
Проверка расширения файла
$ path_info = pathinfo ($ filename);
if (! in_array ($ path_info ['extension'], $ allow_extensions)) {
die ('File #'. $ i. ': неверное расширение файла.');
}
Проверка типа MIME файла
$ allow_mimes = array ('image / jpeg', 'image / png', 'image / gif', 'text / richtext', 'multipart / x-zip', 'application / х-ударноволновая-вспышка», 'применение / MSWord', 'приложение / PDF', 'применение / х-RAR-сжатый', 'изображение / vnd.adobe.photoshop');
if (! in_array (finfo_file ($ finfo, $ file), $ allow_mimes)) {
die ('File #'. $ i. ': Incorrent mime type.');
}
Проверка размера файла.
Что нужно сделать, чтобы убедиться, что загруженные файлы являются действительными файлами? Я заметил странную вещь. Я изменил расширение файла .jpg на .zip и ... он был загружен. Я думал, что он будет иметь неправильный тип MIME, но после этого я заметил, что я не проверяю для определенного типа, но если конкретный тип MIME существует в массиве. Я исправлю это позже, это не представляет для меня проблем (конечно, если у вас есть хорошее решение / идея, не стесняйтесь поделиться им, пожалуйста).
Я знаю, что делать с изображениями (попробуйте изменить размер, повернуть, обрезать и т. д.), но не знаю, как проверить другие расширения.
Теперь пришло время ответить на мои вопросы.
я попытался загрузить файл .psd, он показал мне (image / vnd.adobe.photoshop). Я немного запутался по этому поводу. Всегда ли файлы имеют одинаковый тип MIME?
Кроме того, я не могу заставить блок кода работать. Кто-нибудь догадывается, почему?