2016-05-07 2 views
0

Я искал ответ, но не могу найти его так, вот и вот мое дело. У меня есть следующий массив:Проверка многомерных массивов PHP

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

И я хотел бы, чтобы проверить права доступа пользователя к странице на основе его роли идентификатора, так, скажем, Джон (роли: = 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 можно проверить обе переменные (страницы и идентификатор роли) с этой структурой массива?

Спасибо, Carlos

+0

Проверьте переменную заданной страницы. Эхо в начале цикла. 'foreach ($ pages as $ page => $ role) {echo" {given-page} == $ 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); 
} 

Тем не менее, если вы считаете, что есть лучший способ, пожалуйста, поделитесь им.

Спасибо!

Смежные вопросы