簡介 PHP是一種易于學習和使用的服務器端腳本語言。只需要很少的編程知識你就能使用PHP建立一個真正交互的WEB站點。本教程并不想讓你完全了解這種語言,只是能使你盡快加入開發(fā)動態(tài)web站點的行列。我假定你有一些HTML(或者HTML編輯器)的基本知識和一些編程思想。 1.簡介 PHP是能讓你生成動態(tài)網頁的工具之一。PHP代表:超文本預處理器(PHP: Hypertext Preprocessor)。PHP是完全免費的,不用花錢,你可以從PHP官方站點(http://www.php.net)自由下載。PHP遵守GNU公共許可(GPL),在這一許可下誕生了許多流行的軟件諸如Linux和Emacs。你可以不受限制的獲得源碼,甚至可以從中加進你自己需要的特色。PHP在大多數Unix平臺,GUN/Linux和微軟Windows平臺上均可以運行。怎樣在Windows環(huán)境的PC機器或Unix機器上安裝PHP的資料可以在PHP官方站點上找到,也可以查閱網頁陶吧的“PHP安裝全攻備”專題文章。安裝過程很簡單。 如果你的機器解決了2000問題,那么PHP也一樣沒有千年蟲問題! 1.1 歷史 三年前,Rasmus Lerdorf為了創(chuàng)建他的在線簡歷而創(chuàng)造了"個人主頁工具"(Personal Home Page Tools)。這是一種非常簡單的語言。其后越來越多的人們注意到了這種語言并對其擴展提出了各種建議。在許多人的無私奉獻下以及這種語言本身的源代碼自由性質,它演變成為一種特點豐富的語言,而且現(xiàn)在還在成長中。 PHP雖然很容易學習,但是速度上比mod_perl(植入web服務器的perl模塊)慢。現(xiàn)在有了可以與mod_perl速度想媲美的被稱作Zend的新引擎,而PHP4就可以充分利用這個引擎?,F(xiàn)在,PHP4正式版已經發(fā)布,大家可以到php的官方站點上去下載。Andy Gutmans和Zeev Suraki是Zend的主要作者??梢匀end站點(http://www.zend.com)了解更多。 PHP的應用在個人性質的web工程中增長顯著。根據Netcraft在1999年10月的報告,有931122個域和321128個IP地址利用PHP技術。 1.2 PHP的先進之處 應用PHP有許多好處。當然已知的不利之處在于PHP由于是開放源碼項目,沒有什么商業(yè)支持,并且由此而帶來的執(zhí)行速度緩慢(直到PHP4之前)。但是PHP的郵件列表很是有用而且除非你正在運行像Yahoo!或者Amazon.com這樣的極受歡迎的站點,你不會感覺出PHP的速度與其他的有什么不同。最起碼我就沒有感覺出來!好了,讓我們來看看PHP有那些優(yōu)點: - 學習過程 我個人更喜歡PHP的非常簡單的學習過程。與Java和Perl不同,你不必把頭埋進100多頁的文檔中努力學習才可以寫出一個象樣的程序。只要了解一些基本的語法和語言特色,你就可以開始你的PHP編碼之旅了。之后你在編碼過程中如果遇到了什么麻煩,還可以再去翻閱相關文檔。 PHP的語法類似于C,Perl,ASP或者JSP。對于那些對上述之一的語言較熟悉的人來說,PHP太簡單了。相反的,如果你對PHP了解較多,那么你對于其他幾種語言的學習都很簡單了。 你只需要30分鐘就可以將PHP的核心語言特點全部掌握,你可能已經非常了解HTML,甚至你已經知道怎樣用編輯設計軟件或者手工來制作好看的WEB站點。由于PHP代碼能夠無障礙的添加進你的站點,在你設計和維護站點的同時,你可以很輕松的加入PHP使得你的站點更加具有動態(tài)特性。 - 數據庫連接 PHP可以編譯成具有與許多數據庫相連接的函數。PHP與MySQL是現(xiàn)在絕佳的組合。你還可以自己編寫外圍的函數取間接存取數據庫。通過這樣的途徑當你更換使用的數據庫時,可以輕松的更改編碼以適應這樣的變化。PHPLIB就是最常用的可以提供一般事務需要的一系列基庫。 - 可擴展性 就像前面說的那樣,PHP已經進入了一個高速發(fā)展的時期。對于一個非程序員來說為PHP擴展附加功能可能會比較難,但是對于一個PHP程序員來說并不困難。 - 面向對象編程 PHP提供了類和對象?;趙eb的編程工作非常需要面向對象編程能力。PHP支持構造器、提取類等。 - 可伸縮性 傳統(tǒng)上網頁的交互作用是通過CGI來實現(xiàn)的。CGI程序的伸縮性不很理想,因為它為每一個正在運行的CGI程序開一個獨立進程。解決方法就是將經常用來編寫CGI程序的語言的解釋器編譯進你的web服務器(比如mod_perl,JSP)。PHP就可以以這種方式安裝,雖然很少有人愿意這樣以CGI方式安裝它。內嵌的PHP可以具有更高的可伸縮性。 - 更多特點 PHP的開發(fā)者們?yōu)榱烁m合web編程,開發(fā)了許多外圍的流行基庫,這些庫包含了更易用的層。你可以利用PHP連接包括Oracle,MS-Access,Mysql在內的大部分數據庫。你可以在蒼蠅上畫圖,編寫程序下載或者顯示e-mail。你甚至可以完成網絡相關的功能。最好的是,你可以選擇你的PHP安裝版本需要哪些功能。引用Nissan的Xterra的話來說就是PHP可以做到你想讓它做到的一切而且無所不能!
2. 競爭對手:ASP,mod_perl,JSP
用于實現(xiàn)交互式動態(tài)網頁的技術有好多,其中CGI又稱通用網關接口(Common Gateway Interface),是外部程序和WEB服務器之間的標準編程接口,但是CGI程序帶來的缺點實在太多;而Perl很好地解決了CGI中的問題,被用來驅動復雜的WEB技術;微軟的ASP(Active Server Pages)的出現(xiàn),以它容易上手、輕松編寫程序和微軟件強有力的支持后盾使得ASP一下子成了許專業(yè)編程人員和非專業(yè)編程人員的寵兒;Middle ware和Allaire的Cold Fusion是另一種解決方法,并且Cold Fusion有一個已證實可靠的搜索引擎組件;JSP 是Sun公司推出的新一代站點開發(fā)語言等等。有這么多的動態(tài)WEB技術,也許你會問:“為什么我要選擇PHP呢?”
在回答這一問題之前,讓我們先來看看ASP,PHP和JSP之間的優(yōu)缺點。
2.1 關于ASP
ASP 由于其簡單功能實用等方面受到廣大朋友的喜歡,再加上MS的強有力支持,可以說是時下作站點最為流行的語言之一,他借助MS的Com+ 技術,幾乎可以實現(xiàn)在C/S 能夠實現(xiàn)的所有功能,可以說確實具有相當的競爭力。ASP的代碼實現(xiàn)也很簡單,MS 提供的InterDev 在RAD 的基礎上,使ASP 的開發(fā)一夜之間火遍了大江南北。但是他的缺點是,由于MS 長久以來的霸道作風,他只能運行在MS的平臺上,因此在關鍵性的應用上使人難以輕易接受。
2.2 關于JSP
JSP 是Sun公司推出的新一代站點開發(fā)語言,他完全解決了目前ASP,PHP的一個通病--腳本級執(zhí)行(現(xiàn)在PHP4 也已經在Zend 的支持下,實現(xiàn)編譯運行).Sun 公司借助自己在Java 上的不凡造詣,將Java 從Java 應用程序 和 Java Applet 之外,又有新的碩果,就是Jsp--Java Server Page。Jsp 可以在Serverlet和JavaBean的支持下,完成功能強大的站點程序。
據我所知,JSP基于Java,因此Java程序員可以輕松開始編碼。ASP只是一個一般的引擎,具有支持多種語言的能力,不過默認的并且是最常用的還是VBScript。mod_perl與Perl一樣強大,只是更快一些。
對于ASP、JSP、PHP等,到底哪種語言更好?不同的人有不同的看法。不過有一點我們必須要明確的:對于ASP、JSP等,你是否清楚購買它們會有多昂貴以及它們需要多么昂貴和強大的硬件。如果你有什么中立的觀點(比如說沒有被SUN和Microsoft的百萬美金所影響),請順便通知我。
2.3 關于PHP
PHP 是秉承Linux 的GNU 風格,借助與源碼公開,使他迅速成為世界上目前應用最為廣泛的站點制作語言之一。借助與C++的形式,引用類的概念,使得代碼的可重復性應用便的異常簡單。加上他和Linux,Apache 和MySql 的緊密配合,關鍵性的應用也沒有問題(有名的Sina就 是采用Php)。同時,PHP第四代Zend(PHP4)的核心引擎正式版也已經發(fā)布了,整個程序的核心得到了大幅度的改進,讓PHP程序的執(zhí)行速度變得更快。PHP在最佳化之后的效率,已比傳統(tǒng)CGI或者ASP等程序有了更好的表現(xiàn)。而且正因為PHP是免費的,因此任何人都可以訪問PHP WEB站點,下載完整的源代碼。更重要的是:用PHP編寫的代碼執(zhí)行起來會更快,能實現(xiàn)同樣功能的PHP代碼,不用改變就可以在不同的WEB服務器上、不同的操作系統(tǒng)下運行。就憑這一點,你就已經有足夠的理由選擇PHP。
PHP站點的在線教程已經很棒了。而本文的該部分將讓你對PHP熟悉一點。我不可能做到沒有任何遺漏,我的目的只在于能讓你迅速開始你的PHP編程。
3.1 首要條件
你首先必須要有一個正在工作著的支持PHP的web服務器。我假定在你的服務器上所有PHP文件的擴展名為.php3。
3.2 PHP的安裝
有關PHP的安裝配置,可以查閱網頁陶吧上的“PHP安裝全攻略”專題文章。
3.3 語法
從語法上看,PHP語言近似于C語言??梢哉f,PHP是借鑒C語言的語法特征,由C語言改進而來的。我們可以混合編寫PHP代碼和HTML代碼,不僅可以將PHP腳本嵌入到 HTML 文件中,我們甚至還可以把 HTML 標簽也嵌入在 PHP 腳本里。以下是你可以采用的幾種方法。你可以選用其中一種你最適合的并且就這樣堅持這種方法!
從HTML中分離
以下是可以使用的方法:
注:當你使用“”將PHP代碼嵌入于HTML文件中時,可能會同XML發(fā)生沖突,同時,能否使用這一縮減形式還取決于PHP本身的設置。為了可適應XML和其它編輯器,你可以在開始的問號后面加上“php”使PHP代碼適應于XML分析器。如:“”。也可以像寫其它腳本語言那樣使用腳本標記,如:“ ”。
語句
與Perl和C一樣,在PHP中用“;”來分隔語句。那些從HTML中分離出來的標志也表示語句的結束。
注釋
PHP支持C,C++和Unix風格的注釋方式:
/* C,C++風格多行注釋 */
// C++風格單行注釋
# Unix風格單行注釋
echo 和 print
PHP 和 HTML 最簡單的交互是通過 print 和 echo 語句來實現(xiàn)的,在實際使用中, print 和 echo 兩者的功能幾乎是完全一樣??梢赃@么說,凡是有一個可以使用的地方,另一個也可以使用。但是,兩者之間也還是一個非常重要的區(qū)別:在 echo 函數中,可以同時輸出多個字符串,而在 print 函數中則只可以同時輸出一個字符串。同時,echo函數并不需要圓括號,所以echo函數更像是語句而不像是函數。讓我們來看看下面這一實例:
$a="hello";
$b="world";
echo "a","b";
print "a","b";
?>
用瀏覽器觀看這段代碼的運行情況后,你會看到這樣的運行結果:
aba
Parse error: parse error in d:adminmyphphometest.php3 on line 5
這說明這段代碼并不能完全通過解釋,發(fā)生錯誤的地方就在代碼的第五行:“print "a","b";”。
3.4一個簡單的實例
通過我們已經學過的知識,你可以編寫一個最簡單的程序輸出一個也許是程序世界中最有名的詞語
First PHP page
// Single line C++ style comment
/*
printing the message
*/
echo "Hello World!";
# Unix style single line comment
?>
4.1 數據類型
PHP支持整數、浮點數、字符串、數組和對象。變量類型通常不由程序員決定而由PHP運行過程決定(真是好的解脫?。?。當然,如果你喜歡的話,你也可以使用cast或者函數settype()將某種類型的變量轉換成指定的類型。
數值
數值類型可以是整數或是浮點數。你可以用以下的語句來為一個數值賦值:
$a = 1234; # 十進制數
$a = -123; # 負數
$a = 0123; # 八進制數 (等于十進制數的83)
$a = 0x12; # 十六進制數(等于十進制數的18)
$a = 1.234; # 浮點數"雙精度數"
$a = 1.2e3; # 雙精度數的指數形式
字符串
字符串可以由單引號或雙引號引出的字段定義。注意不同的是被單引號引出的字符串是以字面定義的,而雙引號引出的字符串可以被擴展。而且,在雙引號字符串中可以使用反斜杠()在字符串中加入轉義序列和轉換字符。舉例如下:
$first = ‘Hello‘;
$second = "World";
$full1 = "$first $second"; # 產生 Hello World
$full2 = ‘$first $second‘;# 產生 $first $second
$full3="01DC studio,." 2000 copyright." " ;
請注意最后一行,如果需要在字符串中使用雙引號,可以使用反斜杠字符,象該行語句所示。這里的的反斜杠用來使雙引號的功能改變。
可以將字符和數字利用運算符號連接起來。字符被轉化成數字,利用其最初位置。在PHP手冊中有詳細的例子。
數組與哈希表
數組與哈希表以同樣的方法被支持。怎樣運用取決于你怎樣定義它們。你可以用list()或者array()來定義它們,也可以直接為數組賦值。數組的索引從0開始。雖然我在這里沒有說明,但是你一樣可以輕易的使用多維數組。
// 一個包含兩個元素的數組
$a[0] = "first";
$a[1] = "second";
$a[] = "third"; // 添加數組元素的簡單方法
// 現(xiàn)在$a[2]被賦值為"third"
echo count($a); // 打印出3,因為該數組有3個元素
// 用一個語句定義一個數組并賦值
$myphonebook = array (
"sbabu" => "5348",
"keith" => "4829",
"carole" => "4533"
);
// 噢,忘了教長吧,讓我們添加一個元素
$myphonebook["dean"] = "5397";
// 你定義的carale元素錯了,讓我們更正它
$myphonebook["carole"] => "4522"
// 我還沒有告訴你怎樣使用數組的相似支持方式嗎?讓我們看一看
echo "$myphonebook[0]"; // sbabu
echo "$myphonebook[1]"; // 5348
其他一些對數組或哈希表有用的函數包括sort(),next(),prev()和each()。
對象
使用new語句產生一個對象:
class foo
{
function do_foo ()
{
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();
改變變量類型
在PHP手冊中提到:"PHP不支持(也不需要)直接在聲明變量時定義變量類型;變量類型將根據其被應用的情況決定。如果你為變量var賦值為一個字符串,那么它變成了一個字符串。如果你又為它賦了整數值,那么它就變成了整數。"
$foo = "0"; // $foo是字符串(ASCII 48)
$foo++; // $foo是字符串"1" (ASCII 49)
$foo += 1; // $foo現(xiàn)在是整數(2)
$foo = $foo + 1.3; // $foo是一個雙精度數(3.3)
$foo = 5 + "10 Little Piggies"; // $foo是一個整數(15)
$foo = 5 + "10 Small Pigs"; // $foo是一個整數(15)
如果想要強行轉換變量類型,可以使用與C語言相同的函數settype()。
4.2 變量與常量
可能你已經注意到,變量都有一個美元符號($)的前綴。所有變量都是局部變量,為了使得定義的函數中可以使用外部變量,使用global語句。而你要將該變量的作用范圍限制在該函數之內,使用static語句。
$g_var = 1 ; // 全局范圍
function test()
{
global $g_var; // 這樣就可以聲明全局變量了
}
更先進一些的是變量的變量表示。請參考PHP手冊。這在有時會顯得很有用。
PHP內置了許多已定義的變量。你也可以用define函數定義你自己的常量,比如define("CONSTANT","value")。
4.3 運算符
PHP具有C,C++和Java中的通常見到的運算符。這些運算符的優(yōu)先權也是一致的。賦值同樣使用"="。
算術和字符
以下只有一種運算符是有關字符的:
$a + $b :加
$a - $b :減
$a * $b :乘
$a / $b :除
$a % $b :取模(余數)
$a . $b :字符串連接
邏輯和比較
邏輯運算符有:
$a || $b :或
$a or $b :或
$a && $b :與
$a and $b :與
$a xor $b :異或 (當$a或$b為true時為true,兩者一樣時為false)
! $a :非
比較運算符有:
$a == $b :相等
$a != $b :不等
$a < $b :小于
$a <= $b :小于等于
$a > $b :大于
$a >= $b :大于等于
與C一樣PHP也有三重運算符(?:)。位操作符在PHP同樣存在。
優(yōu)先權
就和C以及Java一樣!
4.4 控制流程結構
PHP有著與C一樣的流程控制。我將在下面大概介紹。
if, else, elseif, if(): endif
if (表達式一)
{
. . .
}
elseif (表達式二)
{
. . .
}
else
{
. . .
}
// 或者像Python一樣
if (表達式一) :
. . .
. . .
elseif (表達式二) :
. . .
else :
. . .
endif ;
Loops. while, do..while, for
while (表達式)
{
. . .
}
do
{
. . .
}
while (表達式);
for (表達式一; 表達式二; 表達式三)
{
. . .
}
//或者像Python一樣
while (expr) :
. . .
endwhile ;
switch
switch是對多重if-elseif-else結構的最好的替換:
switch ($i)
{
case 0:
print "i equals 0";
case 1:
print "i equals 1";
case 2:
print "i equals 2";
}
break, continue
break中斷當前的循環(huán)控制結構。
continue被用來跳出剩下的當前循環(huán)并繼續(xù)執(zhí)行下一次循環(huán)。
require, include
就像C中的#include預處理一樣。你在require中指定的那個文件將替代其在主文件中的位置。在有條件的引用文件時,可以使用include()。這樣就使得你可以將復雜的PHP文件分割成多個文件并且在不同需要時分別引用它們。
4.5 函數
你可以像以下的例子一樣定義自己的函數。函數的返回值可以是任何數據類型:
function foo (變量名一, 變量名二, . . . , 變量名n)
{
echo "Example function.n";
return $retval;
}
所有PHP代碼都可以出現(xiàn)在函數定義中,甚至包括對其他函數和類的定義。函數必須在引用之前定義。
4.6 類
利用類模型建立類??梢詤⒖糚HP手冊中對類的詳細解釋。
class Employee
{
var $empno; // 員工人數
var $empnm; // 員工姓名
function add_employee($in_num, $in_name)
{
$this->empno = $in_num;
$this->empnm = $in_name;
}
function show()
{
echo "$this->empno, $this->empnm";
return;
}
function changenm($in_name)
{
$this->empnm = $in_name;
}
}
$sbabu = new Employee;
$sbabu->add_employee(10,"sbabu");
$sbabu->changenm("babu");
$sbabu->show(); 建設一個簡單交互的網站(一)
PHP的許多特點與其他軟件或者工具有關。利用迄今為止我們所學到的PHP知識,我們可以試著建立一個簡單交互的網站。利用這一過程我們又可以學到不少東西。好吧,我們現(xiàn)在開始專注于一個典型個人網站的建設。
5.1 計劃一個站點
一般一個個人站點包括一個歡迎頁面、一個留言本頁面、一個書簽鏈接頁面、一個計數器、聯(lián)系信息,甚至還有照片集和一些音樂文件等等。
5.2 用include和require進行模塊化
我們看一些用PHP構架的網站,幾乎網站每一個頁面的PHP文件里都會有include和require嵌入其間。這是因為使用include和require不但可增強代碼的可讀性,而且可將站點分成模塊來管理。一般來說,對于一個網站上的每個頁面肯定會有重復的內容。例如:頁面頭部的導航條、廣告圖標、或邊部導航等??赡苓€在每頁的頁腳即頁面的底部有著作權或一些基于文本的導航條。如果我們要修改一個包含成千上百個頁面的大網站上的導航條或是徽標之類的內容,用我們以往的方法,我們只能遂一對每一頁面進行更改。不用我說,大家也能想像到這是一件多么艱巨而痛苦的差事。那么,我們到底有沒有更好的解決方法呢?答案是肯定的。我們可以將重復的內容都放到一個文件中,然后在每一個需要這些內容的頁面上用PHP的include和require函數動態(tài)地調用該文件。這樣,以后如果我們想對所有頁面上的這些復用內容做修改時,就只需要更改包含了這些重復內容的文件。
為了便于大家理解,讓我們先來看看include和require的一個簡單應用:
HTML的頁面開始,也許你會在站點的每頁的頭部包含它(head.htm)。
<HTML>
<HEAD>
<TITLE> 我的個人主頁 </TITLE>
</HEAD>
<BODY>
頁面內容(content.htm)。
<H1>
歡迎來我的寒舍,雖然這里現(xiàn)在暫時還沒有什么。
</H1>
HTML的頁面的結束(trail.htm)
</BODY>
</HTML>
用include和require函數把HTML從PHP中分離出來,將HTML和PHP分成模塊:
<?
/*
調用HTML頁面的頭部
*/
require("head.htm");
/*
調用HTML頁面的內容
*/
require("centent.htm");
/*
調用HTML頁面的尾部
*/
require("trail.htm");
?>
5.3 讓我們從一個標題頁面、一個聯(lián)系信息頁面和一個簡歷頁面開始。我們同樣需要標準的、通用的頁面頭部和底部。
標題頁面--front.htm
這里我們有一個非常簡單的html文件:
<HTML>
<HEAD>
<TITLE>
我的個人主頁--歡迎
</TITLE>
</HEAD>
<BODY>
<H1>
我的個人主頁
</H1>
<H2>
歡迎
</H2>
<HR>
<P>
歡迎來我的寒舍,雖然這里現(xiàn)在暫時還沒有什么。
</P>
<P>
不過我希望馬上就可以多起來。
</P>
<HR>
<P ALIGN="CENTER">
<SMALL> <I>
Copyright ? 我自己,1999
</I> </SMALL>
</P>
</BODY>
</HTML>
聯(lián)系信息頁面--count.htm
同樣我們又有了一個簡單頁面:
<HTML>
<HEAD>
<TITLE>
我的個人主頁--聯(lián)系信息
</TITLE>
</HEAD>
<BODY>
<H1>
我的個人主頁
</H1>
<H2>
聯(lián)系信息
</H2>
<HR>
<P>
你可以通過1-800-PHP-INFO聯(lián)系我
</P>
<HR>
<P ALIGN="CENTER">
<SMALL> <I>
Copyright ? 我自己,1999
</I> </SMALL>
</P>
</BODY>
</HTML>
5.4 從HTML到PHP
從上面你可以看出,每個頁面有相同的頭部和底部。像上面那樣每個頁面都寫入相同的信息在工作量少的時候還可以,但是想象一下當有100多頁面且你需要全部更改其頭部或底部時你要花費多大精力?一頁一頁的手工更改是一件多么冗長無趣的事情?。∷晕覀儜摓檫@些頁面編寫PHP的頭部和底部文件,之后我們只要在每個HTML頁面中引用它們就行了。在include和require函數中都包含一個PHP代碼的文件,不管該文件的擴展名是什么,它都被當作是PHP文件。我們將把這些include文件放在一個叫include的子目錄下,并取成以.inc為后綴的文件。下面我們就把這些站點的通用內容寫進文件中。
全站通用變量設定:common.inc
<?
// 全站通用變量
$MyEmail = "phptalk@tnc.org";
$MyEmailLink = "<a href="mailto:$MyEmail">$MyEmail</a>";
$MyName = "PHP Talk";
$MySiteName = $MyName."‘s Home Page";
?>
通用頁面頭部:header.inc
<?
// 定義通用頁面頭部
?>
<HTML>
<HEAD>
<TITLE>
<? echo "$MySiteName - $title"; ?>
</TITLE>
</HEAD>
<BODY>
<H1>
<? echo "$MySiteName"; ?>
</H1>
<H2>
<? echo "$title"; ?>
</H2>
<HR>
通用頁面底部:footer.inc
<?
// 通用頁面底部
?>
<HR>
<P ALIGN="CENTER">
<SMALL> <I>
Copyright ? by
<? echo "$MyName ($MyEmailLink)"; ?>
, 1999
</I> </SMALL>
</P>
</BODY>
</HTML>
新的頁面front.php3:
<?
include("include/common.inc");
$title = "Welcome";
include("include/header.inc");
?>
<P>
歡迎來我的寒舍,雖然這里現(xiàn)在暫時還沒有什么。
</P>
<P>
不過我希望馬上就可以多起來。
</P>
<?
include("include/footer.inc");
?>
新的count.php3:
<?
include("include/common.inc");
$title = "Contact Information";
include("include/header.inc");
?>
<P>
你可以通過1-800-PHP-INFO聯(lián)系我
</P>
<?
include("include/footer.inc");
?>
現(xiàn)在你可以體會一下這樣安排的好處了。如果你想改動頁面的頭部或者底部,你只需要改動相應的文件就可以了。如果你要修改你的e-mail地址甚至你的名字,只要修改common.inc文件就行了。另外值得注意的是你可以把具有任何文件名或者文件擴展名的文件包含進你的文件中,你甚至可以包含其他站點上的文件。