Автор Тема: Генерация ссылки на файл  (Прочитано 4514 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн -DieseLok-

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 178
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kyivstar.biz
Генерация ссылки на файл
« : 03 Февраля 2005, 00:29:37 »
Добрый день!

Подскажите пожалуйста, как решить такую задачу:
Есть файлы лежащие в определённом месте...
Ссылки на них лежат в базе Mysql
Задача состоит в том чтобы не выдавать реальное расположение файла, а просто при запросе к файлу с определённым ID выдавать временную ссылку типа:
http://download2.bigmir.net/ee046f35e2019b4e6194405788e52cf7/DubtsovaIrina_KakTyTam.mp3

Как это реализовать?

Хотябы опишите пожалуйста принцып работы тако системы...

З.ы. зарание спасибо!

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Генерация ссылки на файл
« Ответ #1 : 03 Февраля 2005, 02:08:11 »
создаешь таблицу :
files_to_download :
key - уникальная строка типа ee046f35e2019b4e6194405788e52cf7
file_id - ссылка на идентификатор файла из твоей таблицы файлов
time - время создания записи.

Когда юзер хочет скачать файл, генерируешь уникальный key, добавляешь новую запись в таблицу files_to_download и выдаешь ему ссылку :
http://example.com/download.php?file=file_name&key=$key
И предупреждаешь, что ссылка действует в течение, скажем, 5 часов.

Скрипт download.php проверяет file_name, $key, проверяет, чтобы у этой ссылки не истек срок годности и если все ок, то просто читает файл возвращает его юзеру.

Вопросы ?
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн -DieseLok-

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 178
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kyivstar.biz
Генерация ссылки на файл
« Ответ #2 : 03 Февраля 2005, 02:12:09 »
Еща парочка: [ Может они покажиться глупые ]

1. какой тип данных в поле key?
2. чем генерить уникальное поле key [ пример если можно ]
3. какая функция переводит время в unix формат...


Зарание спасибо!

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Генерация ссылки на файл
« Ответ #3 : 03 Февраля 2005, 03:01:03 »
1. зависит от формата key. Например char(40);
2. например так :
 $key sha1(uniqid().time()); 
3. я в такие поля обычно записываю результат функции [p]time[/p]
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Lutik

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 184
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.galiongroup.ru
Генерация ссылки на файл
« Ответ #4 : 03 Февраля 2005, 10:57:18 »
А смысл это делать? Не легче поставить тип поля time как timestamp при этом при каждой записи будет генерироватся текущее время дата в формате YYmmddhms вобщем 14 знаков?
Разум когда-нибудь победит

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Генерация ссылки на файл
« Ответ #5 : 03 Февраля 2005, 11:22:55 »
Lutik
не люблю я тип поля timestamp за то, что он меняется после UPDATE-а записи.
К тому же не все работают с mysql
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Lutik

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 184
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.galiongroup.ru
Генерация ссылки на файл
« Ответ #6 : 03 Февраля 2005, 11:37:50 »
Макс, в принципе тоже верно! :)
Разум когда-нибудь победит

Оффлайн -DieseLok-

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 178
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kyivstar.biz
Генерация ссылки на файл
« Ответ #7 : 04 Февраля 2005, 14:43:16 »
Цитировать
Макс:
1. зависит от формата key. Например char(40);
2. например так :

$key = sha1(uniqid().time());

3. я в такие поля обычно записываю результат функции timephp.net


Я тогда неможко не понял:
1. Реальное место расположение файла будет видно? через скажем ReGet...
2. И соответственно если будет виден реальное место файла то чулавеку будет всёравно сколько ссылка действовать потому что он будет качать файл прямо от туда где он лежит...

Или я что-то не понял?

Зарание спасибо!

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Генерация ссылки на файл
« Ответ #8 : 04 Февраля 2005, 15:17:26 »
Цитировать
-DieseLok-:
1. Реальное место расположение файла будет видно? через скажем ReGet...

1. нет, не бдует. Я же написал как будет выглядеть ссылка
2. файлы вообще не должны быть доступны для скачивания напрямую. Для этого их ложат в папку, недоступную из вне. А если нет такой, возможности, то в папку ложат .htaccess
deny from all
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Lutik

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 184
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.galiongroup.ru
Генерация ссылки на файл
« Ответ #10 : 04 Февраля 2005, 17:57:13 »
Или как вариант отправлять фаил атачем! В заголовках
Разум когда-нибудь победит

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28