форма отправки файла

Discussion in 'PHP' started by StalkerKill, 11 Sep 2010.

  1. StalkerKill

    StalkerKill Elder - Старейшина

    Joined:
    27 Oct 2007
    Messages:
    0
    Likes Received:
    8
    Reputations:
    -1
    как на php в форуме регистрации сделать возможность прикрепления файлов с фильтром (.exe, pdf, и т.п.)?
     
  2. Alekzzzander

    Alekzzzander Elder - Старейшина

    Joined:
    5 Sep 2007
    Messages:
    278
    Likes Received:
    36
    Reputations:
    0
    создаешь форму загрузки файла, дальше отправляешь этот файл на свой скрипт в котором проверяется файл на существование и если требуется формат
     
  3. StalkerKill

    StalkerKill Elder - Старейшина

    Joined:
    27 Oct 2007
    Messages:
    0
    Likes Received:
    8
    Reputations:
    -1
    ну вот задание:
    может кто с этим помоч? если есть время, то я могу и сам файл скинуть, в который нужно внести изменения. если не дорого, то могу и за денюжку
     
  4. GalaX

    GalaX New Member

    Joined:
    6 Sep 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    незнаю можно ли фильтровать расширения файлов при их добавлении, но однозначно нужно делать проверку на сервере
    попробуй:
    mime_content_type()
    правда эта функция не обезопасит твою систему на все сто
     
  5. Духъ

    Духъ Banned

    Joined:
    3 Sep 2007
    Messages:
    89
    Likes Received:
    7
    Reputations:
    0

    Code:
    <script type="text/javascript"> 
    function check_file_1 () {
    str=document.form_1.file_name.value
    reg=/\.doc"?$/ 
    result=reg.test(str) 
    }
    </script>

    это для примера doc, обработка javascriptом
    если что стучи в асю помогу
     
  6. Dr.Coder

    Dr.Coder New Member

    Joined:
    23 Jun 2009
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    юзай SWFupload - там и фильтр встроее и фотки если нужно заресайзить на стороне клиента тоже в путь)

    а если ручками стучи в асю помогу)
     
  7. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    фильтр на стороне клиента это конечно круто... зачем так мозг мучать, лучше сразу написать логин и пароль он FTP и сказать в какую папку заливать, и попросить лить только .exe и .pdf
    не? :eek:

    этим постом я хотел сказать что надо на сервере проверять всё
     
    3 people like this.
  8. Dr.Coder

    Dr.Coder New Member

    Joined:
    23 Jun 2009
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    а смысл тратить ресурсы сервера когда можно все сделать у клиента? :)
    можно и по FTP - но ни вижу смысла, да по нему удобно разграничивать доступ для пользователей на лить через него файлы на серв по моему мнению не оч удобно, и тратит больше ресурсов.
     
  9. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    А смысл в том, что Яваскрипт на стороне клиента может быть отключен и пиздец тогда твоему сайту.
     
  10. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Dr.Coder не оправдал свой ник xD
    Проверка обязательно должна быть на стороне Сервера, и для юзабельности на стороне клиента посредством JS.
     
  11. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    А решение простое - делаешь multipart форму.
    В массиве FILE[] есть вся инфа. Вытаскиваешь расширение, но через mime. Проверяешь через тот же strstr. Хотя, не совсем корректно. И готово. Идеально - через регулярки.
     
  12. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Искать сейчас не буду, не в моих интересах, но проверку по майм-типу можно обойти, если вас интересует сами погуглите на эту тему.

    Расширение файла получаеться так:
    PHP:
    echo end(explode('.',$_FILES['file']['name']));
    В добавок проверка расширения должна осуществляться по белому листу а не блэк листу расширений. Тоесть разрешено загружать файлы .jpg, .gif а не так что создавать список в котором перечень запрещенных файлов типа .php,.php5,phtml и тд.

    я в шоке... даже не... я вахуе!
     
  13. Dr.Coder

    Dr.Coder New Member

    Joined:
    23 Jun 2009
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Соглашусь что поверка должна осуществляться на стороне сервера, но только проверка а не допустим резайзинг графики, если ресайзить средствами PHP то это займет больше ресурсов сервера т.к резайзить он будет уже на сервере.
    А скрипт который фильтрует файла естественно будет расположен на сервере, который уже дает команды SWF файлу.

    Не спорю если отрубить JS & Flash пипец сайту но мне лично такие пользователи не нужны))
     
  14. Dr.Coder

    Dr.Coder New Member

    Joined:
    23 Jun 2009
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    открываешь файл upload.php
    там

    PHP:
    $allowedExt = array('jpg''jpeg''png''gif');
    $maxFileSize 1024 1024//1 MB
    тут и редактируешь список файлов, через запятую.
    если нужен плагин для работы с графикой скажи выложу)
     
    #14 Dr.Coder, 19 Sep 2010
    Last edited: 28 Sep 2010
  15. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    Вы извините, но я апну тему, чтоб дырявых сайтов поменьше было =\
    >а смысл тратить ресурсы сервера когда можно все сделать у клиента?
    фильтр можно обойти и залить тебе .php файл, очевидно же
    >А решение простое - делаешь multipart форму.
    >В массиве FILE[] есть вся инфа. Вытаскиваешь расширение, но через mime. Проверяешь через тот же strstr. Хотя, не совсем корректно. И готово. Идеально - через регулярки.
    ага, ага, вот только одно НО - mime type в $_FILES передаёт клиент, передаём .php файл, указываем mime type = image/jpeg
    Вот вам пример https://forum.antichat.ru/thread229916.html

    Я всё сказал :rolleyes:
     
    3 people like this.