| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Для профи > алгоритм отдачи файла |
| Автор: mr.fox 20.11.2005, 04:16 |
| Есть сайт, который торгует мелодиями, картинками (и тд) для телефонов. Так вот, я никак не придумаю, как лучше отдавать файл на скачку пользователю? Прямых линков давать нельзя! Я думаю копировать файлик на время в папку какуюнибудь и отдавать на закачку, а потом удалять его оттуда через энном кол-во минут, которые высчитает алгоритм. МОжет другие идеии будут? |
| Автор: Coder 20.11.2005, 06:22 | ||
только при использовании этого способа в .PHP файле не должно быть HTML тегов, иначе код не будет работать. |
| Автор: mr.fox 20.11.2005, 06:37 |
| Coder, спасибо, хороший пример! Я вот думаю, а если запоролить дирегторию, будет вся эта чепуха работать? |
| Автор: Mal Hack 20.11.2005, 14:01 | ||
| Где- то я уже это описывал... Суть такая. Таблица первая - сессии. В БД храним реальное и мнимое имя файла. Мнимое -
При апложе файла, его реальное имя пишется в базу, как мнимое, а на сервер он уже сохраняется под sdkfhn478h238y3r87y2.zip. В тот момент, когда пользователь хочет скачать файл. Мы в таблицу сессий заносим какой-ть любой идентификатор аля md5, время через которое он умрет и ID файла. Далее, пользователя перекидываем на линк: server.ru/download/идентификатор аля md5/ В скрипте проверяем этот идентификатор и время жизни сессии. Если все нормально, то отдаем файл пользователю в принципе так, как показад Coder, подставляя в переменные нужные значения из БД. Замечания: 1. Надо время от времени чистить таблицу сессий. 2. Надо немножко с mod_rewrite похимичить. |
| Автор: AntonioBanderaz 20.11.2005, 18:16 | ||
А если при каждом действии любого польз проверять базу и удалять старые данные? |
| Автор: Mal Hack 20.11.2005, 18:53 | ||
Лишняя нагрузка. ИМХО, лучше раз в сутки из под CRON'a запускать скрипт очистки. |
| Автор: AkimVital 4.12.2005, 21:36 |
| Можно сделать скрипт на PHP с использованиеь Rewrite Engine, преобразовывающий запросы типа host.com/file/name.mp3 в host.com/script.php?file=name.mp3 Скрипт принимает запрос авторизованного пользователя, и в отдельной таблице базы данных закачек проверяет, разрешено ли этому пользователю качать файл $file, (таблица типа: field1_user_id(int), field2_filepath(string)). После чего читает файл по 4Кб и пишет их в буфер. |
| Автор: anka 19.12.2006, 08:25 |
| $filename="img.gif" base64_encode($filename); |
| Автор: Alex13 19.12.2006, 13:06 |
| mr.fox, я думаю, этот топик может помочь решить проблему: http://xpoint.ru/forums/programming/PHP/thread/20714.xhtml |