2013-02-21 76 views
0

我想請一些幫助。如何檢查功能是否僅包含在子文件夾的頁面中

我有網站的結構是這樣的:

root folder(mysite): 
- subfolder: includes (has inside the initialize.php - I include it on the top of ALL my pages) 
- subfolder: admin (has inside the localhost/mysite/admin/index.php, localhost/mysite/admin/edit.php, localhost/mysite/admin/delete.php) 

index.php(localhost/mysite/admin/index.php) 
albums.php 

我也有一個功能的loggedIn()允許訪問管理員文件夾中的頁面,只有當用戶登錄因此,代碼後臺管理頁面裏面是這樣的:

<?php require_once('../includes/initialize.php'); ?> 
<?php loggedin(); //I put this only in pages inside admin folder ?> 
<?php include('header.php'); ?> 
/// Instead inside root pages is like this: 
<?php require_once('includes/initialize.php'); ?> 
<?php include('header.php'); ?> 

我想什麼,雖然做的是把我的功能initialize.php內,還進行檢查,使確保的loggedIn()在所有隻包括admin文件夾內的頁面,所以localhost/mysite/index.php將不會有它,而不是localhost/mysite/admin/index.php將它。

+0

請注意,正確的拼寫是'initialize'而不是'initilize'。 – 2013-02-21 10:14:45

回答

1

你可以把這樣的事情在initilize.php文件

$dir = basename(dirname(__FILE__)); 
if($dir == 'admin') { 
    loggedIn(); 
} 

這將是這樣做的一個非常簡單的方法,如果管理員/目錄中不包含任何其他目錄,將只工作。

編輯

$dir = basename(dirname($_SERVER['SCRIPT_NAME']); 

應該給你的當前目錄你在。所以,如果你是管理/ index.php文件頁面上$dir現在將等於admin。執行小的if語句來檢查目錄是否等於管理員,以及是否執行登錄檢查。

現在好了,在admin /目錄什麼是要調用的loggedIn()函數,所以你必須將login.php中文件放在管理員/目錄之外或者做類似

$fileName = basename($_SERVER['SCRIPT_NAME']); 
if($dir == 'admin' && $fileName != 'login.php') { 
    loggedIn(); 
} 

它會完成工作,但我建議您查看訪問控制列表。

+0

'__FILE__'是當前文件,所以* initilize.php *。您正在尋找'$ _SERVER ['SCRIPT_NAME']'。 – 2013-02-21 10:13:30

+0

哦,是的,這是它,我沒有測試它,然後我寫下來。 – ibanore 2013-02-21 10:14:15

+0

是的,我回應了__FILE__並給了我initialize.php的路徑。我真正想要的是不是管理文件夾內頁面的路徑? – Lykos 2013-02-21 10:19:01

相關問題