【问题标题】:PHP Multidimensional Array ValidationPHP 多维数组验证
【发布时间】:2016-05-07 07:37:11
【问题描述】:

我一直在寻找答案,但找不到答案,所以这就是我的情况。我有以下数组:

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

我想根据用户的角色 id 验证用户对页面的访问权限,因此,假设 John(角色 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 页面。如何使用该数组结构验证两个变量(页面和角色 ID)?

谢谢, 卡洛斯

【问题讨论】:

  • 检查您的给定页面变量。在循环开始时回显它。 foreach ($pages as $page=>$roles) { echo "{given-page}==$page<br>"; /*...*/

标签: php arrays validation multidimensional-array


【解决方案1】:
$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";
}

【讨论】:

  • 不错的解决方案。坦克!
【解决方案2】:

我想我找到了解决办法。可以这样解决……

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);
}

不过,如果您认为有更好的方法,请分享。

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 2016-07-14
    • 2022-10-07
    • 2020-08-06
    • 2017-05-28
    • 2014-01-28
    • 1970-01-01
    相关资源
    最近更新 更多