Заголовок сообщения: Помогите с логикой Добавлено: 19 Апрель 2008, 20:42:37
Не могу придумать как лучше всего осуществить такой вот процесс:
человек отправляет сообщение (например e-mail), а ему в ответ приходит что-то типа link.com/12345.mp3 и перейдя туда, он может это скачать. но на деле должно быть так, что на хостинг такого файла нет, а лежит link.com/pesnja.mp3 но прямая ссылка никому не доступна. И вот чтобы человек мог пройти и скачать этот файл. но только со своего IP (т.е. человек прошёл по ссылке и его ай-пи запислся), другой человек, пройдя по ссылке увидит фигу. и ему надо отправить тоже туда сообщение и он получит уже другой линк, но на тот же файл, который будет доступен только ему. как это лучше всего реализовать? не обязательно чтобы в конце стоял этот mp.3. файлы довольно тяжеловесные, потому копировать их на сервере с разными именами как вариант не годится.
_________________ [*][ЩАСТЬЕ] I am Macintosh user DE'журнал. Быть или не быть? всё обо мне
Вам наверно не надо проверка по IP адресу.
- Во первых люди могут зарегистрироваться из кафе и уже дома скачивать файл.
- Во вторых IP могут быть динамичными
проверка должна идти по ссылке, которая заканчивается: download.php?file=abracadabra
Первое что приходит в голову:
- файлы лежат в отдельной защищенной (mod_rewrite, unix permissions) директории
- только PHP программа имеет право их читать
- как только линк прошел проверку - PHP достает файл и показывает (header) окошко скачать.
- через некоторое время линк можно сделать недействительным
Реально я такого еще не делал, поэтому хотелось бы услышать мнения
_________________ Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
хммм... ну суть такая, что файл может скачать только человек, отправивший сообщение и чтобы при передаче другим людям эа ссула не работала, а работала только для него. но в связи с тем, что файлы тяжеловесные, должна быть возможность скачать их ещё раз в случае, если прирвётся соединение с интернетом.
Про защищённые файлы в папке идея мне нравится. Осталось только почитать в инете про заголовки т.к. я давным давно ничего не программировал
_________________ [*][ЩАСТЬЕ] I am Macintosh user DE'журнал. Быть или не быть? всё обо мне
Что значит "например e-mail"? С e-mail такое дело не пройдет.
С простым сообщением через форму на сервере легко. если прирвётся соединение с интернетом и сменится адрес у пользователя, то ес-но надо получать новую ссыль.
ну я подумал в итоге сделать через систему смс. человеку придёт сообщение с уникальной ссылкой типа link.com/get.php?id=12345
при переходе по ссылке скачивается файл. но днный конкретный человек (человек первым зашедший по ссылке) может пользоваться ею сколько угодно раз (из под этого АйПи), а если скинет ссылку третему лицу, то там она не заработает. Система с защищенными папками годится. сейчас вот размышляю можо ди такое сделать если обработчик link.com/get.php находится на одном хостинге, а скачиваемые файлы на другом (например site.ru/song.mp3) т.к. у меня есть хостинг рабочий где дофига места, но там нет MySQL, а там где он есть, у меня хостинг всего на 250 мегабайт.
_________________ [*][ЩАСТЬЕ] I am Macintosh user DE'журнал. Быть или не быть? всё обо мне
суть не меняется. тут генератор идентификаторов, а файл в конечном итоге лежит где-то на хостинге со вполне прямой ссылкой, которую адо дать человеку для скачивания. но как-то так, чтобы скачать по этой ссылке мог только конкретный человек. по сути этот вопрос уже реализовал, осталость только про заголовки эти вспомнить. типа как сделать так, чтобы выскакивало окошко "сохранить". и узнать возможно ли файл держать на другом хостинге при том, что напрямую доступ к нму закрыт, а дан только скрипту, который находится на другом хостинге.
_________________ [*][ЩАСТЬЕ] I am Macintosh user DE'журнал. Быть или не быть? всё обо мне
а не проще сделать генератор ключей на скачку и рассылать уже ключи?
Полностью поддерживаю.
Born2be писал(а):
но днный конкретный человек (человек первым зашедший по ссылке) может пользоваться ею сколько угодно раз (из под этого АйПи), а если скинет ссылку третему лицу, то там она не заработает.
Если человек захочет поделиться файлом - он не будет кидать ссылку, а просто скинет файл. ИМХО проверка по IP адресу - это головная боль юзерам (у которых IP сменится) и тех. поддержке.
Born2be писал(а):
у меня есть хостинг рабочий где дофига места, но там нет MySQL, а там где он есть, у меня хостинг всего на 250 мегабайт
Я бы разрешил доступ к базе (на хостинге 1), сайту который находится на хостинге 2.
_________________ Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
перейдя туда, он может это скачать. но на деле должно быть так, что на хостинг такого файла нет, а лежит link.com/pesnja.mp3 но прямая ссылка никому не доступна. И вот чтобы человек мог пройти и скачать этот файл. но только со своего IP (т.е. человек прошёл по ссылке и его ай-пи запислся)
Объясните тупому, нах это надо? Когда мне начали названивать "из органов", я просто сменил ип, а теперь он вообще у меня каждую сессию разный. Или есть дураки, до сих пор готовые платить за такую лабуду?
_________________ Выкуренная сигарета сокращает жизнь на 2 часа, выпитая бутылка водки — на 3. Рабочий день сокращает жизнь на 8 часов.
0 Сообщения: 8 Зарегистрирован: 14.04.08 Откуда: Россия
Добавлено: 28 Апрель 2008, 01:04:35
Киньте куку когда посетитель пройдет по ссылке, без ограничений времени жизни куки.
В куке укажите что-то типа "свой чувак", а исходную ссылку сразу сделайте недействительной.
Далее - редирект на скрипт скачивания, читаем и проверяем куку, если свой, то велкам, если чужак - иди лесом.
куки имеют свойство пропадать или чиститься
имхо, лучше пользоваться сессиями (в пхп сессии и кукисы - разные вещи)
в сессию помещаем сгенерированный идентификатор для файла - если он совпал с тем что в сообщении по смс или мылу, даем скачивать
а срок жизни сессии наверное стоит делать все-таки ограниченным - но при этом предупреждать пользователя что "данная ссылка будет работать только в течении 48 часов"
хммм... ну суть такая, что файл может скачать только человек, отправивший сообщение и чтобы при передаче другим людям эа ссула не работала, а работала только для него
Так работают порно сайты, сессия живёт день, у тебя есть её id. В сессии есть линк на файл. Скачает любой кто знает id живой сессии.
Нужно делать просто и тупо, работает как часы:
1. пришла смска - с номера 1111111 на запрос файла kakbe_golaja_baba.mp3
2. создали зашифрованный линк на файл, включающий в себя $nomerTelefona.$filename, где ключ шифра - номер телефона + номер телефона зашифрованный общим ключом
3. полученную абракадабру отдали пользователю.
4. пользователь ткнул линк.
5. расшифорвали линк, в базу записали: номер телефона такой-то, взял такой то файл, стока та раз, в такое то время, с такого-то IP.
6. отдали файл.
Также, следует не забывать прикрутить мэйнтейнц к базе, для сборки и удаление трупиков.
Плюс не забыть про сбор статистики обращений к файлам. Дабы сделать топ.
P.s.
можно ставить ограничение на отдачу файлов. Не более пяти раз например, или при повторном обращением к файлу должен совпасть IP записанный первый раз.
p.p.s
Хотя фильтровать по ip - это зло.
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.