0

用户在注册时被赋予默认的“member_type”作为“用户”。我正在尝试使用存储在 header.php 中的函数来限制使用 $_SERVER['SCRIPT_NAME'] 的“用户”和未经身份验证的访问者对某些页面的访问。

这个概念是合理的(我相信),但我真的需要一些新鲜的眼睛来帮助我解决逻辑。

这是标题中的函数:

$basicAuth = array("member.php", "order.php", "logout.php");
    $adminonly = array("admin.php", "v_feedback.php", "user.php", "v_content.php", "product.php");


    restrictAccess($basicAuth, $adminonly);

这是完整的功能:

function restrictAccess($basicAuth, $adminonly){
$error = "You do not have the authentication privileges to access this area, go <a href=\"index.php\" alt=\"Home\">home</a>.";

    if (isset($_SESSION['type'])){
        $auth = "Basic";

        if($_SESSION['type']=="Admin"){
            $auth = "Admin";
        }
    } else {
        $auth = "None";
    }

    //For testing purposes
    echo $auth;



if ($auth == "None"){
    if(($_SERVER['SCRIPT_NAME']==$basicAuth)||($_SERVER['SCRIPT_NAME']==$adminonly)){
        echo $error;
        exit();
    }
}elseif($auth =="Basic"){
    if(($_SERVER['SCRIPT_NAME'])==$adminonly){
        echo $error;
        exit();
    }
}

}

我有一种感觉,这与我构建它的方式背后的逻辑有关,这是错误的。

谢谢你。

4

1 回答 1

0

if($_SERVER['SCRIPT_NAME']==$basicAuth)是完全错误的。您不能比较数组和字符串。 if(array_search($_SERVER['SCRIPT_NAME'],$basicAuth) !== FALSE)会服务,但你最好使用键而不是值,然后if(array_key_exists($_SERVER['SCRIPT_NAME'],$basicAuth)). 而且,顺便说一句,将“basicAuthNeeded.php”包含在某些脚本中并将“adminAuthNeeded.php”包含在其他脚本中而不是您的方法中不是更简单吗?或者使用更复杂但更灵活的方法(定义一些角色,定义资源并使用一些checkPermissions($role, $resource))?

于 2012-12-10T20:31:28.653 回答