• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы 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 либо подскажет какой-нибудь еще способ определить тип файла.

Заранее спасибо.
 
V

vital

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

MiXOH

Спасибо за альтернативный путь, если не разберусь, почему не работает, придется наверно им воспользоваться.

Пути прописаны правильно. При установке РНР модули необходимые для функционирования mime_content_type не были установлены. Я их добавлял позднее, может быть в этом дело, чего-то не хватает.
В мануале прочитал, что вроде бы нужен PECL для работы этой функции. Так ли это?
 
V

vital

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!