2011-03-31 186 views
1

我有一个嵌套的文件夹结构,我想做一个标头重定向到login.php从每个页面是未经授权。 (每个页面将包含security.php)PHP头重定向嵌套文件夹

注意:整个文件夹可能位于子文件夹中,因此DOMAIN + login.php不起作用。

实施例:

-index.php 
-login.php 
-security.php 
-people.php 
-activities 
    - view.php <-- How can I have do a header redirect back to login.php from here 

security.php

if (!isAllowed()) 
{ 
    header("Location: login.php"); 
} 

的index.php

require_once('security.php') // Works fine 

活动/ view.php

require_once ('../security.php'); //Works fine, but the HEADER redirect doesn't work 
+0

我的问题是不明确的,所以我固定它 – 2011-03-31 18:40:05

回答

0

活动/ view.php - >

require_once ('../security.php'); 

../表明您移动文件夹回来。

0

你可以做很多事情。我建议设置一个常量来定义当前路径,然后使用它创建一个绝对链接。您也可以使用服务器标题数据来确定您当前的路径,并根据它确定目标是什么。此外,在PHP5 +使用

require_once 'security.php'; 

相反的()

0

根据提问者的更新更新这个帖子:

header('Location: /login.php');应该工作。

+0

如果应用程序安装在域的根目录,将工作,但由于某些原因,他们决定把它放在一个子文件夹。 – 2011-03-31 20:30:31

+0

然后定义你的子文件夹并使用'header('Location:/'。$ subfolder。'/login.php');' – tvkanters 2011-03-31 20:32:25

0

以我的经验,是迄今为止最好的方法是定义一个有用的include_path的应用。

php.ini,我们会设置我们的路径,像这样:

include_path = ".:/path/to/webroot/your_app/includes" 

......然后,在我们的应用程序,包括该目录中的任何内容,用一个简单的include 'file.php';。这将我们的应用程序中的所有丑陋的东西抽象出来,并保持逻辑清洁。我们也可以很容易地跨应用程序重用代码:

include_path = ".:/path/to/webroot/your_app/includes:/path/to/shared/includes" 

如果你没有你的php.ini访问,您可以使用PHP的set_include_path功能。这种方法也提高了可移植性。