Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Что такое "динамическая ссылка"?
 
 автор: Владимир55   (17.08.2008 в 22:51)   письмо автору
 
 

Как я понял из материалов сети, для хранения mp3 принято использовать некие "динамические ссылки", которые исключают возможность того, что ссылка на этот файл появится в сети. То есть, вы даете ссылку на файл конкретному человеку, но если он эту ссылку опубликует где-либо, то по ней скачивания не будет.

Что это за ссылка и как она создается?

  Ответить  
 
 автор: DDK   (17.08.2008 в 23:01)   письмо автору
 
   для: Владимир55   (17.08.2008 в 22:51)
 

Динамическая ссылка - это ссылка, передающая скрипту на сайте какие-либо параметры, поддающиеся изменению.

Например, можно узнать IP пользователя, сгенерировать случайный код и записать этот код вместе с IP в базу. Выдать эту ссылку пользователю с параметром - тем самым сгенерированным кодом. При попытке пользователем пройти по этой ссылке, скрипт должен будет проверить, совпадает ли IP из соотвествующей данному коду записи в БД с IP пользователя, перешедшего только что по этой ссылке. Если совпадает - значит по ссылке перешёл тот же самый пользователь, которому эта ссылка была выдана. Если нет - значит личер, которому вместо файла можно выдать страницу с текстом ошибки.

  Ответить  
 
 автор: Владимир55   (17.08.2008 в 23:22)   письмо автору
 
   для: DDK   (17.08.2008 в 23:01)
 

Не совсем понял.

Предположим, что вот здесь http://anialevchenko.narod.ru/relax_music/Carmel_By_The_Sea.mp3 лежит музыкальный файл.

Как давать на него ссылки тем, кому это надо, чтобы они не засветили реальное место нахождения этого файла?

На практике это действует так: получаешь ссылку, а через час она уже недействительна. Хотя файлы, разумеется, никуда не переползают.

Как это делается?

  Ответить  
 
 автор: cheops   (17.08.2008 в 23:32)   письмо автору
 
   для: Владимир55   (17.08.2008 в 23:22)
 

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

  Ответить  
 
 автор: Владимир55   (17.08.2008 в 23:35)   письмо автору
 
   для: cheops   (17.08.2008 в 23:32)
 

"Закрыть директорию relax_music для прямого обращения"
Но если о ней никто не будет знать, то это не обязательно?

"в скрипте можно любую логику реализовать"
Не могу даже предположить, какую логику? Например?

  Ответить  
 
 автор: DDK   (17.08.2008 в 23:50)   письмо автору
 
   для: Владимир55   (17.08.2008 в 23:35)
 

Пример логики я описал выше

  Ответить  
 
 автор: Владимир55   (17.08.2008 в 23:56)   письмо автору
 
   для: DDK   (17.08.2008 в 23:50)
 

IP здесь не используется.

  Ответить  
 
 автор: DDK   (18.08.2008 в 00:13)   письмо автору
 
   для: Владимир55   (17.08.2008 в 23:56)
 

Поищите примеры антилич-скриптов и разберитесь на их примере, как оно обычно работает.

  Ответить  
 
 автор: cheops   (18.08.2008 в 00:17)   письмо автору
 
   для: Владимир55   (17.08.2008 в 23:35)
 

>"Закрыть директорию relax_music для прямого обращения"
>Но если о ней никто не будет знать, то это не обязательно?
В общем да, но закрыть директорию при помощи .htaccess дело пары секунд, достаточно прописать в нем одну строку
deny from all

>"в скрипте можно любую логику реализовать"
>Не могу даже предположить, какую логику? Например?
Простейший пример (не поддерживающий докачку), можно найти в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=50795.

  Ответить  
 
 автор: Eugene77   (18.08.2008 в 18:45)   письмо автору
 
   для: cheops   (18.08.2008 в 00:17)
 

>Простейший пример (не поддерживающий докачку), можно найти в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=50795.

Такой скрипт будет завершаться через 30 секунд на большинстве хостингов, независимо закончена скачивание или нет. Да и ресурсы дополнительные нужны для PHP-скрипта...
Может быть возможно инициализировать сессию и положить такой файл .htaccess, в директорию с музыкальным файлом, который позволит его скачивать только тому, у кого идентификатор сессии будет соответствовать?

  Ответить  
 
 автор: Владимир55   (18.08.2008 в 19:46)   письмо автору
 
   для: Eugene77   (18.08.2008 в 18:45)
 

"Такой скрипт будет завершаться через 30 секунд "

Это верно! Тогда надо дополнить его set_time_limit()

  Ответить  
 
 автор: BinLaden   (18.08.2008 в 19:48)   письмо автору
 
   для: Владимир55   (18.08.2008 в 19:46)
 

Надо просто заменить echo file_get_contents ... на readfile().

  Ответить  
 
 автор: Eugene77   (18.08.2008 в 20:09)   письмо автору
 
   для: BinLaden   (18.08.2008 в 19:48)
 

>Надо просто заменить echo file_get_contents ... на readfile().

Вы хотите сказать, что readfile() продолжает работать и после завершения скрипта?

  Ответить  
 
 автор: BinLaden   (18.08.2008 в 21:59)   письмо автору
 
   для: Eugene77   (18.08.2008 в 20:09)
 

Нет. Если скрипт завершился - то это конец :)

echo file_get_contents() всё утянет в RAM и по-просту уже из-за этого можно не дождаться содержимого.

А readfile() вроде как не создаёт какой-либо особой нагрузки на процессор и RAM, что и видимо позволяет не учитывать время отдачи содержимого за execution time. То есть на самом деле скрипт будет выполняться дольше max_execution_time. Впрочем, такое часто может происходить. Например, время выполнения SQL-запросов тоже не учитывается.

Впрочем, Вы можете проверить сами. Сделайте max_execution_time = 1 и попытайтесь отдать большой файл двумя способами.

  Ответить  
 
 автор: BinLaden   (19.08.2008 в 01:23)   письмо автору
 
   для: Eugene77   (18.08.2008 в 20:09)
 

Кстати, вот цитата из мануала:

The maximum execution time is not affected by system calls, stream operations etc. Please see the set_time_limit() function for more details.

  Ответить  
 
 автор: cheops   (19.08.2008 в 00:15)   письмо автору
 
   для: Eugene77   (18.08.2008 в 18:45)
 

>>Простейший пример (не поддерживающий докачку), можно найти в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=50795.
>
>Такой скрипт будет завершаться через 30 секунд на большинстве хостингов, независимо закончена скачивание или нет. Да и ресурсы дополнительные нужны для PHP-скрипта...
>Может быть возможно инициализировать сессию и положить такой файл .htaccess, в директорию с музыкальным файлом, который позволит его скачивать только тому, у кого идентификатор сессии будет соответствовать?


Это не так, время передачи данных не учитывается в 30 секундах машинного времени, отводимого под выполнение скрипта.

  Ответить  
 
 автор: GeorgeIV   (18.08.2008 в 00:19)   письмо автору
 
   для: Владимир55   (17.08.2008 в 23:35)
 

Вы даете пользователю ссылку на одно имя файла, реально несуществующее, а скрипт считывает данные из другого реального файла и отдает пользователю. А отданную ссылку вы можете любым способом проверить на валидность (срок действия, IP и т.п.), это уже другой вопрос.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования