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

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

Оффлайн -DieseLok-

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 178
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kyivstar.biz
Генерация одноразовой ссылки...
« : 16 Сентября 2004, 08:04:49 »
Добрый день! О великие!

У меня такая ситуация...

Есть база файлов лежат они к примеру в папке Х

Задача...

Чтобы при определённом запросе пхп брал создавал одноразовую/временную ссылку и копирывал в неё файл совпадающий запросу. а после того как пипл скачал файл она удалялась...


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

Оффлайн Daiz13

  • наблюдатель
  • Постоялец
  • ***
  • Сообщений: 150
  • +0/-0
  • 2
    • Просмотр профиля
    • http://rg.com.ua/
Генерация одноразовой ссылки...
« Ответ #1 : 16 Сентября 2004, 11:53:40 »
Файли никуда копировать не надо, они как лежали где-то так пусть и лежат, это задача файла отвечающего за скачивание подставить вместо ссылки файл. Как передать файл на скачивание обсуждалось много раз, с временными ссылками тоже ничего сложного:
 - генерируеш ссылку с уникальным ID, скажем так:
download.php?id=[подставляем ID]
 или можно красивее:
download/подставляем ID/hardcore.zip

- ID пишем в базу, как только ползователь нажмет на ссылку download.php  выдаст ему нужный файл и вытрет соответствующую запись из базы

- если download.php получает запрос с несуществующим ID - вежливо посылаем пользователя куда-нибудь...

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Генерация одноразовой ссылки...
« Ответ #2 : 16 Сентября 2004, 14:35:44 »
Daiz13
Я думаю, ты просто не понял вопроса...
Вопрс сотоит в том, что бы не показывать реальное расположение файла, для скачки...

Цитировать
Чтобы при определённом запросе пхп брал создавал одноразовую/временную ссылку и копирывал в неё файл совпадающий запросу. а после того как пипл скачал файл она удалялась...


Скрипту вообще все-равно, скачал "пипл" файл или не скачал, он просто перепишет файл куда надо, отдаст ссылку пользователю и закончит свою работу, он не будет ждать пока пользователь отправит ему ответ о скачке, или не скачке файла, потому, что пользователь ничего не скажет...

http://phpfaq.ru/na_tanke#start

А тема действительно не раз поднималась... В части передачи скриптом не ссылки, а конкретно файла. Поиск по сайту рулит...

Оффлайн Daiz13

  • наблюдатель
  • Постоялец
  • ***
  • Сообщений: 150
  • +0/-0
  • 2
    • Просмотр профиля
    • http://rg.com.ua/
Генерация одноразовой ссылки...
« Ответ #3 : 16 Сентября 2004, 19:17:40 »
Phoinix
Скорее ты не понял ответа, неужели я так запутано все написал?

Цитировать
Phoinix:
Вопрс сотоит в том, что бы не показывать реальное расположение файла, для скачки...

я же и говорю, пользователю мы даем не ссылку на сам файл, а ссылку на пхп-файл, отвечающий за скачивание. Реальное расположение файла нигде не светится. Я делал похожую фигню, и файлы у меня вообще лежат в невидимой из веба директории.


Цитировать
Phoinix:
Скрипту вообще все-равно, скачал "пипл" файл или не скачал, он просто перепишет файл куда надо, отдаст ссылку пользователю

это что за глупости? зачем копировать файлы?  Скрипт отдает не ссылку на файл, а контент файла.

чтобы не начинать тут флейм, специально для тех кто в танке, приведу готовый код:


 $url 
trim(preg_replace("/\\.+/","",$_SERVER[\'REQUEST_URI\']));
 if ($url[strlen($url)-1]<>\'/\') {
     $url .= \'/\';
 }
 $downloads_path = \'/home/sitename/files/\';
 preg_match ( \'/download\\/(\\w{1,20})\\//isU\', $url , $matches);
 $file = $matches[1];
 $filename = find_file($file, $downloads_path);
 if ($filename === false) {
     header("location: /error/404/");
 }
 header("Content-Type: application/force-download\\r\\n");
 header("Content-Transfer-Encoding: binary\\r\\n");
 header("Content-Length: ".filesize($downloads_path.$filename));
 header("Content-Disposition: attachment; filename=".$filename."\\r\\n");
 readfile($downloads_path.$filename);

    function find_file($file, $dir) {
        $dp=opendir($dir);
        if (!$dp) {
            trigger_error("Error opening directory for reading", E_USER_ERROR);
        }
        $patern = \'/(\'.$file.\'\\-\\d{4}\\-\\d{2}\\-\\d{2}\\.zip)/isU\';
        while (!(($de=readdir($dp))===FALSE))
        {
            if (preg_match ( $patern, $de , $matches))
            {
                return $matches[1];
            }
        }
        return false;
    }



$downloads_path = \'/home/sitename/files/\';  - тут лежат файлы, имя файл состоит из названия и даты, например hardcore_20040916.zip, скрипт получает ссылку /download/hardcore/  и выдает нужный файл.

Lexx

  • Гость
Генерация одноразовой ссылки...
« Ответ #4 : 16 Сентября 2004, 20:31:52 »
Вот здесь неплохой (как мне кажется) класс, написанный как раз для этого дела.

Оффлайн -DieseLok-

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 178
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kyivstar.biz
Генерация одноразовой ссылки...
« Ответ #5 : 17 Сентября 2004, 20:40:05 »
Всем спасибо!!!
Попробую что нибудь придумать....

Оффлайн -DieseLok-

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 178
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kyivstar.biz
Генерация одноразовой ссылки...
« Ответ #6 : 18 Сентября 2004, 10:31:18 »
У меня ещу просьба дайтк пожалуйста запрос по которому искать в поиске... ато

одноразовая ссылка и временная ссылка ничего не даёт :(

 

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