服務器端引用 (SSI) 用於創建可在多個頁面重復使用的函數、頁眉、頁腳或元素。
通過 include() 或 require() 函數,您可以在服務器執行 PHP 文件之前在該文件中插入一個文件的內容。除了它們處理錯誤的方式不同之外,這兩個函數在其他方面都是相同的。include() 函數會生成一個警告(但是腳本會繼續執行),而 require() 函數會生成一個致命錯誤(fatal error)(在錯誤發生後腳本會停止執行)。
這兩個函數用於創建可在多個頁面重復使用的函數、頁眉、頁腳或元素。
這會為開發者節省大量的時間。這意味著您可以創建供所有網頁引用的標准頁眉或菜單文件。當頁眉需要更新時,您只更新一個包含文件就可以了,或者當您向網站添加一張新頁面時,僅僅需要修改一下菜單文件(而不是更新所有網頁中的鏈接)。
include() 函數可獲得指定文件中的所有文本,並把文本拷貝到使用 include 函數的文件中。
假設您擁有一個標准的頁眉文件,名為 "header.PHP"。如需在頁面中引用這個頁眉文件,請使用 include() 函數,就像這樣:
<html> <body> <?php include("header.PHP"); ?> <h1>Welcome to my home page</h1> <p>Some text</p> </body> </Html>
現在,假設我們有一個在所有頁面上使用的標准菜單文件。請看下面這個 "menu.PHP":
<Html> <body> <a href="http://www.w3school.com.cn/default.php">Home</a> | <a href="http://www.w3school.com.cn/about.php">About Us</a> | <a href="http://www.w3school.com.cn/contact.PHP">Contact Us</a>
三個文件,"default.php"、"about.php" 以及 "contact.php" 都引用了 "menu.php" 文件。這是 "default.PHP" 中的代碼:
<?php include("menu.PHP"); ?> <h1>Welcome to my home page</h1> <p>Some text</p> </body> </Html>
如果您在浏覽器中查看 "default.PHP" 的源代碼,應該類似這樣:
<html> <body> <a href="default.php">Home</a> | <a href="about.php">About Us</a> | <a href="contact.PHP">Contact Us</a> <h1>Welcome to my home page</h1> <p>Some text</p> </body> </Html>
同時,當然,我們也將用相同的方法處理 "about.php" 和 "contact.php"。通過使用引用文件,在您需要重命名鏈接、更改鏈接順序或向站點添加另一張網頁時,只要簡單地更新 "menu.PHP" 文件中的文本即可。
require() 函數與 include() 相同,不同的是它對錯誤的處理方式。
include() 函數會生成一個警告(但是腳本會繼續執行),而 require() 函數會生成一個致命錯誤(fatal error)(在錯誤發生後腳本會停止執行)。
如果在您通過 include() 引用文件時發生了錯誤,會得到類似下面這樣的錯誤消息:
<html> <body> <?php include("wrongFile.PHP"); echo "Hello World!"; ?> </body> </Html>
Warning: include(wrongFile.php) [function.include]: failed to open stream: No such file or directory in C:\home\website\test.php on line 5 Warning: include() [function.include]: Failed opening 'wrongFile.php' for inclusion (include_path='.;C:\php5\pear') in C:\home\website\test.PHP on line 5 Hello World!
請注意,echo 語句依然被執行了!這是因為警告不會中止腳本的執行。
現在,讓我們使用 require() 函數運行相同的例子。
<html> <body> <?php require("wrongFile.PHP"); echo "Hello World!"; ?> </body> </Html>
Warning: require(wrongFile.php) [function.require]: failed to open stream: No such file or directory in C:\home\website\test.php on line 5 Fatal error: require() [function.require]: Failed opening required 'wrongFile.php' (include_path='.;C:\php5\pear') in C:\home\website\test.PHP on line 5
由於在致命錯誤發生後終止了腳本的執行,因此 echo 語句不會執行。
正因為在文件不存在或被重命名後腳本不會繼續執行,因此我們推薦使用 require() 而不是 include()。