Вопрос № 17826: Здравствуйте, уважаемые эксперты!
Мне нужно точно определять GIF, PNG и JPEG файлы. Данные передаваемые браузером можно ведь подделать? Что, возможно, приведёт к неправильной работе какого-либо скрипта.
Я делаю галерею фотографий и не хочу ни...
Вопрос № 17826
Здравствуйте, уважаемые эксперты!
Мне нужно точно определять GIF, PNG и JPEG файлы. Данные передаваемые браузером можно ведь подделать? Что, возможно, приведёт к неправильной работе какого-либо скрипта.
Я делаю галерею фотографий и не хочу никаких проблем в результате действий особо любопытных посетителей.
Как это сделать?
Заранее спасибо.
Отправлен: 04.03.2005, 19:22
Вопрос задал: Хуснуллин Давид Рифкатович (статус: 3-ий класс)
Всего ответов отправлено: 1
Отвечает: antonkedenko
Здравствуйте, Хуснуллин Давид Рифкатович!
---------
В РНР есть функция определение типа изображения:
$size = getimagesize ("img/flag.jpg");
После чего переменная $size становится масивом, где:
$size[0]= содержит ширину изображения: width
$size[1]= содержит высоту изображения: height
$size[2]= ТИП изображения, возвращает число от 1 до 11. Расшифровка результата:
1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF, 8 = TIFF(байтовый порядок motorola), 9 = JPC, 10 = JP2, 11 = JPX.
$size[3]= содержит текстовую строку вида: height="yyy" width="xxx", которая может использоваться в теге img как:
echo "<img src="img/flag.jpg" {$size[3]}>";
======
Тоесть, как мы видим, имя файла абсолютно не играет никакой роли. Можна установить проверку: если тип НЕ 1,2,3,6 тогда вывести ошибку о недопустимой операции, но тут уже ваша фантазия :)
Но в этой функции есть нюанс:
Если имя файла будет "корявое" то РНР выдаст предупреждение, тоесть вам нужно перед началом работы проверить допустимые значения.
Ну а "вес" картинки можна определить по ф-ци
$filesize=filesize($upload_file_name);
Переменная $filesize будет иметь число, которое равно количеству байт изображения, тоесть если вам нужно получить "вес" картинки в КБ, то это будет выгледить: $kb=ceil($filesize/1024); Ceil() = округляет дроби в сторону увеличения.
=====
Спасибо за внимание.
icq 249960, 2499605
Ответ отправил: antonkedenko (статус: 1-ый класс)
Отправлен: 04.03.2005, 22:00