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

Статус
В этой теме нельзя размещать новые ответы.

Qwest-fx

Профессор
Регистрация
3 Апр 2007
Сообщения
134
Реакции
41
Создание временных ссылок для скачивания платного содержимого сайта.
С использованием SQL и модреврайта.

Подстажите как реализовать?
 
Я думаю там понятно написано
_http://habrahabr.ru/blogs/php/22750/
, только скуль там не используеся
 
как вариант использовать rewrite если это шаредный хостинг - если свой (vps например)- то лучше всего с помощью x-accel-redirect для nginx
 
как вариант использовать rewrite если это шаредный хостинг - если свой (vps например)- то лучше всего с помощью x-accel-redirect для nginx


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

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

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

Возвращает TRUE в случае успешного завершения
или FALSE в случае возникновения ошибки.
Замечание: Для Windows-платформ эта фун
кция не реализована.
 
Решил использовать самлинки.
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.`filename` FROM download d
WHERE
d.`site` = '$mysite'
AND d.`linkname` = '$temp_link_name'
AND d.`ip` = '$user_ip'
AND d.`tstamp` + INTERVAL d.`valid_hours` HOUR > NOW()

последнее условие проверит что время которое ссылка действительна не истекло.

Заодно сразу имеете статистику скачивания каждого файла раз
статстику по айпишникам два
не надо постоянно создавать и удалять симлинки три - бд работает резвее
 
Файлов примерно 7 Тбайт, Это фильмы.
 
ну я же не предлагаю их в базу загонять, я предлагаю временные ссылки хранить в бд

Как файлы будут отдаваться пользователю на скачку?
PHP ? Это уже не вариант, т.к. нагрузка на сервак большая.
 
а чем вам неустраивает вариант x-accel-redirect (nginx для отдачи) и сгенеренные ссылки из базы ?
 
где-то видел ДЛЕ модуль для защиты ссылок. Там в настройках можно было ставить срок действия ссылки.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху