如何将会话变量与URL值进行比较

时间:2014-12-10 11:05:29

标签: php mysql

我正在管理面板和管理员在不同用户之间划分任务,所以我希望特定用户只使用他们被允许使用的特定页面(所有其他页面的链接都不应该是可点击的)。

我正在传递一个唯一的页面ID,每个页面的URL和允许用户使用的页面ID都存储在数据库中,因此我需要将我的会话变量与URL值进行比较,会话变量我正在获取允许用户使用的页面ID。

我正在尝试此代码,但没有成功

if (isset($_SESSION['pageID']) && isset($_GET['page'])) {
    if ($_SESSION['pageID'] == (int)$_GET['page']){
        // Proceeding code 
    }
    else {
        // return fail
    }
}

任何帮助都会受到赞赏,因为我花了几个小时研究这个。    提前谢谢!

2 个答案:

答案 0 :(得分:1)

您应该将角色存储在数据库中,而不是存储在会话中。在角色表中,您可以存储用户的权限。例如,您可以说这种用户应该访问此页面ID。在用户想要访问您的页面时创建此项后,您应该向表发送查询以了解该用户是否可以访问此特定页面。

伪代码示例:

$available_pages_for_user = select * from table_roles where user_id = $_SESSION['user_id']
if $_GET['page'] in $available_pages_for_user
    //Proceed
else
    //401 error or smt..

答案 1 :(得分:1)

if (isset($_SESSION['pageID']) && isset($_GET['page'])) {

    $s = $_SESSION['pageID'];  //check what is coming
    $p = $_GET['page'];
    if ($s == $p){
        // Proceeding code 
    }
    else {
        // return fail
    }
}