![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Это и делает ACL на этапе роутинга или сразу после него. Вот после 26й строки и делайте проверку в ACL А дальше у вас все идет как обычно или доступ отказан. Реализовывать это в каждом модуле, который может и не знать имеет ли пользователь права для доступа к нему - нет смысла. Это вообще что? -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
попытка получить путь к файлу когда можно использовать pathinfo или realpath интересно а расширение файла как проверяются substr до первой точки? -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
| neoks |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 5.7.2010 Репутация: нет Всего: 1 |
А дальше у меня идет /** Инициализация модулей **/ это тот же ACL тока расширенный, могу любой модуль запустить а он уже решит что ему там нуно проверить помимо авторизации или доступа, много чего он может проверить и решит дать мне доступ к другому модулю или нет например за доступ отвечает модуль auth, но вот и прикол, я могу удалить это модуль если он мне не нужен То есть избавится от лишней проверки и нагрузки на сервак, например замутить какойта парсер где и не нужна проверка ) Меня интересует не тока авторизация и доступ, например проверка бд, что тоже там ставить на проверку ? а если мне не нужна БД для моего скрипта, то есть об этом я все подумал Все дело в том что если в /** Инициализация модулей **/ не включен модуль там какой-та проверки скажем БД да и вообше зачем мне везде проверять ? вот в чем смысл, скажем скрипт работает отлично без БД все работает как надо но вдруг я решил установил какой-та модуль с маркета и решил его запустить проигнорировал все его настройки или не почитав что там нуно настроить. Так вот запускаю модуль а мне сразу вылазят ошибки что к БД нет доступа и тд, решение есть, сразу в методе сделать проверку работает бд или нет и если не пашет то завершить работу модуля и сообщить что так и так БД не пашет. Все отлично и так но один минус есть, то что проверку нуно писать в каждом модуле или сказать пользователю что нуно его включить в /** Инициализация модулей **/ чтоб он проверил работает бд или нет и самое худшие если я включю а бд не будет работать то сайт сразу накроится и будет везде светится что бд не настроена. Ну надеюсь что уже досконально объяснил в чем прикол, мне не нужна ошибка об нерабочий бд чтоб светилась по всему сайту а только когда я запрашиваю этот модуль. Добавлено через 2 минуты и 17 секунд А это чтоб стереть index.php с адресной строки чтоб не определяло как модуль index.php )) |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
neoks, Единственное здравое решение, которое мне приходит в голову ( это кроме "сжечь такие исходники и написать все заново"
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| neoks |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 5.7.2010 Репутация: нет Всего: 1 |
ksnk я понял о чем ты клониш и все это у меня реализовано только без таблиц чтоб не использовать БД даром
Вот как уменя стартуют модули до того как запустить необходимый модуль к которому обратился пользователь. ![]() Тут все я контролирую, какой метод при каком модули или какой исключить и где его запустить ) Мне тут настроить как два пальца об* но вот другие врятли так быстро вдуплят что и как, вот и хочется иметь страховочный вариант |
|||
|
||||
| Fortop |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Я не понимаю этого прикола Либо он вам нужен чтобы умники не хулиганили, либо он вам не нужен. Но вы, уж, батюшка либо трусы оденьте, либо крестик снимите... Я вам собственно даже рассказывать уже что-либо опасаюсь. Поскольку намеков вы не понимаете, язык, которым вы изъясняетесь, заставляет у меня шевелиться волосы в самых неожиданных частях тела при одной мысли, что вы еще и код пишете... Но попробую... Во-первых, вы путаете локальные требования модулей и глобальные требования приложения. Права доступа определяются приложением, а не модулем. Поэтому проверка прав доступа выполняется "до" запуска сторонних модулей, но может быть возложена на обязательный "системный" модуль. Во-вторых, необходимость подключения к БД или его отсутствия, если самому приложению не требуется, то идет на уровень конкретного модуля. Поэтому эта проверка выполняется на этапе конструирования объекта в __construct() В-третьих, для того чтобы не писать слишком много дублирующегося кода во втором случае, есть такая штука как наследование.
У нас есть некий абстрактный модуль AbstractModule. Далее этот модуль может либо требовать наличие БД ModuleWithDB, либо не требовать ModuleWithoutDb Все модули которым нужна БД у нас должны расширять класс ModuleWithDB (как MySampleModuleWithDB) Если модулю не требуется наличие БД, то он будет расширять класс ModuleWithoutDb Иерархия наследования намеренно усложнена, чтобы структура была более логически завершенной. В обычных условиях можно обойтись меньшим числом классов, поскольку отсутствие чего-либо декларировать не нужно, то базовый класс AbstractModule будет только расширяться дополнительными требованиями, а если они нам не нужны, то мы будем наследоваться от базового класса. -------------------- Мир это Я. Живее всех живых. |
||||||
|
|||||||
| neoks |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 5.7.2010 Репутация: нет Всего: 1 |
Нету у меня системных модулей вообще которых нельзя удалить, вот он в чем прикол, могу подчистую все модули удалить и не каких проблем не будет и движок дальше будет работать ) Ух переписывать все это как то не вариант Плюс скажем я хочу вызвать модуль в шаблоне, например тот же код что и в try
Вылетит птичка Fatal error: Uncaught exception 'Exception' with message 'No connect' что есть не гуд так как это считается уязвимость, пихать в try cath ради одного модуля не вариант, + еше не понял как с него сделать автозагрузку модулей чтоб не писать постоянно new MySampleModuleWithDB() как я себе сделал )) Для примера вот мой автозагрузчик
Конечно стоило как то пошаманить с статическим классом но на тот момент я пока не разбирался )) |
||||
|
|||||
| Fortop |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
PHP это динамический язык поэтому допускаются конструкты вида
где $moduleName содержит имя класса.
После такого перла я, пожалуй, пас. А вам читать... долго и упорно. Шлосснейгл "Профессиональное программирование на PHP" http://habrahabr.ru/post/30399/ http://www.phpfaq.ru/debug2 http://www.phpfaq.ru/debug3 Добавлено через 5 минут и 9 секунд Ах, да. А самый цимес в том, что в моем случае не возникает никаких ваших проблем. -------------------- Мир это Я. Живее всех живых. |
||||||
|
|||||||
![]()
|
| Правила форума "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. |