Forum Webscript.Ru

Программирование => PHP => Тема начата: -DieseLok- от 03 Февраля 2005, 00:29:37

Название: Генерация ссылки на файл
Отправлено: -DieseLok- от 03 Февраля 2005, 00:29:37
Добрый день!

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

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

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

З.ы. зарание спасибо!
Название: Генерация ссылки на файл
Отправлено: Макс от 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, проверяет, чтобы у этой ссылки не истек срок годности и если все ок, то просто читает файл возвращает его юзеру.

Вопросы ?
Название: Генерация ссылки на файл
Отправлено: -DieseLok- от 03 Февраля 2005, 02:12:09
Еща парочка: [ Может они покажиться глупые ]

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


Зарание спасибо!
Название: Генерация ссылки на файл
Отправлено: Макс от 03 Февраля 2005, 03:01:03
1. зависит от формата key. Например char(40);
2. например так :
 $key = sha1(uniqid().time());
3. я в такие поля обычно записываю результат функции [p]time[/p]
Название: Генерация ссылки на файл
Отправлено: Lutik от 03 Февраля 2005, 10:57:18
А смысл это делать? Не легче поставить тип поля time как timestamp при этом при каждой записи будет генерироватся текущее время дата в формате YYmmddhms вобщем 14 знаков?
Название: Генерация ссылки на файл
Отправлено: Макс от 03 Февраля 2005, 11:22:55
Lutik
не люблю я тип поля timestamp за то, что он меняется после UPDATE-а записи.
К тому же не все работают с mysql
Название: Генерация ссылки на файл
Отправлено: Lutik от 03 Февраля 2005, 11:37:50
Макс, в принципе тоже верно! :)
Название: Генерация ссылки на файл
Отправлено: -DieseLok- от 04 Февраля 2005, 14:43:16
Цитировать
Макс:
1. зависит от формата key. Например char(40);
2. например так :

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

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


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

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

Зарание спасибо!
Название: Генерация ссылки на файл
Отправлено: Макс от 04 Февраля 2005, 15:17:26
Цитировать
-DieseLok-:
1. Реальное место расположение файла будет видно? через скажем ReGet...

1. нет, не бдует. Я же написал как будет выглядеть ссылка
2. файлы вообще не должны быть доступны для скачивания напрямую. Для этого их ложат в папку, недоступную из вне. А если нет такой, возможности, то в папку ложат .htaccess
deny from all
Название: Генерация ссылки на файл
Отправлено: Макс от 04 Февраля 2005, 15:18:32
http://forums.webscript.ru/showthread.php?s=&threadid=19322&msgnum=5
Название: Генерация ссылки на файл
Отправлено: Lutik от 04 Февраля 2005, 17:57:13
Или как вариант отправлять фаил атачем! В заголовках