download по временной ссылке

Не о CI, но о PHP, интерфейсах и веб-проограммировании

download по временной ссылке

Сообщение h0kum » 19 фев 2010, 23:23

Добрый день!

расскажите пожалуйста алгоритм как делать скачивание по временной ссылке
h0kum
 
Сообщения: 17
Зарегистрирован: 16 фев 2010, 23:15

Re: download по временной ссылке

Сообщение michail1982 » 20 фев 2010, 01:13

http://2people.ru/?p=32 почитайте, неплохой способ...
Аватара пользователя
michail1982
 
Сообщения: 533
Зарегистрирован: 25 ноя 2008, 15:36

Re: download по временной ссылке

Сообщение v-kolosov » 16 мар 2010, 19:34

под понятием временная ссылка - каждый понимает своё.

например для меня временная ссылка - это одноразовая ссылка.
для вас это может быть ссылка на N часов. и т.д.

в любом случае всё можно организовать, если скачивание через скрипт.

я делал генерацию рандомной строки и выдавал юзеру http://example.com/download/skjnaQREWfq3kjh43
далее скрипт берет эту строку skjnaQREWfq3kjh43 ищет её в БД находит соответствие с файлом, и очищает эту строку из базы.
можно сделать проверку по дате и т.д.
v-kolosov
 
Сообщения: 70
Зарегистрирован: 09 дек 2009, 12:58
Откуда: Новокузнецк

Re: download по временной ссылке

Сообщение michail1982 » 16 мар 2010, 22:38

v-kolosov писал(а):под понятием временная ссылка - каждый понимает своё.

например для меня временная ссылка - это одноразовая ссылка.
для вас это может быть ссылка на N часов. и т.д.

в любом случае всё можно организовать, если скачивание через скрипт.

я делал генерацию рандомной строки и выдавал юзеру http://example.com/download/skjnaQREWfq3kjh43
далее скрипт берет эту строку skjnaQREWfq3kjh43 ищет её в БД находит соответствие с файлом, и очищает эту строку из базы.
можно сделать проверку по дате и т.д.

А докачка есть? Можно увидеть реализацию?
Аватара пользователя
michail1982
 
Сообщения: 533
Зарегистрирован: 25 ноя 2008, 15:36

Re: download по временной ссылке

Сообщение v-kolosov » 17 мар 2010, 10:08

нет докачки конечно нет. раздаю небольшие файлы.

вот пример именно даунлоадера, примерно такой же использую и я.
тут нет работы с базой, но я думаю придумать свою логику и реализовать не сложно
Код: Выделить всё
<?php
 
// place this code inside a php file and call it f.e. "download.php"
$path $_SERVER['DOCUMENT_ROOT']."/path2file/"// change the path to fit your websites document structure
$fullPath $path.$_GET['download_file'];
 
if (
$fd fopen ($fullPath"r")) {
    
$fsize filesize($fullPath);
    
$path_parts pathinfo($fullPath);
    
$ext strtolower($path_parts["extension"]);
    switch (
$ext) {
        case 
"pdf":
        
header("Content-type: application/pdf"); // add here more headers for diff. extensions
        
header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download
        
break;
        default;
        
header("Content-type: application/octet-stream");
        
header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
    }
    
header("Content-length: $fsize");
    
header("Cache-control: private"); //use this to open files directly
    
while(!feof($fd)) {
        
$buffer fread($fd2048);
        echo 
$buffer;
    }
}
fclose ($fd);
exit;
// example: place this kind of link into the document where the file download is offered:
// <a href="download.php?download_file=some_file.pdf">Download here</a>
?>
v-kolosov
 
Сообщения: 70
Зарегистрирован: 09 дек 2009, 12:58
Откуда: Новокузнецк

Re: download по временной ссылке

Сообщение michail1982 » 17 мар 2010, 10:56

я для таких целей написал библиотеку
Аватара пользователя
michail1982
 
Сообщения: 533
Зарегистрирован: 25 ноя 2008, 15:36

Re: download по временной ссылке

Сообщение Tovit » 17 мар 2010, 14:03

А Вы суровые ребята, отдавая файлы через php.

Я такого не писал (не было необходимости), но это обычно делается по примерно следующему алгоритму:

1) генерируется некая md5 сумма для урла

2) в физической папочке, например download, которая пуста, создается .htaccess с правилом основанным на урле который переопределяет на нужный файл выдачу.
2.1) в случае наличия nginx, для него генерируются собственные инструкции (детали, в его документации)
-- рядом, в комментарии можно писать время когда ссылку нужно считать мертвой.
-- (см.3.1)

3) при каждой генерации (или по крону) заглядывая в .htaccess и читая написанные ранее комментарии, определять какие строки пора удалять из файла.
3.1) по хорошему и mod_rewrite может контролировать время существования ссылки.

Там же Вы сможете и ограничения по IP прописывать.

Не забирайте у сервера (апача/nginx'а) работу. Они много чего умеют и значительно меньше нагрузят железо сервера, чем php.
Фантазия! Фантазия! Она поможет... не форум!
Аватара пользователя
Tovit
Модератор
 
Сообщения: 1230
Зарегистрирован: 15 фев 2009, 17:18

Re: download по временной ссылке

Сообщение michail1982 » 17 мар 2010, 14:48

Стараемся :lol:
Аватара пользователя
michail1982
 
Сообщения: 533
Зарегистрирован: 25 ноя 2008, 15:36

Re: download по временной ссылке

Сообщение v-kolosov » 17 мар 2010, 19:10

Tovit писал(а):А Вы суровые ребята, отдавая файлы через php.

Для каждой цели свои средства. У меня одноразовая ссылка, для отдельного пользователя. Скачал - ссылка умерла.
Количество скачиваний до того мизерно - что затраты моего времени на реализацию какого либо hiload решения, не оправдают себя:)
а nginx на одном из серверов имеется ;)
v-kolosov
 
Сообщения: 70
Зарегистрирован: 09 дек 2009, 12:58
Откуда: Новокузнецк


Вернуться в Общие вопросы по PHP и веб-программированию

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0