Пишу я форум, дело дошло до аватар. Вопрос такой: Как грамотно обрабатывать заливку аватар? чтобы всякие кульхацкеры не лили авы с вредоносным кодом и как лучше всего с размером авок быть, ибо хекс-эдитором многие пользоваться умеют, слышал что по хидерам размер авок лучше не читать. Почитал несколько статей, у самого несколько мыслей...в общем всё смешалось в кучу, не знаю на чём остановиться....в общем кто что подскажет по этому поводу? Загрузку буду делать только с компа, удалённые хосты отмёл сразу...ну нафиг
скачай и посмотри в исходнике этого форума =) www.mvnforum.com там в новой версии куй че с авой сделаешь))) =)
как вариант менять размер авы с некоторого размера до его же, т.е. узнаешь размеры рисунка и меняешь их на чуть большие и потом снова меняешь на прежние
PHP: <?php function image_bool($filename, $width, $height) { $size = getimagesize($filename); if($size[0] <= $width && $size[1] <= $height) { if($size[2] != 0) { return true; } else { return false; } } else { return false; } } ?> bool image_bool ( string filename, int width, int height ) Возвращает TRUE, если изображение корректно, его ширина не больше, чем width, а длинна не больше height ))))
да уж, не густо, думал больше советов будет, но хотя б на этом спасибо =/ g-warning, из другого форума вытащить и переделать нетрудно, но самому разобраться и написать гораздо лучше и прикольней)) Спасибо Номерадину, функшн работает отлично) ещё будут советы по поводу проверки на вредоносный код?
можно, кстати, еще антивирем проверять: наверняка, их эвристики распознают картинку, эксплуатирующую багу в каком-нить браузере ))
NOmeR1, более легкий способ: PHP: <?php $image = getimagesize('image.jpg'); if(!$image[0]) echo 'Это нифига не картинка!!!!'; ?>
Exif_imagetype читает сигнатуру файла и проверяет на корректность.Я бы этой функцией не стал бы пользоваться, а применил бы самый эффективный метод imagecreatefrom*+imagecopyresampled+image* который вырежет из картинки всю ненужную информацию вроде дописанных в конце или в середине файла данных.GetImageSize использовать грешно xD PHP: /** * When a correct signature is found, the appropriate * * constant value will be returned otherwise the return * value is FALSE. The return value is the same * value that getimagesize() returns in index 2 but exif_imagetype() * is much faster. */ if (exif_imagetype('image.gif') != IMAGETYPE_GIF) { echo 'The picture is not a gif'; }