2013-05-14 123 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)