用于在PHP中保护拆分管理页面的选项

时间:2014-05-07 22:26:18

标签: php security admin

我第一次需要一个管理面板用于我的PHP应用程序,我想我已经想到了但现在我不太确定。我最初的想法就是这个。

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

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

我想的是,为了可重复使用的元素,我想在管理部分采用与主站点相同的原则,即拥有header.php,footer.php和内容。 php将包含管理员选择查看或执行的任何操作。

有我的问题。如果在header.php中我调用了didUserExist函数,即使用户没有登录,他们仍然可以访问content.php或footer.php页面。

我必须在这里找到一些非常简单的东西,检查用户是否存在于所有3个页面上的选项看起来有些臃肿。

我是以错误的方式看待这个吗?有没有一种方法可以检查用户是否存在,并且他们确实将用户控制应用于整个管理目录,无论他们访问什么?

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

提前感谢任何建议。

1 个答案:

答案 0 :(得分:0)

也许你这样做:

在另一个包含的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()只是我确定用户类型的函数的任意示例,这里的代码肯定需要更多的复杂性来获取构建适当页面所需的所有数据。