Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2009, 09:38   #1
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Вопрос Запретить доступ к файлу на сервере php/настройки

Доброго времени суток !

У меня проблемка, помогите разобратся , суть : Имеется файл расположенный по такому адресу : mysite.ru/1.txt Необходимо закрыть к нему доспуп : тоесть когда ктонибудь попытается скачать его , сервер скажет что таково нету , или что доступ ограничен. Мне необходимо чтобы только мои скрипты на сервере имели к нему доступ. Гдето давно я читал что это указывается в дополнительном файле в корневой папке.

Но это ну всё , по логинпаролю ( при открытой сессии ) пользователь должен получать к нему доступ , при чем пользователь указывает имя файла в запросе.

Стоит ли искать скрипты ограничивающие доступ (гдето видел скрипт дающий доступ на N секунд к файлу при каких-то условиях ), или этим можно манипулировать с помощью подстройки "сервера" ?

Я не уверен что тема принадлежит этому разделу, но всёже.

Всем откликнувшимся Спасибо !
Lime вне форума Ответить с цитированием
Старый 30.05.2009, 11:24   #2
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Если сайт стоит на Linux/FreeBSD - можно сделать так -
Код:
find 1.txt -type f -exec chmod 555 {} \;
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 31.05.2009, 11:46   #3
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

А через .htaccess ?
<Files "1.txt">
Deny From All
</Files>
при этом с браузера не достучишься, зато серверные скрипты без проблем имеют доступ
iankov вне форума Ответить с цитированием
Старый 31.05.2009, 11:49   #4
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Да , я говорил про этот файл .
Только я немного не понимаю систему, этот файл читает сервер и запрещет доступ к файлу соответственно сожержимого ".htaccess" да?

Или это както связанно с браузерами?
Deny From All - кроме серверных скриптов , так?
Lime вне форума Ответить с цитированием
Старый 31.05.2009, 12:01   #5
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

создаешь этот файл в директории, где лежит файл к которому нужно доступ запретить.
Это чисто файл конфига для апача. Т.е. когда юзер через браузер запросит какой-либо файл (например 1.txt), апач сначала посмотрит в настройки (а можно ли юзеру отдать этот файл или нельзя, deny from all говорит что никому нельзя его отдавать) и апач вернет Access forbidden в браузер. Т.е. это касается только запросов извне, серверные скрипты делают с файлом что хотят без запретов.
iankov вне форума Ответить с цитированием
Старый 31.05.2009, 12:54   #6
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Спасибо , понятно.
1) А можно ли изменять .htaccess с помощью скрипта? к примеру при добавлении нового 2.txt чтобы его автоматически туда добавить?
2) А как на счёт разрешения по паролю ? Тоесть если юзер залогинился я ему и только ему разрешаю скачать файл , ну доступ открываю , а если не залогинился - доступа нет. ? Для этого нужно писать скрипт , скрывать месторасположение файла и каким-то образом создавать новый "псевдо путь" ? например такой как дают файлообменники?
site.ru/87237478-u23t4y2-ej-343/file.txt
хотя реальное расположение , например , : site.ru/files/file.txt
Как такое реализовать? Я так понимаю не созданием папки на время ... имхо бред )
Подскажите
Lime вне форума Ответить с цитированием
Старый 31.05.2009, 13:14   #7
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

чтобы не парится обновлять .htaccess, можно просто все "запрещенные файлы" скидывать в один каталог, а в этом каталоге в .htaccess написать
Код:
Deny From All
это будет запрет на всё, что лежит внутри этого каталога.

Авторизацию юзера я бы сделал через php. Типа как на всех сайтах.
Если юзер к примеру залогинился и хочет скачать файл, можно этот файл ему отдать через скрипт file.php?file=1.txt вот чтото типа такого.
внутри file.php написать:
Код:
header('Content-type: text/plain');
header('Content-Disposition: attachment; filename="'.$file.'"');
$file = $_GET['file'];
echo file_get_contents('forbidden_directory/'.$file);
ну типа такого
только не забыть сделать проверку(залогинился ли юзер) в этом файле.
ну это лично моё видение решения проблемы.

Можно запросто сделать и так как вы сказали, т.е. взять скопировать файл во временно созданную директорию и отдать юзеру ссылку на этот файл. А через какое-то время этот временный файл удалить.
iankov вне форума Ответить с цитированием
Старый 31.05.2009, 17:52   #8
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Спасибо , попробую сделать так как вы сказали)
Авторизация у меня уже есть , на пхп , с использованием сессий.
ЧТо интересно , для тестирования нужно создать сам этот файл) но так как я использую денвер , и как браузер категорий - проводник - файлик такой создать нельзя) пишет что нужно ввести имя ) Пригодился написаный сегодня же скрипт для создания текстового файла)

Этот код ( + проверка на авторизованность) должен быть в третьем файле ? Тоесть я перенаправляю юзера на этот файл , проверяю залогинился ли он и в итоге юзер получает файл "'forbidden_directory/'.$file"

Попробовал , получилось, но есть проблема имя файла получается как имя скрипта , у меня было test.php в итоге полное имя файла для закачки ( показываемое браузером ) было "test" . Как исправить?
Lime вне форума Ответить с цитированием
Старый 31.05.2009, 18:22   #9
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

header('Content-Disposition: attachment; filename="'.$file.'"');
ну этот хедер и должен определять имя файла $file
iankov вне форума Ответить с цитированием
Старый 31.05.2009, 18:24   #10
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

аа, ну да..конечно

Код:
header('Content-type: text/plain');
$file = $_GET['file']; //эта штуковина должна быть первой :)
header('Content-Disposition: attachment; filename="'.$file.'"');
echo file_get_contents('forbidden_directory/'.$file);
iankov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить доступ к файлу yngwie Win Api 1 08.04.2009 14:11
Огран. доступ к файлу Манжосов Денис :) Помощь студентам 6 15.07.2008 11:33
Общий доступ к файлу с макросам в Эксель grenles Microsoft Office Excel 11 30.06.2008 16:38
Закрыть доступ к файлу *.db Антон Шестаков БД в Delphi 6 05.01.2008 09:28
Закрыть доступ для всех процессов к файлу Sanek_ntsk Общие вопросы Delphi 6 04.12.2007 16:26