在PHP中保护分割管理页面的选项

在PHP中保护分割管理页面的选项,php,security,admin,Php,Security,Admin,这是我第一次需要为我的PHP应用程序设置一个管理面板,我想我已经设计好了,但现在我不太确定。我最初的想法是这样的 我将创建一个函数来测试数据库中是否有$username、$password。如果是,那么我会将$\u SESSION设置为TRUE。鉴于站点具有多个访问级别,它还需要检查用户角色 这一切都很好,在到达管理面板时输入用户名和密码,然后输入角色,如果一切正常,则进入管理面板,否则将重定向到登录页面 我的想法是,为了实现可重用元素,我希望在管理部分采用与主站点相同的原则,即使用header

这是我第一次需要为我的PHP应用程序设置一个管理面板,我想我已经设计好了,但现在我不太确定。我最初的想法是这样的

我将创建一个函数来测试数据库中是否有$username、$password。如果是,那么我会将$\u SESSION设置为TRUE。鉴于站点具有多个访问级别,它还需要检查用户角色

这一切都很好,在到达管理面板时输入用户名和密码,然后输入角色,如果一切正常,则进入管理面板,否则将重定向到登录页面

我的想法是,为了实现可重用元素,我希望在管理部分采用与主站点相同的原则,即使用header.php、footer.php和content.php,其中包含管理员选择查看或执行的任何内容

这是我的问题。如果在header.php中调用doesUserExist函数,即使用户未登录,也可以访问content.php或footer.php页面

我必须在这里错过一些非常简单的东西,检查用户是否存在于所有3个页面的选项似乎有些臃肿

我是不是看错了?是否有一种方法可以让您检查用户是否存在,并且无论他们访问什么,他们都会对整个管理目录应用用户控制

我所能看到的所有例子都没有涵盖这一点,这让我怀疑是否有充分的理由


提前感谢您的建议。

也许您可以这样做:

在另一个内置的PHP页面中,或者在
header.PHP
中,运行所有检查,如
doesUserExist()
等,并根据结果分配变量。然后使用这些变量创建页面内容

$content = "Content for a non-logged in user.";

if (doesUserExist()) {
    if (getUserType() == 'admin')
        $content = "Conent for Admin user";
    else
        $content = "Content for non-Admin user";
}
然后,使用
$content
,以及您创建的任何其他相关变量来填充html:

<h1><?=$content?></h1>


显然,这段代码非常简单,只是为了举例说明
getUserType()
只是我用来确定用户类型的函数的任意示例,这里的代码当然需要更高的复杂性才能获得构建相应页面所需的所有数据。

创建前端控制器。让它负责用户登录(关闭应用程序)并包装包含内容。用一把枪!我很想使用一个框架,但老实说,我认为我对PHP的了解不够先进,不能正确或最好地使用它。