Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/49: Рейтинг темы: голосов - 49, средняя оценка - 4.76
8 / 8 / 2
Регистрация: 17.03.2012
Сообщений: 534
Записей в блоге: 2

Как ограничить доступ к файлу php?

09.07.2012, 01:53. Показов 9670. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
файл main.php
PHP
1
2
3
4
...
include 'logo.php';
 
...
Как разрешить показать http://www..../main.php
и на попытку http://www..../logo.php
не выводить ничего?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.07.2012, 01:53
Ответы с готовыми решениями:

Ограничить доступ к файлу
Добрый день. Есть две проги которые повязаны с одним файлом. Первая прога (назовем её писатель) записывает данные в файл, вторая прог...

Ограничить доступ к файлу тхт + закодировать
Хаи гайсы. У меня проект который я разрабатываю огромное количество времени. Так вот я на последних стадиях разработки столкнулся с...

Доступ к файлу php только с определенного адреса
Приветствую. Подскажите по htaccess как правильно написать, что бы при обращении к определенному файлу php (не ко всем, а только к...

21
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
09.07.2012, 03:16
логика приложения делится на следующие части:
1. Сначала работает роутер(фронт контроллер). Он смотрт на входящие параметры и определяет, какой обработчик будет действовать.
Т.е. если он увидит адрес "/posts/create" и содержимое {name: 'foo', content: 'bar'}, то вызовет действие create обработчика posts, которому передаст параметры {name: 'foo', content: 'bar'}.
Связь параметров с действием ты задаешь сам.

2. Обработчик(контроллер). Его задача - взять данные от пользователя и передать их логике, после чего вызвать отображение. Больше ничего в нем быть не должно, только работа с HTTP.
Грубо говоря тут несколько строк, хотя новички любят пихать сюда всю логику, не выделяя е в отдельный слой.
Пример кода:
Code
1
2
новости = Новости.сортируяПоДате.страница(параметры[номер_страницы])
ВызватьВид(новости, "шаблон_новостей")
Т.е. я не шутил, когда говорил про пару строк, я имел ввиду это буквально: 1-10 строк.
3. Логика(модель). Этот код ничего не знает о запросах, куках и т.д., ведь этим занимается обработчик. Но данный код выполняет всю бизнес-логику приложения. Вся работа с файлами, базой, алгоритмами тут.
4. Отображение(вид). Занимается отображением данных, полученных их контроллера. Естественно, может содержать логику отображения.

Данная схема называется MVC. Это шаблон проектирования, и смысл его именно в разделении логики на 3-4 части.

Весь PHP код кроме index.php лежит выше document root вебсервера.
1
8 / 8 / 2
Регистрация: 17.03.2012
Сообщений: 534
Записей в блоге: 2
09.07.2012, 13:33  [ТС]
Цитата Сообщение от OnYourLips Посмотреть сообщение
логика приложения делится на следующие части:
1. Сначала работает роутер(фронт контроллер). Он смотрт на входящие параметры и определяет, какой обработчик будет действовать.
Т.е. если он увидит адрес "/posts/create" и содержимое {name: 'foo', content: 'bar'}, то вызовет действие create обработчика posts, которому передаст параметры {name: 'foo', content: 'bar'}.
Связь параметров с действием ты задаешь сам.

2. Обработчик(контроллер). Его задача - взять данные от пользователя и передать их логике, после чего вызвать отображение. Больше ничего в нем быть не должно, только работа с HTTP.
Грубо говоря тут несколько строк, хотя новички любят пихать сюда всю логику, не выделяя е в отдельный слой.
Пример кода:
Code
1
2
новости = Новости.сортируяПоДате.страница(параметры[номер_страницы])
ВызватьВид(новости, "шаблон_новостей")
Т.е. я не шутил, когда говорил про пару строк, я имел ввиду это буквально: 1-10 строк.
3. Логика(модель). Этот код ничего не знает о запросах, куках и т.д., ведь этим занимается обработчик. Но данный код выполняет всю бизнес-логику приложения. Вся работа с файлами, базой, алгоритмами тут.
4. Отображение(вид). Занимается отображением данных, полученных их контроллера. Естественно, может содержать логику отображения.

Данная схема называется MVC. Это шаблон проектирования, и смысл его именно в разделении логики на 3-4 части.

Весь PHP код кроме index.php лежит выше document root вебсервера.

Я не очень понял. Конкретный вопрос: index.php in WWW, login.php in WWW/widgets
Как запретить прямой просмотр файлов из widgets?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
09.07.2012, 13:42
т.е. вы предлагаете человеку, только начинающему разбираться с php - написать MVC на ООП?)
1
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
09.07.2012, 13:42
Цитата Сообщение от abc_privet Посмотреть сообщение
Как запретить прямой просмотр файлов из widgets?
довольно популярен прием с константой
PHP
1
2
3
4
5
#main file :
define('some_constant' , true);
include "ur/file.php";
#ur/file.php:
if (!defined('some_constant')) exit(0);
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
09.07.2012, 13:47
Цитата Сообщение от abc_privet Посмотреть сообщение
Как запретить прямой просмотр файлов из widgets?
можете сделать так:
в главных скриптах которые подключают эти "подскрипты" - пишите что нить типа
PHP
1
define("__ACCESS",1);
а в других скриптах из этой папки проверяете как ввели этот адрес
PHP
1
if(defined('__ACCESS')) { /*пришли с другого скрипта */ } else {/*вручную забили*/ }
Добавлено через 27 секунд

Не по теме:

опоздал слегка :)

1
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
09.07.2012, 14:59
т.е. вы предлагаете человеку, только начинающему разбираться с php - написать MVC на ООП?)
ООП не обязательно. С ним конечно проще, но можно и без него.

Я говорил про разделение логики на 4 куска. И кусок "роутер" решает данную проблему.

Решение define("__ACCESS",1); просто уродливое. Зачем делать проверку внутри файлов, если можно поместить их выше докрута?
1
239 / 236 / 43
Регистрация: 16.03.2011
Сообщений: 750
09.07.2012, 15:07
Запрет по User-Agent через htaccess:
Code
1
2
3
4
SetEnvIfNoCase User-Agent "^Wget" bot
Order Allow,Deny
Allow from all
Deny from env=bot
Запрет на определённый файл:
Code
1
2
3
4
<Files includ.php>
order allow,deny
deny from all
</Files>
1
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
09.07.2012, 15:08
Цитата Сообщение от OnYourLips Посмотреть сообщение
Решение define("__ACCESS",1); просто уродливое.
многие современные cms используют такую систему , ничего уродливого , логичное решение
1
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
09.07.2012, 15:34
многие современные cms используют такую систему
Только коробочные решения.
Причина простая: систему настраивает пользователь, который ничего не знает о document root, и думает что вебсервер - это сорт пива.
Но решение, которое делает КУЧУ лишних действий, которые можно не делать - не логичное.
1
8 / 8 / 2
Регистрация: 17.03.2012
Сообщений: 534
Записей в блоге: 2
09.07.2012, 20:19  [ТС]
Цитата Сообщение от OnYourLips Посмотреть сообщение
ООП не обязательно. С ним конечно проще, но можно и без него.

Я говорил про разделение логики на 4 куска. И кусок "роутер" решает данную проблему.

Решение define("__ACCESS",1); просто уродливое. Зачем делать проверку внутри файлов, если можно поместить их выше докрута?
Спасибо! Я начинающий и к сожалению много в Вашем ответе для меня пока сложно.
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
09.07.2012, 20:33
Ты навечно останешься начинающим, если не будешь стараться что-то улучшить.
1
09.07.2012, 20:39

Не по теме:

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

1
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
09.07.2012, 21:38
KOPOJI, прости, но человек на форуме давно, но не осилил пхп даже на уровне обычной книжки, т.к. не хочет это делать.
1
09.07.2012, 21:43

Не по теме:

Цитата Сообщение от OnYourLips Посмотреть сообщение
KOPOJI, прости, но человек на форуме давно, но не осилил пхп даже на уровне обычной книжки, т.к. не хочет это делать.
да я то что, я высказал свою точку зрения только :) и кстати, не так давно -меньше 4 месяцев
abc_privet
Форумчанин

Регистрация: 17.03.2012
Сообщений: 285
Репутация: 4 (4)

1
8 / 8 / 2
Регистрация: 17.03.2012
Сообщений: 534
Записей в блоге: 2
10.07.2012, 01:00  [ТС]
Цитата Сообщение от OnYourLips Посмотреть сообщение
KOPOJI, прости, но человек на форуме давно, но не осилил пхп даже на уровне обычной книжки, т.к. не хочет это делать.
Какой книжки ? Так же интересно прочитать как "роутер" решает данную проблему и что такое "роутер".
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
10.07.2012, 01:11
abc_privet, да блин любой нормальной книжки по PHP, по которой и с ООП разберешься, и в которой будет написано, как удобно сделать веб-приложение.
Свое же время не экономишь.

Так же интересно прочитать как "роутер" решает данную проблему
Роутер - это часть сайта, которая по запросу смотрит, какой обработчик должен его обработать, и ему передает.
Допустим если адрес '/user/show/12', то она передает работу действию Users::show.
Итого мы имеем одну точку входа на весь сайт(index.php). Остальные PHP-файлы мы пихаем туда, куда нельзя попасть с веба.
Естественно никаких проверки в остальных файлах не будут нужны, т.к. их нельзя будет вызвать с веба.
1
8 / 8 / 2
Регистрация: 17.03.2012
Сообщений: 534
Записей в блоге: 2
12.07.2012, 00:57  [ТС]
А как такой вариант:

PHP
1
if(basename($_SERVER['SCRIPT_NAME']) == 'logo.php') exit();
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
12.07.2012, 02:11
abc_privet, гуано.
Убери файлы просто туда, куда с веба нельзя обратиться.
Зачем же извращаться?
0
239 / 236 / 43
Регистрация: 16.03.2011
Сообщений: 750
12.07.2012, 09:25
Зачем извращаться с php если прописал htaccess <Files includ.php> (пример выше) после этого можно будет читать со стороны сервера этот файл , инклудить и тд. открывать файл из www будет запрещено.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2012, 09:25
Помогаю со студенческими работами здесь

Доступ из одного php файлу в другой через ajax
У меня на сайте одна точка входа index.php В htacess т.е. запрет просто так открыть любой файл - &lt;FilesMatch...

Доступ к php-файлу с другого сайта возможен или нет?
Случайно наткнулся на обсуждение загрузки на один сайт контент с другого сайта. Народ пишет, что достаточно сделать ajax запрос с...

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

Как Ограничить Доступ К Договорам.
Добрый день! Сложилась такая ситуация. Управление торговлей 10.3. Нужно реализовать &quot;Договор первой поставки&quot;. Так, чтобы после...

как ограничить доступ к папке?
народ, такая ситуация, на сайте есть папка &quot;private&quot;, в ней лежат файлы, когда пользователь набирает в строке www.site.com/private,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru