根据用户角色包含文件

时间:2014-08-05 20:37:47

标签: php

我有一个脚本,在用户登录后,它将确定他是否属于以下组之一:

admin
user
manager

并且基于它将根据他的角色做一个包含。所以,如果用户在管理员组中,就会这样:

after login
include( "admin/index.php" );

工作正常,但问题是当该页面出现该页面中的任何链接应该转到admin /目录中的页面但是他们不知道,它仍然假设它在root中因为那是哪里包括来自。在使用包含时如何解决这个问题?或者甚至可以这样做?

2 个答案:

答案 0 :(得分:0)

你可以这样做。 include()不是魔术,而只是另一种功能。

set_include_path ("/path/to/the/files");

switch ($user_role)
{
case 'admin':    include("admin/index.php");         break;
case 'user':     include("meremortal/index.php");    break;
case 'manager':  include("prince/index.php");        break;
}

答案 1 :(得分:0)

当您的脚本从不同的目录级别执行时,include()需要知道您所处的目录级别,以便相对使用路径。相反,我通常在配置文件中使用服务器上的绝对根路径定义一个常量,因此您不需要使用相对路径:

const ROOTPATH = "/var/www/yoursite/";

include ROOTPATH."path/to/file.php";

对于页面上的任何href,您还需要在开头使用/链接到其绝对路径:

<a href='/path/to/file.php'>link</a>