需要PHP登录系统帮助

时间:2011-06-15 05:15:37

标签: php authentication logging authorization registration

我是PHP的新手,我没有太多的PHP经验。我正在尝试开发基于分层结构的登录系统。我想到了实现该系统的各种方法,但我认为最好是获得一些来自像你这样经验丰富的程序员的想法。我在下面解释了我的要求。

我需要制作3个不同权限的不同登录层.Eg.Member,Staff,Admin.Here admin应该拥有几乎所有系统权限,而成员应该有一些,而员工需要更多。能不能给我一些实现我的系统的想法。毫无疑问它很复杂,我需要保护它。

我是否必须为不同的用户使用不同的功能文件,或者可以使用具有不同权限的同一文件集。

谢谢。

3 个答案:

答案 0 :(得分:2)

一般而言,您需要做的是首先确定用户登录时的角色。通常,这可以通过在数据库中查找用户来完成。

然后,将他们的角色存放在会话中:php sessions

之后,当您要显示某些选项时,只有管理员应该(例如)检查会话以确保他们具有所需的角色。您应该在实际执行操作时再次检查角色,以防止攻击者通过伪造请求执行他们无法执行的命令。

此外,这应该通过SSL连接(HTTPS)完成,以帮助防止攻击者通过检查管理员的请求标头并使用该会话ID构建自己的请求来劫持其他用户的会话。

(我也是一个PHP初学者,但这应该涵盖实现基于角色的安全身份验证系统的大部分常规内容。希望它有所帮助。)

答案 1 :(得分:1)

没有必要为不同的用户提供不同的功能文件。有一张表格,其中详细说明了谁是员工,会员和管理员。在显示页面时,只需在显示每个项目之前检查每个项目的权限,并在执行每个功能期间检查用户是否具有执行该功能所需的权限。

答案 2 :(得分:1)

class level
{
    const UNCLASSIFIED = 1;
    const CONTROLLED = 2;
    const RESTRICTED = 4;
    const SENSITIVE = 8;
    const CONFIDENTIAL = 16;
    const SECRET = 32;
    const TOPSECRET = 64;
    const CODEWORD = 128;

    const MEMBER = 63; // Everything up to SECRET.
    const STAFF = 127; // Everything up to TOPSECRET.
    const ADMIN = 255; // Everything.

    private $level = NULL;

    public function __get($property) { return $this->$property; }
    public function __set($property, $value) { return $this->$property = $value; }
}

使用按位操作,您可以为其访问情况很常见的某些人设置预定义级别。而当您有人需要访问某种类型的信息而不是其他类型的信息时,您可以只使用他们需要的访问级别来设置他们的帐户。

相关问题