1. Главная
  2. Статьи
  3. Вопрос-Ответ
  4. Новости
  5. Форум
  6. Вики
 

Биржа комментариев

СМС рассылки

Партнерские программы

Бесплатное продвижение сайтов

VPS хостинг

Кабель оптом

Качественный контент

Офисная мебель Проспект

Как точно определить расширение загруженного файла $_FILES

Я загружаю файл с помощью PHP, получаю глобальный массив $_FILES среди значений которого, имеется значение тип данного файла $_FILES["file"]["type"] в виде MIME-типа.

Проблема в том, что проверка на тип файла с помощью $_FILES["file"]["type"] через MIME-тип не всегда срабатывает точно и я не могу фильтровать этим методом файлы.

Помогите, как мне фильтровать загруженные файлы по типу.

Категория вопроса: Веб-программирование | Просмотров: 7374 | Добавлена: 27.10.2012

Ща я как отвечу!

Добавление комментария по теме
Ваш комментарий ↓ Ж К Ч Т Quote URL Код
Антиспамерская проверка, три плюс семь равно (числом)
Гость027.10.2012

Действительно, с помощью значения MIME типа суперглобального массива $_FILES определять тип файла не рекомендуется, так как он очень часто "лагает" и не может определить тип файла.

Рекомендую использовать для определения типа файла его расширение. То есть, определить расширение загруженного файла и в php сравнить с допустимыми. Сделать это можно:

Способ 1:

Извлечь содержание в названии файла после последней точки (это и будет расширение нашего файла):

$file_name = $_FILES['file']['name'];
$file_type = substr($file_name, strrpos($file_name, '.')+1);

strrpos – определяет позицию последнего вхождения точки (+1 следующий символ после точки)
substr – обрезает все, что идет до значения позиции, определенной функцией strrpos

Способ 2:

$file_type = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);

Цитировать
Гость019.07.2013
а если пользователь взял и расширение файла сам указал, а файл внушительных размеров
Цитировать
Гость024.07.2013
Гостьа если пользователь взял и расширение файла сам указал, а файл внушительных размеров
$max_file_size = 5;
if($_FILES['file']['size'] > $max_file_size*1024*1024){
echo 'Размер файла превышает '.$max_file_size.' Мб!';
...
exit;
}
Цитировать
Гость008.10.2016
а если пользователь взял и расширение файла сам указал, а внутри скрипт?
Цитировать
 
О сайте ⋅  Контакты