我正在写一个小项目,一个非注册用户只能访问几个页面的页面,其他几个页面的注册页面,以及其他一些注册用户的页面。这是一场比赛,所以只有那些玩“比赛”的人才能接触到后者。此外,我们还会有一些页面,即管理员(秘密页面)。这是结构:
$Public_Path = '/public_html/public/';
$Private_Path = '/public_html/private/';
$Secret_Path = '/public_html/secret/';
我通过 /public_html/index.php 传递所有内容并从那里包含文件。我认为将所有包含和重定向放在一个地方而不是分散在每个文件的开头会更好。问题是,这里的代码开始变得混乱,还有更多的选项要添加。有没有简化它的模式?这就是我的代码现在的样子:
// Some extra code goes here
// If an unregistered user tries to go anywhere he shouldn't
if (!file_exists($Public_Path . $Url . '/index.php') && empty($User))
header ('Location: /login/');
// PUBLIC. Load the public pages
if (file_exists($Public_Path . $Url . '/index.php'))
include $Public_Path . $Url . '/index.php';
// SECRET. Only for admin
else if (file_exists($Secret_Path . $Url . '/index.php') && in_array($User->email, $Admins))
include $Secret_Path . $Url . '/index.php';
// PRIVATE. Load the template and include private pages
else if (file_exists($Private_Path . $Url . '/index.php'))
{
if ($UrlArray[0] != 'games' && $User->game == 0)
header ('Location: /games/');
if ($UrlArray[1] == 'save')
include $Private_Path . $Url . '/index.php';
else
{
$Page = $Private_Path . $Url . '/index.php';
include $Include_Path . 'template.php';
}
}
// 404. Nor public nor private nor secret
else
header ('Location: /error/404');
注意:我知道只能index.php
用这个访问的限制,我自己强加的。
我的问题是,我怎样才能以某种方式订购此代码,以允许我添加更多功能但仅增加一点复杂性?如何减少后者?