尝试授予用户查看自己的个人资料的权限,即使他们没有权限查看该页面

时间:2014-07-21 23:29:25

标签: php

在我的页面顶部,我验证我的函数“verifyLevel”是否存在。

此功能验证我的管理员级别。管理员可以拥有1级,2级或3级。

现在我正在编辑我的编辑用户页面,在这个页面中,我只想让级别为1的管理员可以编辑用户。

但是,我还有一个链接“我的个人资料”,因为每个用户都可以编辑自己的个人资料。对于这个功能,我希望1,2或3级有一个访问权。

这是我的链接:

<a title="my profile" href="dashboard.php?exe=useres/users-edit&userid=
     <?php echo $_SESSION['admin']['id'];
     ?>">my profile
</a>

我现在遇到的问题是,当我正在进行级别验证时,当我点击“我的个人资料”链接时,我总是收到我的消息“你没有权限编辑管理员。”。

我的链接“我的个人资料”,只有在管理员拥有级别1时才有效,但此功能,我想要适用于所有管理级别。

您是否看到了解决此问题的方法?

这是我页面顶部的代码:

if(function_exists('verifyLevel')){
    if(verifyLevel($_SESSION['result']['id']) != '1'){
        echo 'You dont have permission to edit admins.';
    }
    else{
        $userId = $_GET['userid'];
        $read = $pdo->prepare("SELECT * from admins WHERE id = ?");  
        $read->bindParam(1, $userId, PDO::PARAM_INT);
        $read->execute();
        $result = $read->fetch(PDO::FETCH_ASSOC);
        if(!$read->rowCount() >=1){
            header('Location: dashboard.php?exe=users/index&notfound=true');
        }
      ....

1 个答案:

答案 0 :(得分:1)

您可以在当前之前添加if if,检查您是否在我的个人资料页面上,以及他们是否为管理员1-3 -

if(function_exists('verifyLevel')){
    $adminArray(1,2,3);
    if( isset($_GET['exe']) && $_GET['exe'] == 'useres/users-edit' && in_array(verifyLevel($_SESSION['result']['id']), $adminArray) ){
        // GET $_GET['userid'] profile
    }
    else if(verifyLevel($_SESSION['result']['id']) != '1'){
        echo 'You dont have permission to edit admins.';
    }
    else{
        ...