• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Определение типа файла

  • Автор темы Автор темы MiXOH
  • Дата начала Дата начала
M

MiXOH

Приветствую уважаемые форумчане!

Мне необходимо при загрузке файла на сервер определить его тип, чтобы ограничить загрузку только файлов определенного типа.
Значение, хранимое в переменной $_FILES["..."]["type"] не подходит, т.к. оно определяет тип файла по расширению или как-то так, но не определяет реальный тип файла.

Пробовал использовать функцию mime_content_type, но выдает ошибку Warning: mime_content_type() [http://www.php.net/mime_magic]: mime_magic not initialized in ...
Почему не могу понять, вроде все установлено.

Может, кто поможет разобраться, почему не работает функция mime_content_type либо подскажет какой-нибудь еще способ определить тип файла.

Заранее спасибо.
 
Почему не работает - хз. Если путь к конфигу mime прописан верно, и библиотека подключена - должно работать.
Ну а альтернативный путь - это сравнивать заголовок файла с сигнатурами(что и делает эта ф-я) самостоятельно. т.е. читать первые N байт из файла и сравнивать с нужной(или не нужной) для тебя сигнатурой.. Сигнатуры файлов можно найти
 
Спасибо за альтернативный путь, если не разберусь, почему не работает, придется наверно им воспользоваться.

Пути прописаны правильно. При установке РНР модули необходимые для функционирования mime_content_type не были установлены. Я их добавлял позднее, может быть в этом дело, чего-то не хватает.
В мануале прочитал, что вроде бы нужен PECL для работы этой функции. Так ли это?
 
Да, верно.
Вобщем, вот примерчик. Должно помочь)
PHP:
<?php
$filename="файл";
$finfo = finfo_open(FILEINFO_MIME_TYPE);
echo finfo_file($finfo, $filename) . "\n";
}
finfo_close($finfo);
?>
Думай=)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab