Автор Тема: Роутер для фф  (Прочитано 57 раз)

0 Пользователей и 1 Гость просматривают эту тему.

FeexeeАвтор темы

  • *
  • Оффлайн
  • Награды Более 50 сообщений Более 2 лет на форуме Более 10 созданных тем
  • Дата регистрации: Янв. 2017
  • Сообщений: 51
  • Страна: ru
  • Поблагодарили: 6 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
    • Награды
Роутер для фф
« : 25 Августа 2019, 12:29:00 »
Ребзя, Всем добра!

В попытках упростить/оптимизировать/усовершенствовать всеми любимый скрипт Fruit Farm.

Вопрос касательно роутинга Switch Case который используется в скрипте, и чтобы не трогать .htaccess каждый раз при добавлении модулей, в общем скрипт фф прост во всем, для нативного пользования. полноценные МVC в стороне.


Есть такой вариант index.php:

# Шапка
include("inc/_header.php");

$menu = $_GET['menu'];
if(isset($menu)){
if(file_exists(dirname(__FILE__).'/pages/_'.$menu.'.php')){
include(dirname(__FILE__).'/pages/_'.$menu.'.php');
}
else{
include(dirname(__FILE__).'/pages/_404.php'); // Если страница не найдена
}
}
else{
include(dirname(__FILE__).'/pages/_index.php'); // Главная
}

# Подвал
include("inc/_footer.php");

И .htaccess:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?menu=$1 [QSA,L]

работает все идеально.

Вопрос как инклудить пользовательские страницы с папки /account/ ?

И еще чтобы можно было оформить как в файле /pages/_account.php
потому что там можно добавить <div></div> и меню пользователя.


Добавлено сообщение: [time]25 Августа 2019, 12:49:24[/time]
а есть более современный вариант:
try {
$route = trim($_REQUEST['route']??'index');

if (substr($route,'-1') == '/') $route.='index';

if (!preg_match('~^[-a-z0-9/_]+$~i', $route)) throw new Exception('Not allowed route');

$filePath = dirname(__FILE__).'/pages/_'.$route.'.php';

if (!file_exists($filePath)) throw new Exception('Route not found');

include $filePath;
} catch (Throwable $ex) {

include dirname(__FILE__).'/pages/_404.php';
}

работает все идеально в htaccess заменить "menu" на "route".

как добраться до pages/_account.php ? чтоб тот продолжил инклудить пользовательские страницы но в этом файле дополнительно будут стили для аккаунта.
Типа:
<div class="account">
<?PHP include("inc/_user_menu.php"); ?>

<div class="content">
<div class="title">
<h3>{!TITLE!}</h3>
</div>

<?PHP

# Блокировка сессии
if(!isset($_SESSION["user_id"])){ Header("Location: /"); return; }


?>

</div>
</div>

Кто шарит? готов даже заплатить за результат!



Добавлено сообщение: 25 Августа 2019, 18:45:21
Еще так пробовал сделать:
в корне
index.php - инклудит /pages
user.php - инклудит /account

но как в htaccess прописать?
чтобы отображалось так
site.ru/about - внешняя страница
site.ru/reg - внешняя страница
site.ru/user/profile - внутренняя
site.ru/user/store - внутренняя
 
Теги: php route 
 

Имя пользователя:
Пароль:
Session: