2016-05-07 49 views
0

我一直在尋找答案,但不能找到一個,所以這是我的情況。我有以下陣列:PHP多維數組驗證

$pages = array(
    'page-one'=>range(1,9), 
    'page-two'=>range(1,3), 
    'page-three'=>range(5,9) 
); 

而且我想,以驗證用戶的訪問權限,根據他的角色ID的頁面,所以,讓我們說約翰(角色ID = 2)要訪問的頁面二。那麼,我如何驗證該頁面是否存在,以及他是否擁有有效的角色。

我試着像...

foreach ($pages as $page=>$roles) { 
    if (given-page==$page) { 
     // Then validate role id 
     if (in_array(given-role,$roles)) { 
     include('the-page'); 
     } else { 
     include('403-page'); 
     } 
    } else { 
     include('404-page'); 
    } 
} 

但是它總是顯示404-page.How我可以驗證這兩個變量(頁和角色ID)與陣列結構?

感謝, 卡洛斯

+0

檢查您的給定頁面變量。在循環啓動中迴應它。 'foreach($ pages as $ page => $ roles){echo「{given-page} == $
」; /*...*/' –

回答

0
$pages = array(
    'page-one'=>range(1,9), 
    'page-two'=>range(1,3), 
    'page-three'=>range(5,9) 
); 
$givenpage = "page-one"; 
$givenrole = 2; 

if(isset($pages[$givenpage])) { 
    if(in_array($givenrole, $pages[$givenpage])) { 
     include $givenpage; 
    } 
    else { 
     include "403-page"; 
    } 
} 
else { 
    include "404-page"; 
} 
+0

很好的解決方案。坦克! –

-1

我想我找到了解決辦法。它可以像...

if (!isset($pages[given-page])) { 
    include(404-page); 
} else if (isset($pages[given-page]) && in_array(given-role,$pages[given-page])) { 
    include(given-page); 
} else { 
    include(403-page); 
} 

不過,如果你認爲有更好的方法,請分享它。

謝謝!