![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Frozen_Coyote |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
Привет,
проблема следующая: есть директория с файлами, в которой лежит htaccess. В нем прописано:
выше уровнем лежит файл download.php который принимает в себя параметр file=какое_то_имя_файла.rar. На него переводит корневой .htaccess, в котором указано, что скачиваемые файлы с определенными расширениями перебрасывать в скрипт download.php. Код download.php
Это все работает, все хорошо. НО! Если htaccess лежит в вышеописаной директории - браузер выдает "форбидден", если убираю его - файл скачивается нормально, при этом перестрел на download.php рабоатет отлично - это видно в адресной строке, т.е. файл забирается через readfile. Почему же когда htaccess лежит в файловой директории, выдается запрет? Ведь, насколько я понимаю, локальные скрипты все равно имеют доступ к папке? Как быть, Что делать? |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Файлы download.php и какое_то_имя_файла.rar - в одном каталоге?
|
|||
|
||||
| Frozen_Coyote |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
нет
струтктура такая: files |____file |_____.htaccess |_____какое_то_имя_файла.rar downalod.php Это сообщение отредактировал(а) Frozen_Coyote - 14.11.2012, 14:47 |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
то есть человек обращается к файлу напрямую? или все же в download.php? урл напиши |
|||
|
||||
| Frozen_Coyote |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
Смотри:
если человек кликает на ссылку с href=http://www.domen.com/files/file/какое_то_имя_файла.rar - ему запрет, это справедливо если человек кликает на ссылку с href=http://www.domen.com/download.php?file=какое_то_имя_файла.rar - ему тоже запрет, что неясно. Если убрать из директории http://www.domen.com/files/file/ файл .htaccess с запретом, то при клике на ссылку "вариант 1" происходит преобразование в "вариант 2" и скачивание доступно, это логично и правильно. А если его там оставить - то, при клике на "вариант 1" получается интересная вещЬ: ощущение такое, что "осмотр" запрещающего файла htaccess в директории с файлами в директории http://www.domen.com/files/file/ осуществляется РАНЬШЕ, нежели преобразование к download.php, дескать "клик на ссылку - апач смотрит директорию с файлами , видит в ней запрещающий htaccess и сразу форбидден". До преобразования дело не доходит. files |____file |_____.htaccess // в этом файле стоит запрет на прямое скачивание (Deny From All) |_____какое_то_имя_файла.rar download.php .htaccess //в этом файле идет преобразоваение ссылки (RewriteEngine on; RewriteRule ^(.*).(rar|zip|pdf|arj|gzip|tgz)$ /download.php?file=$1.$2 [R,L]) |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Я бы просто файлы вынес за document root, тогда запрет не нужен вовсе.
|
|||
|
||||
| Frozen_Coyote |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
это да, но хотелось бы вот этот механизм осознать и сконструировать
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
не по вопросу, но по проблеме. readfile убьет сервак на большом файле, так как считывает все данные в память.
тебе надо посмотреть X-SendFile или другие подобные механизмы: скрипт будет только проверять права и говорить НТТР-серверу: "нормалек, отдай ему этот файл" я вот только не пойму, на кой вообще Deny, если
если ты про RewriteRule, то, получается, через НТТР-запрос ну, никак не обратиться к файлам — всегда будет редирект на download.php |
|||
|
||||
| Frozen_Coyote |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
Да я и не говорю что Deny это идеальное решение, это я пытаюсь сделать механизм "отдачи файла только своему, без поптыки скачивания по прямой ссылке". За X-Send спасибо - буду изучать. Это надстройка какая то, она штатная у хостеров или надо его умолять ее подключить?
насчет же "всегда переводиться на download.php" вот тут то и удивление - я так понимаю при deny в htacces в директории дело до download не доходит - сразу форбидден - download не отрабатвает Это сообщение отредактировал(а) Frozen_Coyote - 14.11.2012, 21:11 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
||||
|
||||
| Frozen_Coyote |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
ну у меня тема такая - я хочу на уровне некоего программного комплекса выстраивать такой расклад: если допустим в админке включена опция "скачивание только для зарегистрированных пользователей" - отдается все через скрипт, если "для всех" то по прямым ссылкам. Беда в том, что если включена опция "зарегистрированнм пользователям" но человек вводит в адресную строку адрес типа www.domen.ru/download.php?file=такойтофайл.rar то он качается безо всякой регистрации )) вот и начал поиски )) не подскажешь как грамотнее реализовать?
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
||||
|
||||
| Frozen_Coyote |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
теперь то я понимаю, что не имеет..
да, в него передается uin пользователя |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
||||
|
||||
| Frozen_Coyote |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
как я реализовал. Перед выдачей пользователю страницы (при режиме "скачка для авторизованных юезерей") php конвертирует все линки в вид, при котором href="javascript:void(0)" а ONCLICK - отрабатывает javascript функцию
результат: на черном оверлее, перекрывающим старницу открывается сэмулированное типа окошко, в которое подгружается iframe, сурсом которого является этот download.php. параметрами которого являются как раз сессия юзера, имя файла и тд. Ну высвечивается капча там, юзер вводит код ок и пошла скачка. Это нюансы. они работают и все ок. Но в этом же download.php должна быть возможность ПРОСТО отдачи файла, если выставлен режим "скачка для всех кому угодно" (allow = 2). Я не знаю, может я конечно невменяемо объясняю и наворотил лишнего - но логика у мя так сработала. Это сообщение отредактировал(а) Frozen_Coyote - 14.11.2012, 23:05 |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |