Создание временных ссылок для скачивания

Тема в разделе "PHP", создана пользователем Qwest-fx, 31 май 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Qwest-fx

    Qwest-fx Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    129
    Симпатии:
    39
    Создание временных ссылок для скачивания платного содержимого сайта.
    С использованием SQL и модреврайта.

    Подстажите как реализовать?
     
  2. @lex

    @lex Постоялец

    Регистр.:
    13 июн 2006
    Сообщения:
    50
    Симпатии:
    3
    Я думаю там понятно написано
    _http://habrahabr.ru/blogs/php/22750/
    , только скуль там не используеся
     
  3. max-oligarh

    max-oligarh Постоялец

    Регистр.:
    4 май 2009
    Сообщения:
    68
    Симпатии:
    2
    как вариант использовать rewrite если это шаредный хостинг - если свой (vps например)- то лучше всего с помощью x-accel-redirect для nginx
     
  4. Qwest-fx

    Qwest-fx Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    129
    Симпатии:
    39

    У меня свой сервер! И находится полностью под моим контролем.

    Решил использовать самлинки. И ограничивать доступ к файлам по IP.
    По Cron будет запускаться скрипт который будет следить за временем существования линка.

    Код:
    <?
    symlink  ($target  , $link  )
    ?>
    
    symlink() создаёт символическую ссылку с именем link
    на существующий файл target .

    Возвращает TRUE в случае успешного завершения
    или FALSE в случае возникновения ошибки.
    Замечание: Для Windows-платформ эта фун
    кция не реализована.
     
  5. jer2

    jer2 Писатель

    Регистр.:
    4 июн 2009
    Сообщения:
    5
    Симпатии:
    1
    imho не лучшее решение: пока скрипт используется в одном месте номально, а при повторном использовании начнут плодится симлинки и дирректори с ними и держать под контролем будет трудно - многие уже фотографии в бд загоняют, чтоб файлами не хранить.

    я бы создал примерно такую таблицу:

    Код:
    CREATE TABLE  `test`.`download` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `site` varchar(15) NOT NULL,
      `linkname` varchar(255) NOT NULL,
      `filename` varchar(255) NOT NULL,
      `tstamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `ip` varchar(15) NOT NULL,
      `valid_hours` tinyint(3) unsigned NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
    и при запросе файла проверял:

    PHP:
    SELECT d.`filenameFROM download d
    WHERE
    d
    .`site` = '$mysite'
    AND d.`linkname` = '$temp_link_name'
    AND d.`ip` = '$user_ip'
    AND d.`tstamp` + INTERVAL d.`valid_hoursHOUR NOW()
    последнее условие проверит что время которое ссылка действительна не истекло.

    Заодно сразу имеете статистику скачивания каждого файла раз
    статстику по айпишникам два
    не надо постоянно создавать и удалять симлинки три - бд работает резвее
     
  6. Qwest-fx

    Qwest-fx Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    129
    Симпатии:
    39
    Файлов примерно 7 Тбайт, Это фильмы.
     
  7. jer2

    jer2 Писатель

    Регистр.:
    4 июн 2009
    Сообщения:
    5
    Симпатии:
    1
    ну я же не предлагаю их в базу загонять, я предлагаю временные ссылки хранить в бд
     
  8. Qwest-fx

    Qwest-fx Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    129
    Симпатии:
    39
    Как файлы будут отдаваться пользователю на скачку?
    PHP ? Это уже не вариант, т.к. нагрузка на сервак большая.
     
  9. max-oligarh

    max-oligarh Постоялец

    Регистр.:
    4 май 2009
    Сообщения:
    68
    Симпатии:
    2
    а чем вам неустраивает вариант x-accel-redirect (nginx для отдачи) и сгенеренные ссылки из базы ? http://blog.kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/lang/ru/
     
  10. AdUser

    AdUser Создатель

    Регистр.:
    16 сен 2007
    Сообщения:
    18
    Симпатии:
    3
    где-то видел ДЛЕ модуль для защиты ссылок. Там в настройках можно было ставить срок действия ссылки.
     
Статус темы:
Закрыта.