您好,感谢您的帮助。我有一个更强大的版本,我正在努力,但我需要短期的东西。我们创建了一个管理面板的2层用户访问权限。员工和管理员。下面的代码是我们在短期内实施的较长版本的简短版本示例。首先,我想检查他们的访问级别,如果它是1级或0级。这是OOP中的方法。
{{1}}
完成回复此顶部后,我得到了正确的答案,我获得了与帐户中当前用户名相关联的访问级别1。这就是我正在寻找的所以我们很好,但接下来的if语句我测试变量$ access是= 1(下面的语句)如果它等于1我在printf上调用并显示一个礼物为管理员准备的导航菜单列表显示了具有有限页面访问权限的员工的不同预设菜单。
{{1}}
当它半工作时,它会继续将第一页链接添加到其下面的每个导航选项,因此每个导航选项都会导致同一页面。如果它不起作用,它就会完全消失,导航甚至不存在。我希望我能够很好地解释这一点。在显示导航菜单之前,问题似乎出现在我测试其访问级别的if语句中。
答案 0 :(得分:1)
将代码更改为:
if(isset($access)) {
switch($access) {
case 1:
// do the code
break;
case 2:
// do the code
break;
}
}else{
echo "access not set";
}
试试这个。
Ps。:1与" 1"不同。你把你的sql字段作为int吗?
答案 1 :(得分:0)
为了在保护页面的同时完全完成这项工作,我添加了这个简单的代码来存储登录过程中登录的当前用户名
session_start();
$_SESSION['username'] = $user;
然后我添加了一个包含类似以下语法的包含文件。
session_start();
if(isset($_SESSION['username'])){
$userId = $_SESSION['username'];
} else {
echo "You don't have credentials to enter...";
exit();
die();
}
这个包含被添加到所有文件中,或者我也可以选择将所有页面中的公共包含文件包含到一个包含所有常见include()的包含文件中;文件。现在它限制访问,除非有人登录,但如果有人有更好的方法来优化此代码,请告诉我。我觉得这个版本简单明了。任何人都可以推荐的任何其他安全级别请随时告诉我。其他人也可以使用它。
现在根据$userId
中存储的用户名,它将提供正确的菜单。
菜单的语法类似于下面的内容。
class menu{
public function __construct($dbCon){
$this->dbConn = $dbCon;
}
function menuPriviledges($dbCon){
global $userId;
if($accessLev = $this->dbConn->query("SELECT access FROM UserProfiles WHERE userId = '$userId'")){
while($Data = $accessLev->fetch_assoc()){
$access = $Data['access'];
}
}
if($access == 1){
include('common-menu-admin.php');
} elseif($access == 0) {
include('common-menu-employee.php');
}
}
}
现在一切正常,速度也快!