我有一个脚本,在用户登录后,它将确定他是否属于以下组之一:
admin
user
manager
并且基于它将根据他的角色做一个包含。所以,如果用户在管理员组中,就会这样:
after login
include( "admin/index.php" );
工作正常,但问题是当该页面出现该页面中的任何链接应该转到admin /目录中的页面但是他们不知道,它仍然假设它在root中因为那是哪里包括来自。在使用包含时如何解决这个问题?或者甚至可以这样做?
答案 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>