Ограничение доступа к файлам через http

Discussion in 'PHP' started by Егорыч+++, 3 May 2006.

  1. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    894
    Reputations:
    20
    В общем требуется такой скрипт.

    1) Пользователи авторизуются на сайте.
    2) Можно давать разрешение на скачку определенных файлов и запрещать доступ к определенным файлам.


    Интересны будут ваши идеи насчет того, как ограничить доступ к фалам не использую htaccess
     
  2. blaga

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

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    Наверно скажу глупость но.... Может быть так же как на форуме? Допустим, человек решил скачать файл который не доступен для всех, при нажатии на ссылку скрипт будет проверять к какой группе человек относится, если к той группе которая разрешена то качает, если нет то выдает сообщение об ошибке...
    Если я неправильно понял вопрос то растолкуй поподробнее....
    Код вряд ли смогу написать но идейку могу подкинуть.....
    И ногами не бейте если что то не то написал...
     
  3. Otaku

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

    Joined:
    24 Jul 2005
    Messages:
    279
    Likes Received:
    73
    Reputations:
    2
    Некоторые вообще берут за основу сайта форумный движок.
     
  4. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    894
    Reputations:
    20
    Во первых на форуме часто фалы хранятся в базе. И тем самым ограничивается доступ к файлам. Если файлы хранятся не в базе, то имея прямую ссылку на файл его может скачать любой человек.
     
  5. blaga

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

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    2Егорыч+++ то есть тебе нужно чтобы файлы были на серваке. Можно попробовать сделать динамический адрес с помощью mod_rewrite
    Кстати вот например хост народ.ру как то же ограничивает свои файлы даже когда ты тыкаеш на прямую ссылку. Та же система на Рапидшаре... Может быть от этого оттолкнутся?
     
  6. censored!

    censored! Green member

    Joined:
    2 Nov 2004
    Messages:
    1,159
    Likes Received:
    299
    Reputations:
    156
    Ну, может как вариант (не самый красивый), при начале скачивания, проверить - можно или нет пользователю скачивать, нет - пшел вон, можно - создается временный каталог (md5(дата)), в который копируется файл, после чего дается ссылка на скачку. Через день удаляется (запуск cron-ом).
     
    _________________________
  7. NaX[no]rT

    NaX[no]rT Members of Antichat

    Joined:
    3 Sep 2005
    Messages:
    489
    Likes Received:
    201
    Reputations:
    202
    А мне кажется, создать для определенного пользователя определенный список файлов, которые ему можно скачивать и генерировать временную уникальную ссылку, если хочет скачать его.
    upd: censored! раньше написал :(
     
    _________________________
  8. censored!

    censored! Green member

    Joined:
    2 Nov 2004
    Messages:
    1,159
    Likes Received:
    299
    Reputations:
    156
    Можно глянуть чужие скрипты. Как у них. Например, то что тебе надо: http://script.woweb.ru/index.htm/id/1052917030
    Но в регете/флашгете будет светиться. Поэтому по-любому надо во временную папку пихать.
     
    _________________________
    #8 censored!, 3 May 2006
    Last edited: 3 May 2006
  9. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    894
    Reputations:
    20
    С временной папкой впринципе интересное решение. Но может у кого еще будут какие идеи.
     
  10. blaga

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

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    2Егорыч+++, а может быть не пихать во временную папку а каждому файлу создавать свою папку и раз в какой то промежуток времени ее переименовывать. Допустим каждый час или два... Так то наверно легче будет чем файлы бросать из одной папки в другую.
     
  11. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    банальный антилич может заюать? )
     
  12. Talisman

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

    Joined:
    22 Apr 2006
    Messages:
    400
    Likes Received:
    151
    Reputations:
    80
    а файл переименовывать?
    как-то копался в движке интернет-магазниа музкой - у них папка, в которой статически(!) лежат все файлы, когда юзер файл покупает - нужный ему файл кладут в рандомную папку, которую просто потом удаляют через 12 часов.
    хотя можно и меньше времени давать...
    ЗЫ основная папка со всем контентом у них не была ничем защищена :) а алгоритм генерирования имени папки (новой) - приметивен (чтоб если файл качает 1000 юзеров - не копировать 1000 папок, а давать линк каждому один и тот же)
    (имя папки зависит от даты и от названия трека + слово (константа из конфигов))
     
  13. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    проще ярлык кинуть.


    Кстати: самый легкий способ по части нагрузки: сделать ярлык.
     
  14. censored!

    censored! Green member

    Joined:
    2 Nov 2004
    Messages:
    1,159
    Likes Received:
    299
    Reputations:
    156
    Ярлык то ведет на реальный файл.

    А если файл переименовывать - то хорошо когда один пользователь. А если их сто и они одновременно собираются качать - то скачает последний. Да и надо записывать где-нить какой файл как уже называется.

    антилич - он вроде не для скрытия ссылок, а для проверки - откуда пытаются скачать, и если не с сервера - посылать.
     
    _________________________
  15. EST a1ien

    EST a1ien Elder - Старейшина

    Joined:
    2 Apr 2006
    Messages:
    249
    Likes Received:
    48
    Reputations:
    16
    А что если вот так
    Ну и прикрутить разного рода проверки.
     
  16. Talisman

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

    Joined:
    22 Apr 2006
    Messages:
    400
    Likes Received:
    151
    Reputations:
    80
    не смогут скачать? ты купил ссылку, у тебя есть 12 часов на скачку файла. работает примерно так: каждые 12 часов заводят новую копию файла (если есть на него запрос), если с времени завода последней прошло более 12 часов - ее удаляют (это уже cron поработает)
    как это ссылки не помогают? а если это ссылка в файловой системе линуха? раскрывает путь на файл? а команда unlink по прошествии 12 часов? нерезус правильно про линки заметил!
     
  17. blaga

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

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    Наверное тут только один выход. Файл лежит где то там на серваке. Решил пользователь его скачать. Нажал на ссылку. Файл копируется из этого места где он лежал и переносится в только что созданную папку с случайным названием. А оттуда уже качается после скачки папка вместе с файлом удаляются.
     
  18. Talisman

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

    Joined:
    22 Apr 2006
    Messages:
    400
    Likes Received:
    151
    Reputations:
    80
    определять, что файл скачали - муторно.... хотя осущесттвимо, но бездумноге копирование кучи файлов - имхо бред - возможность выведения сервера из строя - заполнения пространства, если оно не залимитировано
     
  19. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    ну он то не показывает местоположения реального файла ;)
    это те не винда
     
  20. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    894
    Reputations:
    20
    С копированием большой недостаток и с ярлыками тоже . Нельзя определить был скачен файл или нет для удаления этого.