Помогите пожалуйста столкнулся вот с какой проблемой: нужно чтобы на сервер загружались только файлы gif и jpg.
только gif и jpg это: 1. только файлы с расширением gif и jpg. 2. только файлы gif и jpg с любым расширением. 3. только файлы gif и jpg с соответствующим расширением. ?
$_FILES['userfile']['type'] - mime тип $_FILES['userfile']['name'] - имя файла все что в $_FILES['userfile']['name'] - после самой правой точки - расширение файла. в общем, курим мануал
файл это поток байтов. именно поток и именно байтов, а то, что имя файла имеет какое-то расширение - это личное дело каждого. 100% гарантия есть только в случе "мы все умрем", в остальном - как бог даст.
440Hz эт Вы к чему? Что не надо проверять расширение, а только MIME тип, или как? На самом деле мне тоже интересна эта тема очень, так как сейчас я делаю загрузку картинок, спасибо
ИМХО миме и прочее это все ерунда. Это легко подделать. Нужно просто проверять, что данный файл, действительно является картинкой. В особо параноидальных случаях, еще и что в файле содержащем картинку нет никакого текста.
я делаю if(!preg_match('/\.(jpg|gif|png)$/',$filename)) exit(); и не забиваю себе моск осталной ерундой
ну как что? тупой админ настроет вебсервер на обработку этого расширения интерпритатором php и получться большая дыра.
karakh вот как я реализую загрузку файла на сервер, загрузка происходит а вот чтоб он определял gif и jpg точнее он должен загружать только gif и jpg а остальные нет! PHP: if (isset($_FILES['img']) && $_FILES['img']['tmp_name']!='') { if ($_FILES['img']['type']= gif && $_FILES['img']['type']= jpg) { move_uploaded_file($_FILES['img']['tmp_name'], 'loaded_files/'.$_FILES['img']['name']); echo 'файл Загружен!'; } else { echo 'файл не загружен!'; } }
вместо if ($_FILES['img']['type']= gif && $_FILES['img']['type']= jpg) делай if(preg_match('/\.(gif|jpg|jpeg)$/i',$_FILES['img']['name'])) { ...гружу }
ты не видишь, что человек файлы грузит н сервер? такие мелочи его не смущают! гыгыгы p.s. gif в кавычки брать надоть, кстати тоже..., о это мелочи...
Ну а почему бы админу не включить интерпретацию .gif файлов в php Мож. у него какие-нить tabu На сайте генерятся автоматом %) Как писал какой-то дядько, сайты становяться уязвимыми благодаря цепочке уязвимостей: один прогер не проверяет картинку, на то что она картинка, другому захотелось перед отдачей картинки что-то творить динамически и он попросил админа изменить httpd.conf. А админу вообще пох, на эти их програмерские темы у него вот Кошка почему-то девочек из бухгалтерии не пускает сделал и забыл. И понеслась...
$_FILES['img']['type'] содержит MIME-тип в формате image/gif, а не просто gif. Остальные ошибки читай выше... PHP: if (($_FILES['img']['type'] == 'image/gif' || $_FILES['img']['type'] == 'image/jpeg') && preg_match('/\.(jpg|gif|jpeg)$/',$_FILES['img']['name']))
PHP: <? if ( $_FILES['img']['type'] == 'image/gif' AND $_FILES['img']['type'] == 'image/jpeg'AND preg_match('/\.(jpg|gif|jpeg)$/',$_FILES['img']['name']) AND Progger->CheckImage() AND Any->NotModifyImage() AND Apache::Config(NO_MODIFY) AND Admin->SomeBody() == FALSE ) ?>