За последние 24 часа нас посетили 36029 программистов и 1745 роботов. Сейчас ищут 1306 программистов ...

Загрузка файлов на сервер

Тема в разделе "PHP для новичков", создана пользователем Lexx, 5 фев 2009.

  1. Lexx

    Lexx Активный пользователь

    С нами с:
    31 июл 2008
    Сообщения:
    35
    Симпатии:
    0
    Помогите пожалуйста столкнулся вот с какой проблемой: нужно чтобы на сервер загружались только файлы gif и jpg.


    :(
     
  2. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    только gif и jpg это:

    1. только файлы с расширением gif и jpg.
    2. только файлы gif и jpg с любым расширением.
    3. только файлы gif и jpg с соответствующим расширением.

    ?
     
  3. Lexx

    Lexx Активный пользователь

    С нами с:
    31 июл 2008
    Сообщения:
    35
    Симпатии:
    0
    только файлы с расширением gif и jpg.
     
  4. Adamant

    Adamant Активный пользователь

    С нами с:
    8 апр 2007
    Сообщения:
    234
    Симпатии:
    0
    Адрес:
    Казахстан г.Тараз
    Проверять на файлы на расширение и на Mime-type
     
  5. Lexx

    Lexx Активный пользователь

    С нами с:
    31 июл 2008
    Сообщения:
    35
    Симпатии:
    0
    Нужно только загружать файлы: ЛюбоеИмя.gif и ЛюбоеИмя.jpg
     
  6. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    А если это будет текстовый файл с расширением .jpg?
     
  7. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    $_FILES['userfile']['type'] - mime тип
    $_FILES['userfile']['name'] - имя файла
    все что в $_FILES['userfile']['name'] - после самой правой точки - расширение файла.


    в общем, курим мануал
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    файл это поток байтов. именно поток и именно байтов, а то, что имя файла имеет какое-то расширение - это личное дело каждого.

    100% гарантия есть только в случе "мы все умрем", в остальном - как бог даст.
     
  9. V1T

    V1T Активный пользователь

    С нами с:
    7 окт 2008
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    Крым
    440Hz эт Вы к чему? Что не надо проверять расширение, а только MIME тип, или как? На самом деле мне тоже интересна эта тема очень, так как сейчас я делаю загрузку картинок, спасибо
     
  10. akrinel

    akrinel Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    ИМХО миме и прочее это все ерунда. Это легко подделать. Нужно просто проверять, что данный файл, действительно является картинкой. В особо параноидальных случаях, еще и что в файле содержащем картинку нет никакого текста.
     
  11. V1T

    V1T Активный пользователь

    С нами с:
    7 окт 2008
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    Крым
    akrinel,каким образом?
     
  12. akrinel

    akrinel Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
  13. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    я делаю

    if(!preg_match('/\.(jpg|gif|png)$/',$filename)) exit();

    и не забиваю себе моск осталной ерундой
     
  14. akrinel, о великий Данон!
    Поведай мне: ну загрузит пользователь пхп-скрипт с расширением gif. И что?
     
  15. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ну как что? тупой админ настроет вебсервер на обработку этого расширения интерпритатором php и получться большая дыра.
     
  16. Lexx

    Lexx Активный пользователь

    С нами с:
    31 июл 2008
    Сообщения:
    35
    Симпатии:
    0
    karakh
    вот как я реализую загрузку файла на сервер, загрузка происходит а вот чтоб он определял gif и jpg
    точнее он должен загружать только gif и jpg а остальные нет!
    PHP:
    1.  
    2. if (isset($_FILES['img']) && $_FILES['img']['tmp_name']!='')
    3.             {
    4.                 if ($_FILES['img']['type']= gif && $_FILES['img']['type']= jpg)
    5.                 {
    6.                     move_uploaded_file($_FILES['img']['tmp_name'], 'loaded_files/'.$_FILES['img']['name']);
    7.                     echo 'файл Загружен!';
    8.                 }
    9.                 else
    10.                 {
    11.                 echo 'файл не загружен!';
    12.                 }
    13.                
    14.             }
    15.  
    16.  
     
  17. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    вместо

    if ($_FILES['img']['type']= gif && $_FILES['img']['type']= jpg)

    делай

    if(preg_match('/\.(gif|jpg|jpeg)$/i',$_FILES['img']['name'])) {
    ...гружу
    }
     
  18. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    а почему у тебя в if стоит = а не == ?
     
  19. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ты не видишь, что человек файлы грузит н сервер? такие мелочи его не смущают!

    гыгыгы

    p.s. gif в кавычки брать надоть, кстати тоже..., о это мелочи...
     
  20. akrinel

    akrinel Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    Ну а почему бы админу не включить интерпретацию .gif файлов в php :)
    Мож. у него какие-нить tabu На сайте генерятся автоматом %)

    Как писал какой-то дядько, сайты становяться уязвимыми благодаря цепочке уязвимостей: один прогер не проверяет картинку, на то что она картинка, другому захотелось перед отдачей картинки что-то творить динамически и он попросил админа изменить httpd.conf. А админу вообще пох, на эти их програмерские темы у него вот Кошка почему-то девочек из бухгалтерии не пускает сделал и забыл. И понеслась... :)
     
  21. unicross

    unicross Активный пользователь

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    $_FILES['img']['type'] содержит MIME-тип в формате image/gif, а не просто gif.
    Остальные ошибки читай выше...

    PHP:
    1. if (($_FILES['img']['type'] == 'image/gif' || $_FILES['img']['type'] == 'image/jpeg')
    2.      && preg_match('/\.(jpg|gif|jpeg)$/',$_FILES['img']['name']))
     
  22. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ты знаешь толк в архитектурах проектов и людских страстях.
    =)

    p.s. #cat head > /dev/ass
     
  23. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    PHP:
    1.  
    2. <?
    3.  
    4. if (
    5.     $_FILES['img']['type'] == 'image/gif' AND
    6.     $_FILES['img']['type'] == 'image/jpeg'AND
    7.     preg_match('/\.(jpg|gif|jpeg)$/',$_FILES['img']['name']) AND
    8.     Progger->CheckImage() AND
    9.     Any->NotModifyImage() AND
    10.     Apache::Config(NO_MODIFY) AND
    11.     Admin->SomeBody() == FALSE
    12.  
    13. )
    14.  
    15. ?>
    16.  
     
  24. Идиоты - повод делать бесполезную работу?