Ребзя, Всем добра!
В попытках упростить/оптимизировать/усовершенствовать всеми любимый скрипт 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 - внутренняя