【发布时间】:2015-08-12 00:53:39
【问题描述】:
您好,提前感谢您的帮助。我正在开发一个更强大的版本,但我需要一些短期的东西。我们创建了对管理面板的 2 层用户访问权限。员工和管理员。下面的代码是我们在短期内实现的较长版本的一个简短版本示例。首先,我想检查他们的访问级别是 1 级还是 0 级。这是 OOP 中的一种方法。
function menuPriviledge($dbCon){
$username = $_REQUEST['username'];
if($accessLevel = $this->dbConnection->query("SELECT access FROM UserProfiles WHERE username = '$username' LIMIT 0, 1")){
while($accessData = $accessLevel->fetch_assoc()){
$access = $accessData['access'];
}
}
在我完成回显此顶部部分后,我得到了正确答案,我得到了与帐户中当前用户名相关联的访问级别 1。这就是我一直在寻找的,所以我们很好,但是在下一个 if 语句中,我测试变量 $access 是否 = 1(下面的语句)如果它等于 1 我调用 printf 并显示当前列表为管理员准备的导航菜单,否则会为页面访问受限的员工显示不同的预设菜单。
if(isset($access)){
switch($access){
case 1:
$query = "SELECT * FROM CVCUserFilePrivileges";
if($files = $this->dbConnection->query($query)){
while($access = $files->fetch_assoc()){
printf("<li><a href=\"%s\"><i class=\"icon-angle-right\"></i>Directory Listings</a></li>
<li><a title=\"Ads Manager\"><i class=\"icon-laptop\"></i>Ads Manager<span>5</span></a>
<ul>
<li><a href=\"%s\"><i class=\"icon-angle-right\"></i>Dealer Paid Listings</a></li>
<li><a href=\"%s\"><i class=\"icon-angle-right\"></i>Listing Side Ads</a></li>
<li><a href=\"%s\"><i class=\"icon-angle-right\"></i>Scrap Metal Page Ads</a></li>
<li><a href=\"%s\"><i class=\"icon-angle-right\"></i>Coin Request Page Ads</a></li>
<li><a href=\"%s\"><i class=\"icon-angle-right\"></i>Dealer Form Page Ads</a></li>
</ul>
</li>", $access['directoryList'], $access['dlrPaidListing'], $access['listingSideAds'], $access['scrapMetalAds'], $access['coinRequestAds'], $access['dlrFormAds']);
}
}
break;
case 0:
$query = "SELECT * FROM CVCUserFilePrivileges";
if($files = $this->dbConnection->query($query)){
while($access = $files->fetch_assoc()){
printf("<li><a href=\"%s\"><i class=\"icon-angle-right\"></i>Directory Listings</a></li>
<li><a title=\"Ads Manager\"><i class=\"icon-laptop\"></i>Ads Manager<span>1</span></a>
<ul>
<li><a href=\"%s\"><i class=\"icon-angle-right\"></i>Dealer Paid Listings</a></li>
</ul>
</li>", $access['directory'], $access['dlrPaidListing']);
}
}
break;
default:
echo "There is an error, no access level set, contact your database administrator";
}
}
当它半工作时,它会继续将首页链接添加到其下方的每个导航选项,因此每个导航选项都指向同一页面。当它不起作用时,它会完全消失,导航甚至不存在。我希望我能够很好地解释这一点。问题似乎出在我在显示导航菜单之前测试其访问级别的 if 语句上。
【问题讨论】:
-
嗨@RookieRecruits ...首先:对于良好的做法,您必须在
if语句之前启动$access变量。第二:如果您的用户只有两种访问权限,则不需要使用else if。只有else标签。第三:您的 SQL 查询在 Administrator 和 Employees 两种情况下都是相同的。 -
谢谢@ThiagoAugustusOliveira 我会在没有elseif的情况下尝试它,sql查询是相同的,因为每个访问级别可用的文件数量已经预先确定并硬编码到php中。上面我只显示了 1 个
- 标签,但在实际版本中,它们在导航中会有不同数量的页面。这会为我争取时间。
-
你有什么进展吗?
-
没有还在努力解决。 @ThiagoAugustusOliveira 希望今天能完成这项工作。
标签: php mysql privileges