NikSTamb

Рейтинг
0
Регистрация
02.06.2007
Kpd:
Если вам важно чтобы файлы мог скачать только тот пользователь, кому они предназначены, то можно закрыть его каталог стандартной авторизацией apache с помощью .htaccess. Т.е. посетителю нужно будет ещё раз ввести свой логин и пароль для доступа к файлу. Решение кривоватое, но в вашем случае самое простое.

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

Lys:
Каталоги клиентов что вручную создаются?
Файлы туда вручную закачиваются?


Для разных клиентов файлы одни и те же (просто не все сразу доступны) или их очень много разных, для каждого клиента - свои?

Каталоги создаются вручную. Файлы закачиваются вручную. Файлы разные, для каждого клиента свои. Количество клиентов 500 и для каждого уже созданы каталоги. Файлов в каждом каталоге предполагается около 30-ти.

Lys:
NikSTamb,
То есть, у Вас получается два списка: клиенты и файлы.
Связи: один ко многим (выборочно)

Немного не так.

Есть клиенты. Для каждого из них созданы каталоги с именами соответствующими ID клиентов. В эти каталоги периодически добавляются файлы. Сейчас на моем сайте клиент заходит на свою страницу и видит ссылку на свой и только свой каталог. пройдя по этой ссылке он видит предназначенные для него файлы. В следующий раз он может уже на заходя на свою страницу просто в адресной строке браузера набрать адрес по которому он ходил в прошлый раз и снова без проблем попадает в свой каталог.

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

Kpd:
Создавать временную ссылку на файл, в который добавлять уникальный идентификатор сессии (чтобы никто не мог использовать ссылку второй раз), при обработке проверять этот идентификатор, если он нормальный, то отдавать файл предложенным способом. Работать будет, но с очень большой нагрузкой на процессор, особенно при больших файлах.

Спасибо! Понятно! Теперь, не могли бы Вы, если Вас не затруднит и не будете ли Вы столь любезны извинить меня за дикую наглость и перевести то что Вы только что написали на язык Perl? ;)

p.s. о нагрузке на процессор можете не думать файлы легкие

Lys:
NikSTamb, а где файлы на самом деле лежат? На том же сервере, в специальной папке? И эту папку нельзя засвечивать?

Да на том же сервере и папку нельзя засвечивать.

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

Задача в том что бы скачать файл можно было только авторизированным пользователям, но даже авторициронный пользователь не должен видеть реальное расположение файлов на сервере. Как это можно реализовать? как делать авторицазию рассказывать не надо "

И ему предложены варианты:

binmode(STDOUT);

local $/ = undef;

open(file, 'file.zip');

binmode(file);

print <file>;

close(file);

my $file="doc.zip";

print "Content-type: application/octetstream\n";

print "Content-length: ",-s $file,"\n";

print "Content-disposition: inline; filename=\"",$file,"\"\n\n";

open(FILE, "$file");

binmode FILE;

binmode(STDOUT);

while(read(FILE, my $data, 1024)){print $data}

close FILE;

binmode(STDOUT);

local $/ = undef;

open(F, $file);

$size = (stat(F))[7];

print "Content-Type: application/octetstream\n";

print "Content-Transfer-Encoding: binary\n";

$file =~ s/.*\///;

print "Content-Disposition: attachment; filename=\"$file\"\n";

print "Content-Length: $size\n\n";

binmode (F);

while (read(F, my $buffer, 10485760)) {

print $buffer;

}

close F;

Как это можно использовать в моем случае? Авторизация пользователей на моем сайте есть. Данные авторизованных посетителей в текстовом файле построчно: имя; логин; пароль; имя каталога файлов пользователя;

Сейчас скачка файлов происходит так:

Клиент вводит свой логин и пароль и попадает на страницу со ссылкой <a href=http://адрес сайта/каталог файлов пользователя>Скачать файлы</a>. При следующем заходе ему уже не нужно авторизоваться. Он просто в адресной строке указывает http://адрес сайта/каталог файлов пользователя и снова имеет доступ к своему каталогу.

Как это изменить? И что бы он не попадал в каталог, а мог скачивать файлы со своей страницы

Kpd:
- найми программиста :)

Ты готов помочь?

Сколько стоит изготовить такой скрипт? Срок?

Очень лаконично:) ... но ничего не понятно😕