Как позволить юзеру скачать файл только после регистрации?

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Watts[]n!
Постоялец
Постоялец
 
Сообщения: 573
Зарегистрирован: 11.02.2007 (Вс) 0:19

Как позволить юзеру скачать файл только после регистрации?

Сообщение Watts[]n! » 04.05.2008 (Вс) 21:23

Ситуация такая.
Имеется форум и сайт (на котором около двух тысяч музыкальных файлов). Пользователи могут свободно скачивать их, но есть также архив со всеми ими. Для того, чтобы скачать архив, нужно зарегистрироваться на форуме.
Теперь вопрос: Как сделать так, чтобы скачав файл, человек не мог бы дать ссылку на него другому (вернее, смог бы, но ссылка не работала), чтобы мне не терять регистрации на форуме.
То есть, нужно что-то вроде динамически изменяющейся ссылки.
P.S. Ставить пароль на архив, как я понимаю, смысла нет, так как никто не мешает человеку распространить пароль.

ACiD
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 261
Зарегистрирован: 10.12.2005 (Сб) 2:29
Откуда: г. Санкт - Петербург

Сообщение ACiD » 04.05.2008 (Вс) 21:42

ключевые слова: php, session, cookie
и не для этого форума.

Watts[]n!
Постоялец
Постоялец
 
Сообщения: 573
Зарегистрирован: 11.02.2007 (Вс) 0:19

Сообщение Watts[]n! » 05.05.2008 (Пн) 13:03

Гм... Что-то я тормознул. Если файл приаттачить к сообщению на форуме, то его можно будет скачать только после регистрации.
А если файл будет лежать на другом сервере (например, на Рапидшаре), то тогда никак...
ACiDXX
А почему не для этого форума? Тот же php, сессии опять же. Правда, я во всём этом пока не много понимаю.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 05.05.2008 (Пн) 13:30

Watts[]n!
Лучший вариант -- использование mod_rewrite с редактируемой картой реврайтинга№ Потому что в процессе самой скачки php не будет являться промежуточным звеном.

Если возможности сделать это нет, то php придётся делать промежуточным звеном. Т.е. запрос поступает к php скрипту, скрипт что-то думает, читает содержимое файла и выдаёт его клиенту в stdout, клиенту. При этом придётся php-скриптом анализировать все заголовки (включая partial-content-ные, иначе пользователи будут материть твой сайт).

Сам механизм заключается в создании отдельной таблицы с 4 полями: [ID пользователя], [Ключ скачки], [Ресурс], [Время добавления].

При генерации ссылки, скрипт генерирует уникальный "ключ скачки", и заносит в таблицe запись, содержащую ид пользователя, которому была отдана ссылка, уник. ключ ссылки, ресурс, который должен быть отдан пользователю по этой ссылке.

Скрипт-гейт, через который будет осуществляться скачивание, проверяет переданный уникальный ID, т.е. запрашивает из специальной таблицы запись с таким ID-ом, и если такая есть, используя поле [Ресурс] отдаёт пользователю файл.

Если же такой записи нет (число записей = 0), -- вежливо посылает пользователь.

И вне зависимости от того, удалось ли найти записиь или нет, делает запрос, который удаляет все записи из этой таблице, у которых [время добавления] будет меньше, чем ТекущееВремя минус СрокЖизниСсылки.

И топик по теме:
http://fire-lines.ru/forum/viewtopic.php?t=301
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Watts[]n!
Постоялец
Постоялец
 
Сообщения: 573
Зарегистрирован: 11.02.2007 (Вс) 0:19

Сообщение Watts[]n! » 06.05.2008 (Вт) 21:46

Хакер
Большое спасибо за ответ и за ссылку!
Но сейчас он мне не пригодится (пока), потому что без знания PHP этого мне не сделать (а возможностей админки бесплатного сервиса, предоставляющего форум, как мне кажется, не хватит). После сессии начну изучать :) а там еще вопросы появятся, я думаю.


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 57

    TopList