前 言
今天的Web用戶期待更吸引人的頁面——它們會頻繁更新,並且提供個性化的體驗。在他們看來,Web站點更像是社區,他們將一遍又一遍地回訪。同時,Web站點管理員希望站點更容易更新和維護,他們理解到這是能夠不斷滿足訪問者期望的唯一方式。由於如此種種原因,PHP和MySQL變成了創建動態的、數據庫驅動的Web站點的事實標准。
本書可以說是凝聚了我多年Web開發經驗和多部Web開發技術圖書寫作經驗的顛峰之作。本書重點在於以最高效的方式介紹最重要的知識。它將介紹如何開始開發動態Web站點,並給出了大量示例代碼來幫助讀者起步。你只需要滿懷熱忱地來學習就行了。
好吧,我們這就開始……
什麼是動態Web站點
動態Web站點非常靈活、強大,將其描述為應用程序(application)而不僅僅是站點會更准確。動態Web站點的特征包括:
q 能夠對不同的參數做出響應(例如,一天中的某個時間,或者訪問者的Web浏覽器版本);
q 具有“記憶”,允許用戶執行注冊、登錄、電子商務以及類似的過程;
q 通常包含HTML表單,使得人們可以執行查找、提供反饋等;
q 通常具有允許管理員管理站點內容的界面;
q 與靜態創建的站點相比,更易於維護、升級和構建。
有許多技術可用於創建動態Web站點。最常用的技術是ASP.NET、JSP(Java ServerPages)、ColdFusion、Ruby on Rails和PHP。動態Web站點不一定依賴數據庫,但是,越來越多的動態Web站點正在這樣做,何況還有MySQL這樣幾乎可以免費使用的數據庫。
什麼是PHP
PHP最初代表“個人主頁”(Personal Home Page),由Rasmus Lerdorf於1994年創建,用於跟蹤訪問者對其在線履歷的訪問。隨著實用性和功能的不斷提高(並且也開始用於更專業的環境中),它變成了“PHP:Hypertext Preprocessor(PHP超文本預處理器)”。
根據www.php.net(參見圖0-1)上PHP官方站點的說法,PHP是“一種廣泛使用的通用腳本語言,特別適用於Web開發,並且可以嵌入在HTML中”。這是一個復雜但具有描述性的定義,其含義將在後面解釋。
稱PHP“可以嵌入在HTML中”意味著,在標准的HTML頁面中根據需要插入一些PHP代碼,就可以得到動態效果。因此PHP很適合網頁設計和制作者使用。
此外,與編程語言相比,PHP是一種腳本語言:設計PHP的目的是用於編寫Web腳本,而不是編寫獨立的應用程序(當然,現在多費點勁也可以用PHP創建應用程序)。PHP腳本只在某個事件(例如,用戶提交一個表單或者輸入一個URL地址)發生之後才運行。
圖0-1 PHP主頁
我應該在這個定義中添加一些內容,指出PHP是一種服務器端、跨平台的技術,這兩個描述都是重要的。服務器端是指PHP做的所有事情都發生在服務器上。這需要Web服務器,像Apache或微軟公司的IIS(Internet Information Services,Internet信息服務),並且必須通過URL(以http://開始的網址)訪問所有PHP腳本。跨平台的意思是,PHP可以運行在大多數操作系統上,包括Windows、UNIX(及其許多變體)和Macintosh。更重要的是,對於在一台服務器上編寫的PHP腳本,通常不用修改或者只做很少的修改即可工作在另一台服務器上。
在編寫本書時,PHP已發展到了版本5.2.4,但其版本4.4.7仍然在維護。不過,對版本4的支持將逐步取消,建議所有人都至少使用PHP 5。本書的這個版本實際上重點關注的是PHP 6,它預計將在2008年發布。如果你仍在使用版本4,確實應該升級到更高版本。如果你不計劃這樣做,那麼應該使用本書的第2版[1]。如果你使用的是PHP 5,那麼本書的第2版或這個版本都適合。在這一版中,我將清楚介紹PHP 6特有的特性和功能。
PHP 6中的新增功能
由於PHP 4已經有計劃地停止使用,許多用戶和Web托管公司很可能從PHP 4快速轉換到PHP 5再到PHP 6。在討論PHP 6中的新增功能之前,我首先將討論PHP 4與PHP 5之間更大的區別。
PHP 6中的最大變化是支持Unicode,這意味著PHP現在可以處理世界上每一種語言中的字符了。這是一項巨大的成就,同時也是花了一些時間才能發布PHP 6的原因之一。在第14章中介紹了這在編程方面的意義。在第15章中也用到了該章中的信息。除了Unicode支持之外,PHP 6還清理了PHP 5中遺留的許多垃圾,其實在PHP 5中也不推薦使用它們。PHP 6中刪除的兩個最重大的特性是“Magic Quotes(魔術引號)”和“register globals(注冊全局變量)”。
為什麼使用PHP
簡單地講,在開發動態Web站點時,與其他可選技術相比,PHP更好、更快並且更易於學習。PHP有優秀的性能、與幾乎所有數據庫的緊密集成、穩定性、可移植性,以及由於其可擴展性而得到的幾乎無限的特性集。所有這些都是免費的(PHP是開源技術),並且非常易於學習。在我接觸的語言中,PHP是最佳地結合了易用性和高級能力的語言之一,初級程序員使用它很容易上手,更高級的程序員可以用它做他們需要的一切事情。
最後,一個事實可以證明這一點:PHP自從推出以來,其用戶數量呈指數級增長,並且超過ASP成為今天使用的最流行的腳本語言。它是Apache(最常用的Web服務器)必需的模塊。到本書出版時,PHP運行在差不多2 500萬個域中。
當然,由於我是PHP圖書(實際上市面上有很多本這樣的圖書)的作者,你可能想當然地認為我的觀點有失公平。盡管我使用JSP、RoR(Ruby on Rails)和ASP.NET不像PHP那樣廣泛,但是也使用它們開發站點。它們都有自己的優缺點,但是我總是會返回到PHP這種技術上來。你可能聽說它的性能和擴展性不如其他技術,但是Yahoo!每天使用PHP處理超過35億次的點擊(是的,幾十億次)。你也可能想知道PHP的安全性如何。但是安全性不在語言本身,而在於使用語言的方式。當然,本書將全面討論所有重要的安全性問題的最新內容。
...