Отвечал, имея в виду - если после каждого запроса переименовывать файл, и давать на него ссылку. Но с переименованием действительно лучше чем гонять-копировать. Раз в сутки все файлы переименовывать, и выдавать ссылку на скачку. Можно и не все. Если был за эти сутки запрос на скачивание - значит на следующие сутки он переименовывается. Можно и предупредить - "не скачаешь в ближайший час - идешь лесом" А файлы большие? Если мелкие - то сразу скачают после запроса на скачку, если фильмы какие-нить - то да. Многие за сутки не выкачают. Ну еще как вариант - это найти место где есть поддержка htaccess =) Или: заряжаешь архив с файлами троем, при запуске трой стучиться на сервер. Как трой стукнулся - файл можно удалять =))))))
Можно сделать как сделано на slil.ru. Сурсы дать не могу занимимением. Но рассказать как работает можно. там стоит опять же связка nginx+fast-cgi, которую я так люблю хвалить. nginx получает ссылку на архив с каким-то хешем. Передает его php. php сверяет хеш и есл все верно - посылает заголовок nginx`у (обычным header()) и тот отдает файл. Если хеш не сошелся - php ехит ошибку. Сервис известнй и пользуют его многие. Благодаря данному хитрому но до ужаса простому антиличу стоит на обычном Celeron`е.
А можно так. При инициативе пользователя скачать файл создается папка с названием типо хеша, и двумя файлами .htaccess и bublik.zip. Аксес с текстом <Files "bublik.zip"> AddType application/x-httpd-php .zip </Files> А пхп с миниавторизацией <?php if($_COOKIE[login]="Vasya" & $_COOKIE[sess]="cae6dac72fd4aw73f6ede7a1c6e7adaf") // ну или от форума прикрутить { разрешено скачивать // ну функция скачивания из хранилища с DENY FROM ALL (outside) } else { echo "Пошел вон"; } ?>
без аксесса можно обойти создавая download.php Ну а куки не знаю. В ReGet есть поддержка кукисов, боюсь что только Ослинных.
2 Егорыч+++ нет, если делать через апач, файл будет отдавать php, а не веб-сервер. Там все внутри одной сессии. nginx получает запрос, отдает php на обработку и далее уже php либо отдает приказ nginx`у комманду на отдачу файла, либо извещает о ошибке. Не знаю как это реально реализовать на apache. Еще способ простой. Есть дира с именем, к пример, "8v9erjh9ver" и файл, в котором хронится адрес этой диры. Раз в 5 минут меняется имя диры и инфа в файле. В итоге можно будет скачать файл только через интерфейс + файл будет отдаваться веб-сервером, не сжирая ресурсы сервака. Тоже реалиховывал - работает как часы. Даже если имя диры меняется во время скачки файла - хедеры уже открыты и открытые докачаются. Удобно. Но есть проблема - если таким образом реализовывать файлообменник, на закачанный файл нельзя будет поствить пароль. Точнее можно, но обойти защиту пароля будет легко
если файл находиться в базе, то можно сделать так в базе разграничить юзеров по группам. Сделать рандомную ссылку, по которой юзеры будут качать файл. Если другой юзер зайдет по этой сцылке, то естесна файла уже по ней не будет. Сделать просто одноразовую сцылку. Если по ней скачали, то она пустеет. Каждому другому юзеру будет генерироваться своя. В принципе это не так сложно реализовать
только вот нагрузка будет не на фтп сервер а на апач основная и на базу... чего не очень то бы и хотелось!
Файл а базу? Бугага =))) прощай БД =))))))))) простите, если кого обидел. Подобные вещи надо бы знать. Реляционные БД не преднозначены для хронения в них бинарных данных =) для этого есть файловая система =)
>>Файл а базу? Бугага =))) прощай БД =))))))))) простите, если кого обидел. Подобные вещи надо бы знать. Реляционные БД не преднозначены для хронения в них бинарных данных =) ну а где же форумы хранят файлы? допустим булка?
Неужели в БД =)))))) Если это так, укусити меня за яйцо =))) тормоз всех реляционных БД - текстовые поля. Любое поле типа TEXT\BLOB в таблице будет ее сильно тормозить. А как БД относятся к бинарникам, я вообще молчу =) Это вы хотите 5 метров, допустим, из БД тянуть обним запросом? Приятно =))))))