[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Избирательно защитить файлы от чтения
LRCenter
Есть дирректория с файлами, надо сделать так чтобы фалы были доступны для чтения только авторизованным пользователям. Как можно это сделать с помощью php? (.htaccess методы не приемлемы, надо разрешать чтение именно из php-скрипта.)



Спустя 4 минуты, 45 секунд (30.11.2010 - 08:27) kirik написал(а):
Отдавать файлы через php. А директорию вообще закрыть для доступа из вне с помощью htaccess.

Спустя 8 минут, 18 секунд (30.11.2010 - 08:36) LRCenter написал(а):
kirik, Во! Я тоже подумал что это было бы лучшее решение.

А как отдавать, то? У меня в дирректории может быть только 2 типа файлов - zip и txt.

Спустя 10 минут, 24 секунды (30.11.2010 - 08:46) kirik написал(а):
Цитата (LRCenter @ 30.11.2010 - 00:36)
А как отдавать, то? У меня в дирректории может быть только 2 типа файлов - zip и txt.

Ну как.. smile.gif ZIP отдаешь как зипы, текстовые файлы как текстовые файлы.
например юзер запрашивает /getfile.php?file=archive.zip в файле getfile.php идем в нашу закрытую папку, там ищем файл archive.zip, если находим отдаем*, а если нет - возвращаем 404-ю.

* отдавать нужно с соответствующими заголовками. Здесь посмотри первый пример.(Example #1 Download dialog).

Спустя 19 минут, 25 секунд (30.11.2010 - 09:05) LRCenter написал(а):
kirik, спасибо разберусь.
А еще такой вопрос, как .htaccess-ом запретить доступ к файлам с определенным раcширением.

например:

-.htaccess (лежит с "papka" на одном уровне)
-papka/
-papka/1.txt
-papka/2.txt
-papka/3.gif


Как защитить только *.txt ?

Спустя 9 минут, 27 секунд (30.11.2010 - 09:15) kirik написал(а):
LRCenter
Положи в папку свой htaccess с содержанием:
<Files ~ "\.txt$">
order deny,allow
deny from all
</Files>

Или если расширений несколько, то так:
<Files ~ "\.(txt|zip)$">
order deny,allow
deny from all
</Files>

Спустя 3 минуты, 24 секунды (30.11.2010 - 09:18) LRCenter написал(а):
kirik, а если я хочу чтобы htaccess лежал на одном уровне с защищаемой папкой а не в ней, куда прописать путь к ней?

Спустя 2 минуты, 15 секунд (30.11.2010 - 09:20) kirik написал(а):
LRCenter
Поиграй сам уже..

Спустя 6 минут, 37 секунд (30.11.2010 - 09:27) LRCenter написал(а):
kirik, я б с удовольствием, но просто не всекаю куда путь прописать. Если вместо тильды, то серв 500 ошибку выдает sad.gif

Спустя 13 минут, 29 секунд (30.11.2010 - 09:41) kirik написал(а):

Спустя 20 минут, 28 секунд (30.11.2010 - 10:01) LRCenter написал(а):
спасибо.

Спустя 4 часа, 6 минут, 39 секунд (30.11.2010 - 14:08) LRCenter написал(а):
Нече не работает :( Все перепробовал. Ну не понимаю я регулярные выражения.


<Files ~ "papka\/(0-9|A-z|\/)*\.(txt|zip)$">
order deny,allow
deny from all
</Files>


ноль эмоций..

<Files ~ "papka\/*\.(txt|zip)$">
order deny,allow
deny from all
</Files>


Тоже не работает. Как сделать-то?

Спустя 6 часов, 26 минут, 32 секунды (30.11.2010 - 20:34) DySprozin написал(а):
LRCenter
"papka\/(0-9|A-z|\/)*\.(txt|zip)$"

ты сказал: имя файла состоит либо из символов, либо из цифр, либо содержит "/" (;

;;Ну не понимаю я регулярные выражения.
на то есть мануалы (; ну хотя бы этот поглянь на досуге:
http://htaccess.net.ru/doc/htaccess/syntax.php

в твоем случае как-то так:

<Files ~ "[0-9A-z\/]*\.(txt|zip)">
order deny,allow
deny from all
</Files>


или как вариант:

<Files ~ "*\.(txt|zip)">
order deny,allow
deny from all
</Files>


размещаешь htaccess внутри папки papka, путь к ней не указываешь (;

Спустя 6 минут, 48 секунд (30.11.2010 - 20:41) waldicom написал(а):
А почему бы не положить папку выше рута вебсервера?

Спустя 2 минуты, 44 секунды (30.11.2010 - 20:44) LRCenter написал(а):
DySprozin
Мне надо применить эти настройки к строго определенной папке(и ее подпапкам, естественно), лежащей на одном уровне с .htaccess. И помещать .htaccess в моем случае внутрь защищаемой папки нельзя. sad.gif

В том то и загвоздка, а так все отлично работает.

Спустя 1 минута, 18 секунд (30.11.2010 - 20:45) LRCenter написал(а):
waldicom, Зачем?

Спустя 4 минуты, 38 секунд (30.11.2010 - 20:50) waldicom написал(а):
Цитата (LRCenter @ 30.11.2010 - 19:45)
waldicom, Зачем?

Действительно, зачем...
Я подумал, если вы тут пытаетесь защитить папку с помощью htaccess, то может положить её просто выше вебсервера, что бы её уж точно никто не прочитал, кроме php скрипта.

Спустя 2 минуты, 22 секунды (30.11.2010 - 20:52) LRCenter написал(а):
waldicom, экстремальное решение, но для меня не вариант smile.gif

Спустя 29 секунд (30.11.2010 - 20:53) waldicom написал(а):
Цитата (LRCenter @ 30.11.2010 - 19:52)
waldicom, экстремальное решение, но для меня не вариант smile.gif

В чем его экстремальность?

Спустя 7 минут, 12 секунд (30.11.2010 - 21:00) LRCenter написал(а):
waldicom, Хотя бы в том что нарушается структурированность данных. Да и потом, как читать данные выше корневой папки серва?

Спустя 15 минут, 42 секунды (30.11.2010 - 21:15) DySprozin написал(а):
waldicom
;;А почему бы не положить папку выше рута вебсервера?
так ограничение должно стоять только для "papka", ведь так? (;

а "<Files>" путь не позволяет указывать... по крайней мере я не нашел способа );

Спустя 11 минут, 45 секунд (30.11.2010 - 21:27) DySprozin написал(а):
LRCenter
;;надо применить эти настройки к строго определенной папке(и ее подпапкам, естественно)

тогда заюзай перенаправление:

RewriteEngine on 
RewriteRule ^papka/[0-9A-z\/]*\.(txt|zip)$ /error.html

Спустя 41 минута, 5 секунд (30.11.2010 - 22:08) LRCenter написал(а):
DySprozin, да спасибо. Наверное так и сделаю!


_____________
Меньше кода - меньше багов ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.