2013-05-14 121 views
1

我有两个变量都包含逗号分隔列表。一个是权限变量,另一个是要访问页面的用户的用户组列表。检查用户组是否存在

1 =用户

2 =编辑

3 =主持人

4 =管理

<?php 
    $query = mysql_query("SELECT * FROM users WHERE id='{$user['id']}'"); 
    $user = mysql_fetch_assoc($query); 

    $query2 = mysql_query("SELECT * FROM menu WHERE active='1'"); 
    $page = mysql_fetch_assoc($query2); 

    echo $user['usergroup']; // 1 
    echo $page['usergroup']; // 2,3,4 
    ?> 

我需要帮助找到一种方法,这两个变量比较检查,如果他们有正确的用户组访问页面

if $ user ['usergroup'] co ntains从$页[“用户组”]做X否则做ÿ

谢谢:)

+1

爆炸(),in_array()? – 2013-05-14 08:08:19

+0

我似乎无法搜索in_array() – James 2013-05-14 08:10:35

回答

1
$user = "1,3,5"; 
$page = "1,2,5"; 

//explode and trim for a case you have spaces '1, 2,3 ,4' 
$u = array_map('trim', explode(",", $user)); 
$p = array_map('trim', explode(",", $page)); 

$intersect = array_intersect($u, $p); 
if (count($intersect)) 
{ 
    //ok 
    print_r($intersect);  
} 
else 
{ 
    //error 
} 

允许的权限:

Array 
(
    [0] => 1 
    [2] => 5 
) 
+0

多个值这是完美的,谢谢:] – James 2013-05-14 08:27:29

1

一些试试这个:

$query = mysql_query("SELECT * FROM users WHERE id='{$user['id']}'"); 
$user = mysql_fetch_assoc($query); 

$query2 = mysql_query("SELECT * FROM menu WHERE active='1'"); 
$page = mysql_fetch_assoc($query2); 


$pageGroups = explode(',', $page['usergroup']); 

if (array_search($user['usergroup'], $pageGroups) !== false) { 
    //TODO: User have access 
} 
0

虽然我不会存储权限作为一个逗号分隔字符串,东西像这可能是你在找什么:

$pageaccess = explode(',', $page['usergroup']); 

if(in_array($user['usergroup'], $pageaccess)) { 
    // Has permissions. Code goes here. 
} 

编辑:改名$权限$ pageaccess

0

虽然你得到的所有答案都应该有效,但我想为你的方法添加评论。将逗号分隔列表存储到数据库中绝不是一个好主意。它违反了数据库规范化的概念。

而不是存储逗号分隔列表,你应该重新考虑你的数据库设计。一种可能的方法可能是:

users (user_id, username) 
permissions(permission_id, permission) 
user_permissions(up_id, permission_id, user_id) 

由于您不需要进一步处理来自数据库的数据,因此效率更高。您可以查询您的数据库并询问用户是否具有某种权限。

SELECT `up_id` FROM `user_permissions` WHERE `user_id` = '{$uid}' AND `permission_id` = {5} 

采取此基础上更进一步,你可以组装一点点的访问控制列表:

users (user_id, username) 
groups (group_id, name) 
user_groups(ug_id, group_id, user_id) 
permissions(permission_id, permission) 
group_permissions(gp_id, group_id, permission_id)