PHP用户组级别

时间:2016-03-28 21:07:28

标签: php mysql

我正在开发一个小型cms项目,我的数据库字段如下

级别表

CREATE TABLE IF NOT EXISTS `security_level` (
  `user_level` int(10) NOT NULL,
  `level_title` varchar(30) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

VALUES
1, User
2, Moderator
3, Administrator

用户表

CREATE TABLE IF NOT EXISTS `users` (
  `uid` int(11) unsigned NOT NULL,
  `username` varchar(25) NOT NULL,
  `user_email` varchar(255) NOT NULL,
  `password` text,
  `security_level` int(11) NOT NULL DEFAULT '1',
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

我要做的是创建一个我可以包含在我的成员区域页面上的函数,所以如果level_id为1但页面需要level_id 2,它将只是重定向它们,默认情况下该级别设置为1。 ..

我使用它来确保他们已登录或重定向

<?php

if (logged_in()) {} else {

    redirect("login.php");
}
?>

但我想根据level_id

限制对某些网页的访问

1 个答案:

答案 0 :(得分:0)

这样做的简单方法就是这样。下面的函数返回true或false,并带有两个参数:$page_level$user_level

function user_has_permissions($user_level, $page_level)
{
    // a user can access page less than or equal to their level
    if ((int)$user_level >= (int)$page_level)
    {
        return true;
    }
    else
    {
        return false;
    }
}

我正在调用此函数user_has_permissions()而不是logged_in(),因为用户可能已登录,但他们可能无权访问属于不同级别的页面。

然后在页面上,为了使用此功能。

$page_level = "2";    // define page level on each page
// get the user level from sessions
if (!user_has_permissions($_SESSION['user_level'], $page_level))
{
    header ("Location: login.php");
    exit;
}
// code after successful permissions checking goes here

这是一个简单的实现,但您可能正在寻找访问控制列表(ACL)之类的东西。