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

Tor

Новичок
хорошо, давай медленно

на самом деле будут авишники по 700 МБ
качать ИЕ - флаг в руки

Каждый отправленный байт доходит до пользователя. Если ты отправил X байт, то это вовсе не значит, что пользователь получил ровно X байт
а=а, но а!=a
вас как прикажите понимать?
 

COBRA094

Новичок
народ, народ, народ, ну хоть кусочек кода с примером мне покажут? :) Я вижу некоторые уже сталкивались здесь с подобной проблемой видимо для собственных нужд, пожалуйста киньте примерчик... а дальше я сам доработаю как чего... там ну чтоб в файл чтоль писал или в мусклявую таблицу сколько вот конкретно скачал конкретный юзер... ну или на самый крайняк как просто определить что юзер файл полностью скачал - не надо там что вот сегодня от 200 Мб слил и завтра дольет еще 500. просто вот человек оплатил файл я даю ему неделю например скачивать этот файл (это про докачку я имею ввиду), но если он скачал его раньше - ссылку убиваю...
 

SiMM

Новичок
> а=а, но а!=a
Читай внимательнее и осмысленнее. Твоё неверное допущение - каждый отправленный байт доходит до пользователя. Остальное - объяснение того, в чём ты не прав (Если ты отправил X байт, то это вовсе не значит, что пользователь получил ровно X байт).
 

Tor

Новичок
давайте разберемся:
Crazy:
или
"Каждый отправленный байт доходит до пользователя"
или
"Если ты отправил X байт, то это вовсе не значит, что пользователь получил ровно X байт"
???

я знаю правильны ответ, но вот знаешь ли его ты
 

Crazy

Developer
Автор оригинала: Tor
качать ИЕ - флаг в руки
Друг мой, это ты расскажи совету безопасности ООН. Ползователям твое мнение даже боком не уперлось.

а=а, но а!=a
вас как прикажите понимать?
Ok. Рассмотрим на примере: ты написал приятелю 1000 писем и отправил почтой. Сколько писем он получит? Обязательно 1000?

-~{}~ 30.03.05 16:57:

Автор оригинала: Tor
"Каждый отправленный байт доходит до пользователя"
или
"Если ты отправил X байт, то это вовсе не значит, что пользователь получил ровно X байт"
???
ты полагаешь эти утверждение неэквивалентными? Можно в таком случае если не логическое доказательство, то хотя бы пример, иллюстрирующих соблюдение одного правила и нарушение другого?

Случай "пользователь получил БОЛЬШЕ" байт, чем было отправлено я не рассматриваю. Или стоит?
 

ForJest

- свежая кровь
COBRA094
Уже не важно :)
[m]readfile[/m]
[m]fpassthru[/m]
смотри комменты.
 

Tor

Новичок
на пальцах, последний раз

1000 писем можно отправить и получить 1
1000 пакетов можно отправить, но получить не 1000 невозможно, и апач тут ни при чем - это особенность протокола

-~{}~ 30.03.05 16:04:

Каждый отправленный байт доходит до пользователя
отправили n байт, получили m
n=m

Если ты отправил X байт, то это вовсе не значит, что пользователь получил ровно X байт
отправили n, получили m
n!=m

ты утверждаешь, что это эквивалентные утверждения?
 

TAHK

Guest
Это все смотря основываясь на каком протоколе мы передаем данные. Если мы используем TCP/IP, то пользователь получит столько сколько мы ему отправим, точнее если он перестанет получать пакеты мы их перестанем отправлять и будем пытатся ему доставить последний пакет, от которого не пришло подтверждение доставки. Если же мы используем UDP, то на пальцах это как раз и есть случай с письмами.
 

Crazy

Developer
Автор оригинала: Tor
1000 пакетов можно отправить, но получить не 1000 невозможно, и апач тут ни при чем - это особенность протокола
Я рад, что ты вспомнил про апач. Под особенностью протокола ты, надо понимать, имеешь в виду схему квитирования TCP? И под отправкой ты понимаешь момент, когда TCP-стэк возвращает управление со слова "все доставлено".

Вот только ты забыл одну забавную вещь: мы не говорим о работе TCP-стэка. Над ним и с передающей, и с принимающей сторон стоит софт. О котором ты забыл.

А теперь вернемся к апачу: ты уверен, что тебе в точности будет передана информация о том, что НА САМОМ деле удалось отправить клиенту? И как, кстати, конкретно ты собираешься ее получить?

Это мы говорили об одной из сторон. А их, как я уже сказал, две. Вопрос два: как ты собираешься убедиться в том, что последний отправленный тобой пакет был получен и успешно обработан на application layer?

Теперь об утверждениях: одно из них есть отрицания другого. Я думал, что это очевидно.

Ты ТОЛЬКО это имел в виду?
 

Tor

Новичок
будем знать, к кому отправлять глупые вопросы - телепаты уже есть

как, кстати, конкретно ты собираешься ее получить
собственно, никак
даже пытаться не буду

как ты собираешься убедиться в том, что последний отправленный тобой пакет был получен и успешно обработан на application layer
опять же - никак
хотя 5%-ый люфт, я вижу, ты не заметил
 

Crazy

Developer
Tor, во-первых ты забыл, после какой фразы пошла твоя реплика (ага, телепатия):

если объем скачанного стал равен объему файла - доступ к файлу закрывать.
Глупо и бессмысленно: после первого же обрыва файл станет недокачиваем.
Люфт нет смысла рассматривать ввиду пункта 1 (см. выше). Кроме того, весь последний поток твоих разглагольствований, упершийся в суровую реальность, касался вовсе не люфта. Выходит, это ты о нем забыл. :)))
 

Tor

Новичок
не вижу смысла продолжать дискуссию, в которой один из участников отвечает на выдуманные собой вопросы
 

Crazy

Developer
Tor, я рад. Тем более, что выдумывать вопросы у тебя выходило как-то слабо... :)
 

COBRA094

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

PHP:
$name = "123.zip";
$fp = fopen($name, 'rb');

header("Content-Type: application/x-zip-compressed");
header("Content-Length: " . filesize($name));

fpassthru($fp);
exit;
хотел узнать - вот этот зип файл (объем 650 МБ) я бросил как и скрипт в корень своего локалхоста. потом запустил скрипт который обозвал 1.php внутри которого забил код который есть выше, в результате возникли вопросы:

1) программа закачки винды сохраняет этот файл на диске как 1.php а надо бы чтоб сохраняла как 123.zip, тоесть с тем же именем что и скачиваемый файл.
2) если я пускаю зачачку со своего же локалхоста через Download Accelerator V7.0 забив в него руками ссылку h**p://localhost/1.php то он закачку не начинает пока не считает в виртуальную память ВЕСЬ файл в результате чего последняя ругается что ее мало (памяти этой) и обрывает скачку так ее и не начав. Вопрос такой - когда перелью на сервер будет также или там сразу качать начнет без ругачек и будет ли грузить также сильно память сервера или надо не passthru использовать а чтото другое или заголовки другие или что? но докачка мне нужно чтоб поддерживалась!
3) Я так и не понял при моем методе скачки код которого выше ДОКАЧКА поддерживается или нет?
4) Ели файл не zip а скажем ставлю 123.avi объемом тем же 650 МБ то при вызове скрипта Виндовый плеер пытается открыть файл а не прога закачки. как бы заставить именно прогу закачки его открывать а не плеером...
 

Мутник

Новичок
COBRA094

поищи по форуму. тебе просто надо хедер дополнительный послать, с названием файла желаемымм. А лучше два... поищи тут же...
 

COBRA094

Новичок
Автор оригинала: Мутник
COBRA094

поищи по форуму. тебе просто надо хедер дополнительный послать, с названием файла желаемымм. А лучше два... поищи тут же...
а ответы на вопросы 2,3,4? :)
 
Сверху