我正在开发一个小型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
限制对某些网页的访问答案 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)之类的东西。