2011-03-31 48 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功能。這種方法也提高了可移植性。