Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 3
Регистрация: 21.09.2015
Сообщений: 135

Отделение админ-панели от остальной части сайта

23.10.2016, 19:27. Показов 2216. Ответов 12

Студворк — интернет-сервис помощи студентам
Добрый день, подскажите как отделить админ-панель от остальной части сайта. На данном этапе структура такая:

-administrator/
.htaccess
index.php
-- тут примерно тоже самое что и в application(который ниже)
-application/
.htaccess
index.php
--controllers/
--models/
--views/
-core/
--classes/
конфиг файлы.php
файл автозагрузки.php


Роутинг/маршрутизация идет по URL и решается как: ( все маршруты прописываются вручную)

/ 'controller/action/:any/:num/.../:num' => 'контроллер/действие/параметр1/параметр2/.../параметр3'

Теперь как мне сделать так, чтобы при переходе по пути administrator/category/edit/13 запрос не шел в application/controller/CategoryController->(actionEdit), а уже в контроллер находящийся в по пути administrator/application/controller/CategoryController->(actionEdit)
В папке конечно есть свои .htaccess и index.php

Как мне добиться этого? Неужели придется записывать еще три автозагрузчика чисто для админ-панели, просто на данный момент есть 3 автозагрузчика, каждый из которых загружает нужный класс из нужного места:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function class_autoload($class_name) {
    $file = CORE . '/classes/'.$class_name.'.php';
    if( file_exists($file) == false )
        return false;
    require_once ($file);
}
function controller_autoload($class_name) {
    $file = APP . '/controllers/'.$class_name.'.php';
    if( file_exists($file) == false )
        return false;
    require_once ($file);
}
function model_autoload($class_name) {
    $file = APP . '/models/'.$class_name.'.php';
    if( file_exists($file) == false )
        return false;
    require_once ($file);
}
 
spl_autoload_register('class_autoload');
spl_autoload_register('controller_autoload');
spl_autoload_register('model_autoload');


Или все контроллеры, модели и виды админ панели валить вперемешку с аналогичными файлами?
Может есть более лаконичное решение, поскольку в administrator/index.php еще задумывалось обрабатывать авторизацию/залогинованность
Желательно не трогая роутер
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.10.2016, 19:27
Ответы с готовыми решениями:

Найти адрес админ панели своего сайта
Здравствуйте. У меня есть сайт на Joomla. Не занимался им давно и забыл адрес админки, который менялся - не administrator. Можно его как-то...

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

Как отделать админку от остальной части движка?
Здравствуйте. В учебных целях имеется проект интернет магазина php+mvc+oop, но я хочу админку отделить от остального кода. Ткните носом что...

12
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
23.10.2016, 21:50
Цитата Сообщение от ZikWall Посмотреть сообщение
отделить админ-панель от остальной части сайта
Зачем? Почему бы не воспринимать как единое целое?
0
0 / 0 / 3
Регистрация: 21.09.2015
Сообщений: 135
23.10.2016, 22:08  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Зачем? Почему бы не воспринимать как единое целое?
Т.е вы бы так и сделали? Все в одном месте. Прост вдруг есть какое-то решение для таких случаев...
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
23.10.2016, 22:36
Цитата Сообщение от ZikWall Посмотреть сообщение
Т.е вы бы так и сделали? Все в одном месте.
Всегда так делаю. Не вижу смысла в разделении.
Цитата Сообщение от ZikWall Посмотреть сообщение
Прост вдруг есть какое-то решение для таких случаев...
В опенкарте так сделано из коробки (в корне лежат 2 папки, catalog и admin, для обычного сайта и админки соответственно), можете глянуть. Имхо куча копипаста, никакой выгоды.
1
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
23.10.2016, 22:43
ZikWall, если собрались отделять, то отделяйте полностью. С отдельной точкой входа и т.п., где можно прописать свой путь к файлам приложения. Мы обычно админки на поддомены вешаем с практически идентичными основному сайту внутренними адресами (имена экшинов передаем в POST-параметрах, а также активно пользуемся экшинами по умолчанию отдельно для GET- и POST-запросов). Корень у основного сайта может быть как общим с админкой, так и нет. По дефолту обычно общий, но есть возможность прописать в админке и др. корень основного сайта, причем для этого можно использовать и относительный путь. Хост основного сайта тоже можно полностью переписать при желании. Если общий корень, в конфиге сервера просто прописывается условие по имени входящего хоста для рерайта на альтернативную точку входа.

Добавлено через 6 минут
Пример:
- на основном сайте /category/valenki - экшин view;
- в админке /category/valenki - экшин edit (форма редактирования).
1
0 / 0 / 3
Регистрация: 21.09.2015
Сообщений: 135
23.10.2016, 23:24  [ТС]
Цитата Сообщение от miketomlin Посмотреть сообщение
Пример:
- на основном сайте /category/valenki - экшин view;
- в админке /category/valenki - экшин edit (форма редактирования).
Интересный пример, никогда о таком не думал, да и не додумался бы Надо почитать на эту тему
Цитата Сообщение от Jodah Посмотреть сообщение
куча копипаста, никакой выгоды
Вот смотрел некоторые, каждый по своему делает, есть доля стандартов конешно. Но копипаст мне ни к чему, мне бы логику понять, например описал miketomlin или уже подтолкнуть на готовое действие, не я же один наверное при "велоконструировании" сталкивался с подобными проблемами...

Добавлено через 13 минут
miketomlin, Jodah, а ЧПУ через что делаете? средствами PHP или .htaccess (на nginx не знаю как этот файл называется)?
И как по Вашему лучше?
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
23.10.2016, 23:36
PHP
1
2
define('URI', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
define('IS_ADMIN', 0 === strpos(URI, $this->config->adminPath));
далее где надо проверяем значение IS_ADMIN
при этом путь к админке мы можем указывать любой в конфиге
1
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
24.10.2016, 00:18
Средствами PHP, .htaccess и подобные файлы только для направления во фронт и для опред. коррекции адреса (например избавления от трэйлинг-слэшей). Для админки в принципе это не критично, можете использовать PATH_INFO с явным указанием адреса файла фронта в начале пути (это как альтернатива доп. условию в .htaccess и использованию поддомена, о которых я в пред. посте писал).

Добавлено через 3 минуты
...можно и GET-параметры в принципе.
1
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
24.10.2016, 00:56
Цитата Сообщение от ZikWall Посмотреть сообщение
мне бы логику понять
Обычно делаю так:
site.ru/product/15/ - карточка товара с id=15
site.ru/admin_product/15/ - редактирование этого товара в админке

Собственно всё.

Цитата Сообщение от ZikWall Посмотреть сообщение
а ЧПУ через что делаете? средствами PHP или .htaccess
Аналогично вышесказанному, htaccess перебрасывает все запросы на index.php, а там уже роутинг, чпу и т.д.
1
0 / 0 / 3
Регистрация: 21.09.2015
Сообщений: 135
24.10.2016, 12:40  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Аналогично вышесказанному, htaccess перебрасывает все запросы на index.php, а там уже роутинг, чпу и т.д.
В принципе шел по этому же пути
Цитата Сообщение от Jodah Посмотреть сообщение
Обычно делаю так:
site.ru/product/15/ - карточка товара с id=15
site.ru/admin_product/15/ - редактирование этого товара в админке
И логика та же, просто я подумывал отделять администраторские классы, чтож может вы и правы, зачем лишний геморой
Цитата Сообщение от miketomlin Посмотреть сообщение
Средствами PHP, .htaccess и подобные файлы только для направления во фронт и для опред. коррекции адреса
Спасибо за ответ, кажется все используют .htaccess только для перебрасывания запросов на index.php
Цитата Сообщение от miketomlin Посмотреть сообщение
Для админки в принципе это не критично
Да, админка мне и так не важна была, там хоть ЧПУ, хоть не ЧПУ, все-равно, просто уже срослось к тому, что роутер обрабатывает ЧПУ адресса. Кажется что запросы типа site.ru/index.php?option=category&action=edit&item=15 намного удобней...
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.10.2016, 12:46
Цитата Сообщение от ZikWall Посмотреть сообщение
просто я подумывал отделять администраторские классы
Ну и отделяйте, что мешает? Для этого есть автозагрузка и пространства имён. Например, контроллеры лежат в папке app/Controllers -- добавьте там папку "Cp" и складывайте туда контроллеры панели управления.
Одним словом, как хранить контроллеры -- на Ваше усмотрение. Но ни в коем случае не делать дублей точек входа. Точек входа в приложение достаточно двух: одна для доступа из Web, другая из консоли (для запуска команд через CRON и т.п.).
0
0 / 0 / 3
Регистрация: 21.09.2015
Сообщений: 135
24.10.2016, 12:57  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
Ну и отделяйте, что мешает?
Мешает только то, что не знаю как это правильно сделать
Цитата Сообщение от Para bellum Посмотреть сообщение
Для этого есть автозагрузка и пространства имён. Например, контроллеры лежат в папке app/Controllers -- добавьте там папку "Cp" и складывайте туда контроллеры панели управления.
Об это я уже и спрашивал, что придется еще и автозагрузки для админ панели писать, 3 для сайта еще 3 для админки...
Цитата Сообщение от Para bellum Посмотреть сообщение
Одним словом, как хранить контроллеры -- на Ваше усмотрение.
Ну да Усмотрение мое, просто спрашиваю советы, думаю опытные более компетентны в этом плане

Добавлено через 5 минут
Цитата Сообщение от ZikWall Посмотреть сообщение
Мешает только то, что не знаю как это правильно сделать
Хотя "правильно", тут не подходящее слово, скажем как это сделать красиво и в этом роде
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
30.10.2016, 21:57
Цитата Сообщение от miketomlin Посмотреть сообщение
Мы обычно админки на поддомены вешаем
по кукам вычислят
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.10.2016, 21:57
Помогаю со студенческими работами здесь

Разное питание для аналоговой части АЦП и остальной схемы
Доброго времени суток. В схеме есть АЦП MCP3421 для высокоточных измерений (16 бит), измеряю напряжение в измерительном мосту, которое...

Как проверить работоспособность участка кода без остальной части программы?
Подскажите пожалуйста, есть ли в visual studios 2010 возможность проверки работоспособности определенной части кода, без наличия готовой...

Отделение дробной части
Вопрос в том как отделить дробную часть от числа в integer. Например дано число 4.88 нужно получить 0.88

Редирект в админ панели
Всем привет Обискал интернет, ничего не помогло, может не так описал свою проблему гуглу) А проблемав в том, что нужно сделать...

phpBB Вопросы по админ панели
Всем доброго время суток. Вопросы не сложные, я надеюсь вас не затруднит написать мне пару строк. phpBB3. Не могу найти где...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
ПЛИС
zxcha1ka_ 27.01.2026
AHDL Разработать программы для синтеза следующих устройств: 1. Параллельного регистра 4-х разрядного с синхронной загрузкой и асинхронным сбросом (обнулением); Пoмoгитe пoжaлyйстa
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru