用户权限自定义cms

时间:2015-05-30 21:35:39

标签: php mysql

寻找关于我当前设置的一些建议,以及是否有更好的方法(这是我第一次尝试构建这样的应用程序)但我正处于需要用户角色的位置,只有两个用户和管理员。

我有一个用户表和一个组表,还有一个连接表,它从用户表中获取ID,从组表中获取Id,我也可以分配用户所属的组。

我想设法做一些事情,防止用户'通过输入url /admin/index.php访问管理区域,如果他们是管理员,也会在索引页面上显示一个链接,如果他们是普通用户则不会看到它。

这是我的代码,用于演示我可以显示用户角色标题但在这一点上挣扎:

<?
include('session.php');
if (!isset($_SESSION['user'])) {
  header("Location: index.php");
}
if(!ini_get('date.timezone'))
{
    date_default_timezone_set('GMT');
}
// This could be an include file for all admin pages
$isAdmin = false;
foreach($group as $groups){
    if($groups['name'] === 'admin'){
        $isAdmin = true;
        break;
    }
}

if(!$isAdmin){
    header('Location: index.php'); // or some other arbitrary location
    die();
}
?>

我想知道我的做法是否完全错误?

更新

{{1}}

我收到了这个错误:

注意:未定义的变量:第12行的/ Applications / MAMP / htdocs / dashboardr v3.2.3 / admin / header.php中的组

警告:在第12行的/ Applications / MAMP / htdocs / dashboardr v3.2.3 / admin / header.php中为foreach()提供的参数无效

1 个答案:

答案 0 :(得分:1)

  

我想设法做一些事情,防止用户&#39;通过输入url /admin/index.php访问管理区域,如果他们是管理员,也会在索引页面上显示一个链接,如果他们是普通用户则不会看到它。

我会给你一个解决方案,让你在当前的设置中工作;它不是 的方式,但我现在已经完成了工作。如果您担心用户处于特定角色,您最好在查询中指定该角色,而不是迭代所有潜在角色。

// This could be an include file for all admin pages
$isAdmin = false;
foreach($group as $groups){
    if($groups['name'] === 'admin'){
        $isAdmin = true;
        break;
    }
}

if(!$isAdmin){
    header('Location: index.php'); // or some other arbitrary location
    die;
}

在您吐出任何类型的HTML之前,您都希望将其放在页面顶部。