Php 根据用户情况限制访问多个页面的正确方法是什么?

Php 根据用户情况限制访问多个页面的正确方法是什么?,php,mysql,database,authentication,Php,Mysql,Database,Authentication,限制访问。我有一个表,为了简化,它有3列。用户、通行证、访问权 我有4种类型的页面。。。一个需要1,又名超级管理员。另一个需要2,又名总管理员。。。另外3个是国防部的。最后,任何用户都可以访问 我可以写代码,但是我应该怎么做呢 我自己想出了两个选项:函数进入我的库或包含我包含的文件,如果他们不能访问,它会重定向到“受限” 还有其他选择吗?最常见的方法是什么?重复使用代码的效率最高。有两种方法可以实现您想要实现的目标。我通常的做法是根据访问级别隐藏链接。如果不允许用户查看特定内容,请创建一个函数来

限制访问。我有一个表,为了简化,它有3列。用户、通行证、访问权

我有4种类型的页面。。。一个需要1,又名超级管理员。另一个需要2,又名总管理员。。。另外3个是国防部的。最后,任何用户都可以访问

我可以写代码,但是我应该怎么做呢

我自己想出了两个选项:函数进入我的库包含我包含的文件,如果他们不能访问,它会重定向到“受限”


还有其他选择吗?最常见的方法是什么?重复使用代码的效率最高。

有两种方法可以实现您想要实现的目标。我通常的做法是根据访问级别隐藏链接。如果不允许用户查看特定内容,请创建一个函数来隐藏链接,并仅向具有正确权限的用户显示链接

如果用户键入受限页面的URL,则应将其重定向到默认页面,可能是主页,或解释其无法转到“此处”的页面。您只需要测试权限,并有一个默认的目标页面。任何“安全”页面都应该简单地根据页面的级别测试当前访问级别,如果不等于或大于此级别,则重定向

另一种方法是创建默认的“拒绝访问”页面,当用户没有足够的权限时加载该页面

我总是用第一种方法。它的实现非常简单,减少了许多麻烦,最重要的是,减少了用户的挫折感。与其说是编程问题,不如说是用户界面问题


问问你自己,如果网站上的管理员链接到处都没有,amazon.com会有多烦人?

我唯一真正的建议是:不要编写自己的ACL库。。那里有很多。看一看,看看是否有一个看起来适合您的用例。我一直在看,这可能是一个很好的开始(虽然我自己没有使用过它)。

您使用的是框架吗?Zend有身份验证和授权模块。只要smarty template manager,如果它意味着什么,这不是我要问的。我知道隐藏链接,但如果它们在url栏中键入一个仅限管理员的页面,我需要重定向到受限页面。我需要知道我是否应该制作4个包含文件“superadmin.php”、“admin.php”、“mod.php”、“user.php”或4个子函数或其他任何东西。Well,我编辑了我的答案,提供了一些更详细的信息。当它提供很少或没有关于所需内容的信息时,安全性总是更好,也就是说,不要告诉用户他们需要什么来查看内容,只要告诉他们他们看不到就行了。一页,一个重定向。您也许可以重定向到登录页面,但这只有在他们根本没有登录的情况下才有意义。即使这样,你只需要一个登录页面。我不知道你为什么需要几份。提供尽可能少的细节。他们只需要知道他们无法访问内容。您仍然没有完全理解,但我想我可以让其中一个包含“checklogin.php”,在包含它之前,先创建一个变量
$accessrequired=2
?这是一个选项吗?当然,您基本上需要一个能够理解所需内容并根据所提供内容进行测试的函数。我在我的框架内做这件事。我根据必要的级别检查当前用户,然后根据该级别继续或退出。在OOP上下文中,您将拥有一个可用的安全类,并调用一个包含两个参数的方法,即current、required和action或nothing(允许加载页面)。您能进一步解释acl吗?我不在乎是否是链接阅读,我只想得到正确的信息。我想我会这样做:答案被接受