|
|
|
| Как я понял из материалов сети, для хранения mp3 принято использовать некие "динамические ссылки", которые исключают возможность того, что ссылка на этот файл появится в сети. То есть, вы даете ссылку на файл конкретному человеку, но если он эту ссылку опубликует где-либо, то по ней скачивания не будет.
Что это за ссылка и как она создается? | |
|
|
|
|
|
|
|
для: Владимир55
(17.08.2008 в 22:51)
| | Динамическая ссылка - это ссылка, передающая скрипту на сайте какие-либо параметры, поддающиеся изменению.
Например, можно узнать IP пользователя, сгенерировать случайный код и записать этот код вместе с IP в базу. Выдать эту ссылку пользователю с параметром - тем самым сгенерированным кодом. При попытке пользователем пройти по этой ссылке, скрипт должен будет проверить, совпадает ли IP из соотвествующей данному коду записи в БД с IP пользователя, перешедшего только что по этой ссылке. Если совпадает - значит по ссылке перешёл тот же самый пользователь, которому эта ссылка была выдана. Если нет - значит личер, которому вместо файла можно выдать страницу с текстом ошибки. | |
|
|
|
|
|
|
|
для: DDK
(17.08.2008 в 23:01)
| | Не совсем понял.
Предположим, что вот здесь http://anialevchenko.narod.ru/relax_music/Carmel_By_The_Sea.mp3 лежит музыкальный файл.
Как давать на него ссылки тем, кому это надо, чтобы они не засветили реальное место нахождения этого файла?
На практике это действует так: получаешь ссылку, а через час она уже недействительна. Хотя файлы, разумеется, никуда не переползают.
Как это делается? | |
|
|
|
|
|
|
|
для: Владимир55
(17.08.2008 в 23:22)
| | Закрыть директорию relax_music для прямого обращения, а файл отдавать через скрипт, который будет расположен на сервере и, конечно, сможет локально обращаться к директории relax_music - в скрипте можно любую логику реализовать. | |
|
|
|
|
|
|
|
для: cheops
(17.08.2008 в 23:32)
| | "Закрыть директорию relax_music для прямого обращения"
Но если о ней никто не будет знать, то это не обязательно?
"в скрипте можно любую логику реализовать"
Не могу даже предположить, какую логику? Например? | |
|
|
|
|
|
|
|
для: Владимир55
(17.08.2008 в 23:35)
| | Пример логики я описал выше | |
|
|
|
|
|
|
|
для: DDK
(17.08.2008 в 23:50)
| | IP здесь не используется. | |
|
|
|
|
|
|
|
для: Владимир55
(17.08.2008 в 23:56)
| | Поищите примеры антилич-скриптов и разберитесь на их примере, как оно обычно работает. | |
|
|
|
|
|
|
|
для: Владимир55
(17.08.2008 в 23:35)
| | >"Закрыть директорию relax_music для прямого обращения"
>Но если о ней никто не будет знать, то это не обязательно?
В общем да, но закрыть директорию при помощи .htaccess дело пары секунд, достаточно прописать в нем одну строку
>"в скрипте можно любую логику реализовать"
>Не могу даже предположить, какую логику? Например?
Простейший пример (не поддерживающий докачку), можно найти в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=50795. | |
|
|
|
|
|
|
|
для: cheops
(18.08.2008 в 00:17)
| | >Простейший пример (не поддерживающий докачку), можно найти в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=50795.
Такой скрипт будет завершаться через 30 секунд на большинстве хостингов, независимо закончена скачивание или нет. Да и ресурсы дополнительные нужны для PHP-скрипта...
Может быть возможно инициализировать сессию и положить такой файл .htaccess, в директорию с музыкальным файлом, который позволит его скачивать только тому, у кого идентификатор сессии будет соответствовать? | |
|
|
|
|
|
|
|
для: Eugene77
(18.08.2008 в 18:45)
| | "Такой скрипт будет завершаться через 30 секунд "
Это верно! Тогда надо дополнить его set_time_limit() | |
|
|
|
|
|
|
|
для: Владимир55
(18.08.2008 в 19:46)
| | Надо просто заменить echo file_get_contents ... на readfile(). | |
|
|
|
|
|
|
|
для: BinLaden
(18.08.2008 в 19:48)
| | >Надо просто заменить echo file_get_contents ... на readfile().
Вы хотите сказать, что readfile() продолжает работать и после завершения скрипта? | |
|
|
|
|
|
|
|
для: Eugene77
(18.08.2008 в 20:09)
| | Нет. Если скрипт завершился - то это конец :)
echo file_get_contents() всё утянет в RAM и по-просту уже из-за этого можно не дождаться содержимого.
А readfile() вроде как не создаёт какой-либо особой нагрузки на процессор и RAM, что и видимо позволяет не учитывать время отдачи содержимого за execution time. То есть на самом деле скрипт будет выполняться дольше max_execution_time. Впрочем, такое часто может происходить. Например, время выполнения SQL-запросов тоже не учитывается.
Впрочем, Вы можете проверить сами. Сделайте max_execution_time = 1 и попытайтесь отдать большой файл двумя способами. | |
|
|
|
|
|
|
|
для: 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. | |
|
|
|
|
|
|
|
для: Eugene77
(18.08.2008 в 18:45)
| | >>Простейший пример (не поддерживающий докачку), можно найти в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=50795.
>
>Такой скрипт будет завершаться через 30 секунд на большинстве хостингов, независимо закончена скачивание или нет. Да и ресурсы дополнительные нужны для PHP-скрипта...
>Может быть возможно инициализировать сессию и положить такой файл .htaccess, в директорию с музыкальным файлом, который позволит его скачивать только тому, у кого идентификатор сессии будет соответствовать?
Это не так, время передачи данных не учитывается в 30 секундах машинного времени, отводимого под выполнение скрипта. | |
|
|
|
|
|
|
|
для: Владимир55
(17.08.2008 в 23:35)
| | Вы даете пользователю ссылку на одно имя файла, реально несуществующее, а скрипт считывает данные из другого реального файла и отдает пользователю. А отданную ссылку вы можете любым способом проверить на валидность (срок действия, IP и т.п.), это уже другой вопрос. | |
|
|
|