2014-05-01 67 views
-2

嘿,我想在我的網站中包含一個navigation.php文件,但我無法弄清楚如何在.php文件中包含一個外部文件,唯一的辦法就是我可以發現將navigation.php包含到文件中是在每個目錄中複製一份。如何在php文件中包含php文件

<?php include("navigation.php"); ?> works when i make a copy of the navigation.php in each directory. 


<?php include("http://www.mysite.net/format/navigation.php"); ?> gives me an error. 

我想只有這些navigation.php文件之一的「格式」目錄,然後使每個頁面獲取文件並顯示它。

還有一段時間要監測這個問題,所以只問我是否需要任何額外的信息。

+1

您不希望通過http包含外部文件。這是在惹麻煩。如果外部文件包含惡意代碼會怎麼樣? – HamZa

+1

是的,如果從一個網址是不會工作,它的設計,否則它將是不安全的。一個簡單的方法是在您的索引中設置一個常量(如WEB_ROOT),然後在進行包含時使用它。那麼你不必擔心你在目錄結構中的位置。 –

+0

我想使用include添加的文件是由我編寫的,所以我懷疑會有惡意代碼在其中... – ilovepoker

回答

2

把那個文件一個地方。然後通過其正確的path在每個文件中引用它。

// navigation.php is in the same directory 
<?php include("navigation.php"); ?> 
<?php include("./navigation.php"); ?> 

// navigation.php is one directory below the current directory 
<?php include("../navigation.php"); ?> 

// navigation.php is two directories below the current directory 
<?php include("../../navigation.php"); ?> 

但是,如果許多目錄中有很多文件,這可能會變得乏味。要做到這一點,最好的辦法是使用完整的文件路徑文件系統:

// Full path relative to the root of the account 
<?php include("/full/path/to/navigation.php"); ?> 

但是,這可能會很麻煩,如果路徑變化。因此,定義一個變量或常量來保存該值,因此您只需在一個位置更改它即可:

// In a config file 
define('INCLUDE_PATH', '/full/path/to/'); 

// In each page after you include your config file 
<?php include(INCLUDE_PATH . "navigation.php"); ?> 
+0

+1對於'INCLUDE_PATH'建議..所以simplezz –

+0

「// navigation.php是當前目錄下面的兩個目錄」如果在當前目錄的上方有兩個目錄? – ilovepoker

+0

@ilovepoker我的一個錯字。糾正。謝謝你指出。 –