Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Как сделать плееру динамическую ссылку без её полного сохранения в базе?

Как сделать плееру динамическую ссылку без её полного сохранения в базе?


     20.03.2014    плеер, новости, сохранение, защита, шифрация    Все вопросы » Хаки    3381

вопрос
Добрый день! Возникла необходимость защитить контент с фильмами от несанкционированного и неограниченного скачивания всеми подряд. Кусок кода для подгрузки плеера в файле parse.class.php :
<div id="jw-'.$id_player.'">Loading the player...</div>

<script type="text/javascript">
    jwplayer("jw-'.$id_player.'").setup({
    file: "http://nr4.domain_name.uz' . $url . '?st=' . $md5 . '&e=' . $expire . '",
    primary: "html5",
    startparam: "start",
    skin: "/engine/classes/flashplayer/five.xml",
        image: "http://domain_name/player-bg.jpg",
    analytics: {
        enabled: "false",
        cookies: "false"
    }
    });
</script>

Планировалось, что добавленные к ссылке на файл переменные типа $md5 и $expire будут добавлять к ссылке случайный код, который может обновляться спустя какое-то время (раз в час или в два). Но в результате того, что dle всю новость записывает в базу данных, в таблицу dle_post, получается статичная страница фактически и эта ссылка также всегда остаётся статичной до следующего её пересохранения или перепубликации. Подскажите пожалуйста, кто уже сталкивался, как можно сделать так, чтоб последние переменные всегда динамично подгружались к ссылке, а не сохранялись в базе вместе с публикацией.

Ответа пока нет


7 комментариев

cybernatic
Эксперт

cybernatic - 20 марта 2014 14:20 -

Обычно ключ $expire выдается самим скриптом на определенное время то есть с фунцией php date()
можете использовать timestamp.
Если вебсервер у Вас раздающий nginx то там можно использовать правила.

alextretyakov
Юзер

alextretyakov - 20 марта 2014 14:36 -

Может быть я вас не совсем понял, но проблема не в генерировании этого ключа, а в том, что dle берёт этот ключ и записывает его как весь полный путь в базу данных, в full_story и получается, что эта ссылка уже становится как бы вечной, статичной. Толку от неё нет. Хотелось бы, чтобы она при каждом обновлении страницы с этой новостью этот ключ для плеера подгружался отдельно. Как вот это реализовать? Чтоб в базу не записывал этот хвост от ссылки?

cybernatic
Эксперт

cybernatic - 20 марта 2014 14:40 -

Вы через что раздаете сам медиа файл?

alextretyakov
Юзер

alextretyakov - 20 марта 2014 14:51 -

вместо стандартного медиаплеера прикручен JW Player. В статье стандартным dle-тегом в квадратных скобках задаётся путь к файлу. Потом он сверяет путь через parse.class.php, берёт оттуда сгенерированную ссылку, сохраняет путь в базу данных. Потом просто люди смотрят на сайте. В моём примере за прямую ссылку на файл отвечает $url. Вроде так

cybernatic
Эксперт

cybernatic - 20 марта 2014 14:54 -

Вам надо логику сменить чтобы ничего не хранилось в базе данных а просто генерировалось автоматом для чего я и сказал Вам про php date и timestamp к примеру.
Путь к файлу тоже сделайте динамическим, используйте rewrite если надо, пусть php файл сверяет и отдает по хэшу, либо показывает 404.
Так же можно настроить и сам NGINX вебсервер чтобы проверял TOKEN.

alextretyakov
Юзер

alextretyakov - 20 марта 2014 15:00 -

Хорошо. Тогда может подскажите как выключить эту функцию, чтоб не записывал в базу? Потому что в стандартных настройках этого нет. Весь пост целиком загоняется в базу.

Nick
Юзер

Nick - 20 марта 2014 16:44 -

Организуете встраивание плеера по средствам iframe. Например:
<iframe src="http://site.com/video_ext.php?id=195"></iframe>
(https://dle-faq.ru/faq/common/8021-raznye-pleery-dlya-polnoy-i-mobilnoy-versii-sayta.html#comment-id-20749)

В базе будут всегда статичные ссылки (http://site.com/video_ext.php?id=195).

В скрипте http://site.com/video_ext.php?id=195 делаете все нужные проверки и формируете ссылку на файл.

В этом же скрипте выводим код для плеера, где адрес для видео файла будет, например, http://video.site.com/video/1a9b23f7a8e9227d52f1815faaac0945/195.mp4 .

На поддомене http://video.site.com/ средствами nginx разбираем на части посланный url для видео файла и все это отправляем ещё в один скрипт, который проверяет сформированный хеш 1a9b23f7a8e9227d52f1815faaac0945 на правильность и в случае успеха отдает файл 195.mp4.

В результате:
Для каждого пользователя, загрузившего iframe на странице будет формироваться свой индивидуальный хеш код, в который, как правило, запихивается ip, время жизни и какое-то ключевое слово.
В базе у Вас статические ссылки.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

 10.10.2012 lexa21reg  Хаки
наверх