PHP開發手冊(典藏版)

《PHP開發手冊(典藏版)》是2011年出版的圖書,作者是孫鵬程等。

宣傳語

百科全書式的PHP編程寶典,值得每個程式設計師珍藏

囊括PHP從基礎知識到高級開發技術的全景式解讀

內 容 提 要

本書全面、系統地介紹了PHP實戰開發方方面面的技術。內容由淺入深,從易到難,實例豐富,從PHP的基本知識到高級技術與框架操作,再到項目開發與擴展套用,幾乎涉及PHP開發與套用的所有重要知識。書中的全部實例原始碼都收錄在本書的配書光碟中,供讀者實戰演練。

本書共分5篇。第1篇介紹PHP的檔案系統、程式調試、異常處理、表單與JavaScript等基礎套用;第2篇介紹PHP與MySQL、PostgreSQL、SQL Server以及Oracle等多種不同資料庫的互動操作方法;第3篇介紹PHP的擴展庫PEAR、ADOdb、FPDF、GD庫的操作方法,以及目前流行的ThinkPHP、Zend Framework、CakePHP、Symfony等PHP開發框架;第4篇通過對CMS系統、OA系統、流程管理系統、資源管理系統等系統的介紹,詳細講解PHP在實際開發中的套用;第5篇介紹PHP的網路客戶端、Web Service擴展套用,以及Ajax的基礎知識。

本書光碟中的電子書分三篇:第1篇介紹PHP開發環境的搭建、PHP的基本語法與操作;第2篇介紹PHP的面向對象操作及類的開發實例;第3篇介紹PHP伺服器環境的硬體知識與伺服器維護策略。

本書無論是對初學PHP應用程式的開發人員,還是對PHP應用程式開發有一定經驗的開發人員,都會有很大的幫助。對於經常使用PHP的程式設計師,本書也是一本不可多得的案頭必備參考書。

前 言

從1995年Rasmus Lerdorf發明PHP程式語言1.0版本以來,已經有15年了。在這期間,PHP以其高效、開源以及易學易懂的特點,在動態網頁開發領域經久不衰。特別是在2004年PHP 5發布以後,PHP受到了更多網站系統開發人員與編程愛好者的青睞,成為目前流行的Web應用程式開發平台之一。PHP 5的發布使PHP不再局限於個人小型網站的使用。PHP 5增強的企業特性使PHP更廣泛地套用於大型網站與系統的建設。PHP 5在開發效率、靈活性、安全性、性能方面比PHP 4又有進一步加強。除此之外,PHP 5面向對象的特點使PHP的功能有了更遠的發展。

筆者結合自己多年的PHP開發經驗和心得體會,並結合最新的技術發展寫作了本書。希望各位讀者能在本書的引領下跨入PHP開發大門,並進而成為一名開發高手。本書有“全”和“新”兩個優勢;全面地講解了PHP中的各種特性以及操作,內容幾乎涉及使用PHP開發網站的所有方面;並且對於新興的PHP框架、Web 2.0技術、Ajax技術等都進行了系統翔實的介紹。

本書特色

1.實例豐富,貫穿有大量的開發實例和技巧,學習效果好。

本書的所有知識點都附帶了可以運行的PHP代碼,而且包含了詳細的注釋。在代碼的基礎上學習,可以為今後的套用打下堅實的基礎。

2.內容全面系統。

本書對PHP的各方面知識作了一個全面的介紹,包括如何配置安裝環境、基本語法以及與資料庫的連線操作等。

3.講解循序漸進,適合各個層次的讀者閱讀。

本書對PHP與其他網頁元素諸如表單、檔案、圖像作了一個很詳細的介紹。同時,對PHP與LDAP的操作、PEAR、Web 2.0以及一些處於發展中或剛剛出現的PHP Framework作了一個簡要介紹。

4.詳解典型項目案例開發,迅速提升開發水平。

本書使用了幾個完整的實例,綜合介紹了PHP在實際套用中的使用方法。這些極具代表性的實例對讀者的實際套用、畢業設計等都具有指導作用。

5.配有代碼光碟,節省代碼輸入時間。

配書光碟提供了書中的所有代碼。讀者可以在學習中直接對書中的例子進行運行,有效地節省代碼輸入的時間。

本書內容及體系結構

第1篇 PHP基礎套用(第1~7章)

本篇主要內容包括:檔案系統與文本操作、字元與數組的處理、PHP的調試與異常處理、PHP表單以及JavaScript等。通過本篇的學習,讀者可以掌握PHP的常用技巧、PHP程式的調試方法,以及與表單等基本Web元素的套用方法。

第2篇 PHP與資料庫(第8~17章)

本篇主要內容包括:關係型資料庫的基礎知識,MySQL、PostgreSQL、SQL Server與Oracle資料庫與PHP的互動操作方法。通過本篇的學習,讀者可以掌握PHP與不同資料庫的基本操作方法,並對觸發器和存儲過程的編寫方法有一定了解。

第3篇 PHP的高級套用(第18~32章)

本篇主要內容包括:PEAR、ADOdb、FPDF、Smarty等多種常見類庫的套用,PHP與圖像、郵件系統、LDAP系統等常見對象的操作,以及目前流行的ThinkPHP、Zend Framework、CakePHP、Symfony等框架的實施方法。通過本篇的學習,讀者可以掌握PHP中的常用類庫與對象的操作,並對目前流行的各種PHP編程框架有一定了解。

第4篇 PHP與實際項目(第33~39章)

本篇主要內容包括:CMS系統、OA系統、流程管理系統、資源管理系統等項目案例開發實例,並對搜尋引擎技術、入口網站的套用技巧、多國語言處理策略方面進行了重點介紹。通過本篇的學習,讀者可以全面套用前面章節所學的開發技術進行軟體項目開發,達到可以獨立開發項目的水平。

第5篇 PHP的擴展套用(第40~44章)

本篇主要內容包括:PHP的網路客戶端、Web Service、Ajax以及使用Visual C++進行PHP擴展的開發等。通過本篇的學習,讀者可以看到PHP不僅可以實現普通的Web套用系統開發,還可以實現包括命令行程式、網路服務程式等其他套用的開發。

光碟電子書內容體系結構

第1篇 PHP的基礎知識(第1~4章)

本篇主要內容包括:PHP開發環境搭建、PHP的基礎語法、數據類型以及函式處理與數據引用等。通過本篇的學習,讀者可以掌握PHP開發環境的搭建方法以及PHP的編程基礎知識,為後續的應用程式開發奠定堅實的基礎。

第2篇 PHP面向對象(第5~8章)

本篇主要內容包括:PHP面向對象套用的基礎知識、類的基本操作、高級操作以及考試評分模組的案例開發。通過本篇的學習,讀者可以掌握PHP中有關面向對象的核心技術和編程思想。

第3篇 支持Web的系統和網路維護(第9~13章)

本篇主要內容包括:硬體故障的解決、防火牆套用、數據的安全性、日誌分析方法等。通過本篇的學習,讀者可以掌握一些有關伺服器的基礎知識。這些知識對於項目的實際部署非常有用,可以指導讀者在系統運營期間需要注意的問題。

本書讀者對象

PHP初學者。

PHP網頁專業設計製作人員。

PHP網站維護人員。

PHP網頁製作愛好者。

大學/大專/中專在校學生。

社會培訓班學員。

需要一本案頭必備手冊的程式設計師。

本書作者

本書主要由孫鵬程編著,其他參與編寫的人有昊燃、黃葉新、李增輝、劉聰、龍志標、孟劼、米愛中、秦俠、冉劍、任瀟、譚勵、王大亮、伍雲輝、於重重。在此表示感謝!

編者

目 錄

第1篇 PHP基礎套用

第1章 檔案系統與文本數據操作 2

在程式設計中,檔案是一個很重要的對象,Web編程也不例外。檔案的操作在很多Web系統中一直都是被反覆用到的。在實際套用中經常會遇到對檔案和目錄的創建、修改、刪除等操作。本章將主要介紹如何使用PHP對檔案系統以及文本數據進行操作。

1.1 PHP中目錄操作詳解 2

1.1.1 打開目錄 2

1.1.2 關閉目錄 3

1.1.3 讀取目錄中的檔案 3

1.1.4 創建目錄 3

1.1.5 刪除目錄 4

1.2 PHP中檔案操作詳解 4

1.2.1 打開檔案 4

1.2.2 關閉檔案 5

1.2.3 讀取檔案 5

1.2.4 寫入檔案 6

1.2.5 刪除檔案 6

1.2.6 複製檔案 7

1.3 本地檔案的操作實例——小型留言本 7

1.3.1 留言發表模組 7

1.3.2 瀏覽模組 9

1.4 遠程檔案的操作實例 10

1.5 檔案的上傳與下載 10

1.5.1 檔案的上傳 10

1.5.2 檔案的下載 11

1.6 小結 12

第2章 字元的處理與正則表達式 13

在PHP中,對於字元的處理是一個很重要的部分,很多套用中都包含有字元處理的功能,而正則表達式則是有效地處理一些複雜字元操作的便利方式。本章將重點介紹PHP中的一些常見字元處理操作及正則表達式的套用。

2.1 字元類型的特殊性 13

2.2 字元的顯示與格式化 14

2.2.1 字元的顯示 14

2.2.2 字元的格式化 14

2.3 常見的操作 15

2.3.1 字元串重複操作——str_repeat 15

2.3.2 字元串替換操作——str_replace和str_ireplace 16

2.3.3 字元串分解操作——str_split 17

2.3.4 字元串單詞數的計算函式——str_word_count 18

2.3.5 字元串查找操作——strstr 19

2.3.6 獲得字元串長度——strlen 19

2.3.7 獲得字元串子串——substr 19

2.4 正則表達式簡介 20

2.5 正則表達式與字元操作綜合套用 20

2.5.1 獲得與模式匹配的數組單元——preg_grep 21

2.5.2 進行全局正則表達式匹配——preg_match_all 21

2.5.3 進行正則表達式匹配——preg_match 23

2.5.4 轉義正則表達式字元——preg_quote 24

2.5.5 執行正則表達式的搜尋和替換的函式——preg_replace 25

2.5.6 通過回調函式執行正則表達式的搜尋和替換——preg_replace_callback 25

2.5.7 用正則表達式進行字元串分割——preg_split 26

2.6 字元操作的注意事項 27

2.7 小結 29

第3章 數組操作與數據結構算法 30

數組是一個由若干同類型變數組成的集合,引用這些變數時可用同一名字。數組中的每一個變數都叫做數組的一個元素。在開發中,數組有廣泛的用途。本章將對數組及一些數組的使用技巧作詳細講解。

3.1 一維數組與多維數組 30

3.1.1 一維數組簡介 30

3.1.2 多維數組簡介 30

3.2 常用的數組操作 31

3.2.1 數組的創建與調用 31

3.2.2 數組的更新 32

3.2.3 數組元素的遍歷 33

3.3 數組索引與鍵值的操作技巧 34

3.4 數組的排序 36

3.4.1 遞增排序——sort 36

3.4.2 遞減排序——rsort 36

3.4.3 數組排序——array_multisort 37

3.5 幾種數組的套用實例 38

3.5.1 順序查找 38

3.5.2 二分法查找 39

3.5.3 使用array_search函式進行查找 39

3.5.4 線性表的入棧與出棧 40

3.5.5 數組的合併 42

3.5.6 數組的拆分 43

3.5.7 隨機排序 44

3.6 小結 45

第4章 PHP程式調試 46

在PHP的編寫過程中,錯誤是不可避免的,如何有效地調試並修復錯誤是一個程式設計師必備的一種能力。PHP提供了很好的錯誤提示,並且通過與Eclipse工具結合可以很方便地進行程式調試。本章將對PHP中的錯誤類型和程式調試方法進行詳細講解。

4.1 PHP中的錯誤類型 46

4.1.1 語法錯誤 46

4.1.2 語義錯誤 47

4.1.3 邏輯錯誤 47

4.1.4 注釋錯誤 47

4.1.5 運行時錯誤 48

4.2 PHP程式調試策略 48

4.2.1 PHP的錯誤級別 48

4.2.2 打開PHP的錯誤報告 49

4.2.3 使用print進行程式調試 50

4.3 使用PHPEclipse進行PHP程式調試 51

4.3.1 使用Eclipse編寫PHP程式的好處 51

4.3.2 PHPEclipse的安裝與啟動 51

4.3.3 PHPEclipse的使用 52

4.3.4 PHPEclipse的語法錯誤強調功能 53

4.3.5 PHPEclipse的調試界面 54

4.3.6 使用PHPEclipse調試PHP代碼的常見問題 57

4.4 錯誤的處理 58

4.4.1 錯誤的隱藏 58

4.4.2 錯誤信息的定製 59

4.4.3 逾時錯誤的處理 60

4.5 小結 61

第5章 PHP中的異常處理 62

上一章介紹了如何調試PHP中的錯誤,這些錯誤通常是在實際編程中因為程式設計師的失誤或者設計錯誤造成的。在實際運行過程中,往往還可能存在一些環境錯誤。例如,檔案無法找到或者資料庫無法打開等。這些環境錯誤當然可以通過if語句的判斷來識別。但是,PHP還提供了一種更好的異常處理方法,可以有效地解決因為環境錯誤帶來的異常。本章將主要介紹PHP中的異常處理方法。

5.1 異常處理的原理 62

5.2 PHP中的異常處理 62

5.2.1 異常類Exception 63

5.2.2 異常拋出關鍵字throw 64

5.2.3 異常捕獲語句try-catch 65

5.2.4 異常處理函式設定set_exception_handler 66

5.2.5 完整的異常信息 67

5.3 擴展的異常處理類 68

5.4 異常的傳遞與重擲 71

5.5 小結 73

第6章 PHP與表單 74

在Web應用程式的開發中,通常使用表單來實現程式與用戶輸入的互動。用戶通過在表單上輸入數據,將一些信息傳輸給網站的程式以進行相應的處理。當用戶在Web頁面中的表單內填寫好信息以後,可以通過單擊按鈕或連結來實現數據的提交。本章將主要介紹PHP中表單的套用,PHP程式通過接收用戶在表單中輸入的信息實現與用戶的互動。

6.1 HTML表單簡介 74

6.1.1 表單標籤form 74

6.1.2 輸入標籤input與文本框 75

6.1.3 按鈕 76

6.1.4 單選框與複選框 77

6.1.5 多行文本域標籤textarea 78

6.1.6 下拉框與列表框標籤select 79

6.2 表單數據的接收 79

6.2.1 GET方法 80

6.2.2 POST方法 82

6.3 常用表單數據的驗證方法 83

6.3.1 姓名驗證 83

6.3.2 日期驗證 84

6.3.3 E-mail地址驗證 84

6.3.4 密碼欄位的驗證 84

6.3.5 改進的用戶信息輸入程式 85

6.4 URL編碼解碼函式 87

6.4.1 編碼字元串——urlencode 87

6.4.2 解碼字元串——urldecode 87

6.5 小結 88

第7章 PHP與JavaScript互動 89

前面幾章介紹了如何使用PHP語言來實現一些基本操作。PHP是一種後台語言,在執行時會將PHP程式的運行結果以靜態HTML的形式返回給客戶端。也就是說,在客戶端並不能看見PHP代碼。本章將要介紹一種流行的在客戶端執行的前台程式語言——JavaScript。在實際套用中,往往會結合套用後台語言和前台語言以實現一些需要的功能。

7.1 JavaScript簡介 89

7.2 JavaScript的數據類型 89

7.3 JavaScript程式設計基礎 90

7.3.1 在HTML中嵌入JavaScript 90

7.3.2 變數 91

7.3.3 注釋 91

7.3.4 函式的定義與調用 92

7.3.5 條件語句 92

7.3.6 循環語句 95

7.3.7 對象 97

7.3.8 事件 98

7.4 PHP動態生成JavaScript代碼 99

7.4.1 多行輸出 99

7.4.2 單行輸出 99

7.4.3 PHP動態生成JavaScript實例——進度條 100

7.5 JavaScript中調用PHP程式 101

7.5.1 頁面的跳轉 101

7.5.2 隱性調用PHP程式 102

7.6 JavaScript和PHP綜合實例——表單驗證 102

7.6.1 表單設計 103

7.6.2 JavaScript代碼設計 104

7.6.3 PHP代碼設計 105

7.6.4 代碼的運行 106

7.7 小結 107

第2篇 PHP與資料庫

第8章 關係型資料庫的基礎知識 110

在第一篇中,介紹了PHP的各種基本套用。從本章開始,將介紹PHP與資料庫的結合使用。本章將主要介紹一些關係型資料庫的基礎知識。

8.1 關係型資料庫與關係型資料庫系統的介紹 110

8.2 關係型資料庫系統的結構與運行過程 111

8.2.1 關係型資料庫系統的層次結構 111

8.2.2 關係型資料庫系統的運行過程 111

8.3 常用關係型資料庫的介紹 112

8.3.1 MySQL 112

8.3.2 ORACLE 112

8.3.3 SYBASE 113

8.3.4 DB2 113

8.3.5 SQL Server 113

8.4 SQL語言簡介 113

8.5 常見資料庫設計問題 114

8.6 關係型資料庫的設計原則 114

8.6.1 第一範式(1NF) 115

8.6.2 第二範式(2NF) 115

8.6.3 第三範式(3NF) 116

8.7 資料庫設計的方法與步驟 116

8.7.1 需求分析 117

8.7.2 概念設計的E-R方法 121

8.7.3 資料庫邏輯設計方法 121

8.7.4 物理設計階段 124

8.7.5 資料庫實施階段 124

8.7.6 資料庫運行和維護階段 124

8.8 小結 124

第9章 MySQL的安裝與操作 125

上一章對資料庫管理系統的基本特點作了一些簡要介紹,並且介紹了常見的幾款關係型資料庫系統,MySQL就是其中之一。在與PHP的套用中,MySQL是最常用到的一款。本章將主要介紹如何安裝和配置MySQL資料庫伺服器,並對MySQL資料庫伺服器的一些常見操作加以介紹。

9.1 MySQL資料庫伺服器介紹 125

9.2 安裝與配置 125

9.2.1 下載MySQL 125

9.2.2 MySQL的安裝 126

9.2.3 MySQL的配置 127

9.2.4 MySQL的啟動與關閉 129

9.3 資料庫與表的創建 129

9.3.1 登錄與退出MySQL命令行管理模式 130

9.3.2 MySQL的資料庫操作 130

9.3.3 表的創建 132

9.4 數據類型的介紹 134

9.5 索引與唯一值的介紹 135

9.6 數據的操作 136

9.6.1 表的修改 136

9.6.2 表的刪除 137

9.6.3 數據的查詢 137

9.6.4 數據的插入 142

9.6.5 數據的更新 143

9.6.6 數據的刪除 144

9.7 小結 144

第10章 MySQL與PHP的套用 145

上一章介紹了如何通過MySQL命令行對MySQL資料庫進行操作。在PHP中,使用MySQL擴展來實現對MySQL資料庫的操作。其基本操作方法與在命令行上進行操作大致相同,只是操作命令都是寫到PHP腳本中來完成的。本章將介紹如何使用PHP對資料庫操作,並具體介紹PHP與MySQL的結合使用。

10.1 PHP結合資料庫套用的優勢 145

10.2 Web資料庫的工作原理 145

10.3 使用PHP操作MySQL資料庫 146

10.3.1 資料庫伺服器的連線與斷開 146

10.3.2 選擇資料庫 147

10.3.3 執行SQL語句 147

10.3.4 獲得查詢結果集中的記錄數 149

10.3.5 獲得結果集中的某一條記錄 149

10.3.6 逐行獲取結果集中的每一條記錄 150

10.3.7 結果集的分頁 152

10.3.8 用戶動態添加記錄 153

10.3.9 用戶動態更新記錄 155

10.3.10 用戶動態刪除記錄 157

10.4 使用PHP獲取MySQL資料庫的信息 158

10.4.1 獲取資料庫的信息 159

10.4.2 獲取表的信息 159

10.4.3 獲取列的數目 160

10.4.4 獲取列的名稱 160

10.4.5 獲取列的數據類型 160

10.4.6 獲取列的長度 161

10.4.7 獲取列的標誌 161

10.4.8 一個完整的查看錶中各列屬性的實例 162

10.5 常見問題與解決方案 162

10.6 小結 164

第11章 資料庫中的程式邏輯 165

上一章介紹了使用PHP對MySQL資料庫進行存取,在一般性的套用中,使用PHP直接對資料庫進行存取的方法套用非常廣泛。有時候,一些基本的資料庫套用可能會被反覆用到。如果使用PHP反覆執行這一相同操作,不僅麻煩而且會影響代碼的運行效率。

因此,在某些時候,對於一些小型並且頻繁使用的資料庫操作,可以將其交給資料庫來完成。本章將以MySQL資料庫為例,介紹如何在資料庫中實現這些程式邏輯。

11.1 資料庫程式邏輯與PHP程式邏輯的分體設計原則 165

11.2 資料庫程式邏輯與數據的關係 165

11.3 存儲過程的設計 166

11.3.1 定界符重定義 166

11.3.2 存儲過程的創建與調用 167

11.3.3 存儲過程的參數 168

11.3.4 複合語句 170

11.3.5 變數 170

11.3.6 條件語句 172

11.3.7 循環語句 173

11.3.8 游標 175

11.3.9 存儲過程的刪除 177

11.4 觸發器的設計 177

11.4.1 觸發器的創建與觸發 177

11.4.2 觸發器的刪除 178

11.5 PHP與存儲過程、觸發器 178

11.5.1 PHP調用存儲過程 178

11.5.2 PHP調用觸發器 179

11.6 小結 180

第12章 Session與Cookie 181

在資料庫套用中,難免會涉及用戶登錄功能的編寫。在一些系統中,往往也需要識別用戶的身份。因此,Session與Cookie是Web套用特別是資料庫套用中不可或缺的兩個要素。正是由於Session和Cookie的存在才使頁面間信息的安全傳遞成為可能。本章將結合資料庫的使用實例來介紹PHP中Session和Cookie的套用。

12.1 Session與Cookie簡介 181

12.2 PHP中Session的實現 181

12.2.1 標識開始使用Session 182

12.2.2 Session預定義數組 182

12.2.3 Session的檢測與註銷 182

12.2.4 PHP中Session處理的定製 183

12.3 Session套用實例——登錄驗證 187

12.3.1 資料庫設計 187

12.3.2 HTML表單的設計 187

12.3.3 驗證頁面的編寫 188

12.3.4 歡迎頁面的編寫 189

12.3.5 註銷頁面的編寫 189

12.3.6 代碼的運行 189

12.3.7 代碼的改進 190

12.4 PHP中Cookie的實現 191

12.4.1 Cookie語法格式 191

12.4.2 Cookie預定義數組 191

12.4.3 創建一個Cookie 191

12.4.4 創建一個有時間限制的Cookie 192

12.4.5 創建一個有範圍限制的Cookie 192

12.4.6 刪除Cookie 193

12.4.7 瀏覽器重定向 193

12.4.8 Cookie的常見問題 193

12.5 Cookie套用實例——登錄驗證 194

12.5.1 HTML表單的設計 194

12.5.2 驗證頁面的編寫 194

12.5.3 歡迎頁面的編寫 195

12.5.4 註銷頁面的編寫 196

12.5.5 代碼的運行 196

12.6 Cookie與Session的比較 197

12.7 小結 197

第13章 MySQL與PHP的套用實例——留言本 198

在前面幾章中,介紹了MySQL與PHP結合使用的方法,以及如何在PHP中使用Session和Cookie。本章將從一個PHP留言本的整體設計入手,詳細介紹在實際套用中如何使用PHP結合MySQL開發基於Web的應用程式。

13.1 留言本實例的系統分析 198

13.1.1 系統簡介 198

13.1.2 系統模型設計 198

13.1.3 資料庫設計 199

13.1.4 公共功能設計 200

13.2 使用MySQL與PHP創建一個留言本 200

13.2.1 查看留言功能 201

13.2.2 發表留言功能 203

13.2.3 管理員身份驗證功能 205

13.2.4 管理首頁設計 206

13.2.5 留言回復功能 208

13.2.6 留言刪除功能 209

13.2.7 留言回復刪除功能 210

13.2.8 留言審批功能 210

13.2.9 退出管理員登錄功能 211

13.3 小結 211

第14章 PostgreSQL與PHP的套用 212

前面幾章對MySQL資料庫系統與PHP的套用作了一些詳細介紹。本章將向讀者介紹另外一種常與PHP結合使用的資料庫系統PostgreSQL。通過學習本章,讀者將不僅掌握一些PostgreSQL的常用操作方法,也將對如何使用PHP操作PostgreSQL有一個初步的了解。

14.1 PostgreSQL簡介 212

14.2 PostgreSQL的安裝 212

14.2.1 PostgreSQL的下載 212

14.2.2 PostgreSQL的安裝步驟 213

14.2.3 PostgreSQL服務的啟動與停止 214

14.3 PostgreSQL的基本操作 214

14.3.1 pgAdmin III的啟動 214

14.3.2 伺服器的連線 214

14.3.3 創建一個新資料庫 215

14.3.4 創建一個表 215

14.3.5 對表中數據的操作 217

14.3.6 SQL語句的執行 217

14.4 使用PHP存取PostgreSQL資料庫 218

14.4.1 使用PHP的PostgreSQL擴展 218

14.4.2 資料庫的連線與關閉 218

14.4.3 執行SQL語句 219

14.4.4 獲得查詢結果集中的記錄數 220

14.4.5 逐行獲取結果集中的每一條記錄 221

14.4.6 數據的插入、更新和刪除 222

14.4.7 執行動態SQL語句 225

14.4.8 information_schema 227

14.5 小結 228

第15章 SQL Server與PHP的套用 229

前面兩章對PHP與MySQL和PostgreSQL資料庫伺服器的連線進行了簡單介紹。在實際套用中,由於MySQL和PostgreSQL的大型數據處理能力比較差,因而往往使用較大型的資料庫系統進行部署。SQL Server就是微軟推出的一款適合較大型系統使用的資料庫伺服器軟體。本章將對SQL Server與PHP的套用進行介紹。

15.1 SQL Server簡介 229

15.2 SQL Server的安裝 230

15.2.1 SQL Server的安裝步驟 230

15.2.2 SQL Server Management Studio 231

15.3 SQL Server的基本操作 232

15.3.1 創建一個資料庫 232

15.3.2 創建一個表 232

15.3.3 對表中數據的操作 233

15.3.4 SQL語句的執行 233

15.4 使用PHP存取SQL Server資料庫 234

15.4.1 使用PHP的mssql擴展 234

15.4.2 資料庫的連線與關閉 234

15.4.3 執行SQL語句 235

15.4.4 獲得查詢結果集中的記錄數 236

15.4.5 逐行獲取結果集中的每一條記錄 237

15.5 小結 239

第16章 Oracle與PHP的套用 240

上一章介紹了SQL Server與PHP的套用。與SQL Server類似,Oracle是甲骨文公司推出的一款大型資料庫管理系統。在實際套用中,Oracle具有更高的數據處理和管理能力。因此,Oracle受到了很多大型企業的青睞。本章將介紹Oracle的基本操作以及與PHP的套用。

16.1 Oracle簡介 240

16.2 Oracle的安裝 241

16.2.1 Oracle的安裝過程 241

16.2.2 Oracle Application Express 241

16.3 Oracle的基本操作 242

16.3.1 創建一個表 242

16.3.2 對表中數據的操作 244

16.3.3 SQL語句的執行 244

16.4 使用PHP存取Oracle資料庫 245

16.4.1 使用PHP的oci8擴展 245

16.4.2 資料庫的連線與關閉 246

16.4.3 執行SQL語句 246

16.4.4 逐行獲取結果集中的每一條記錄 247

16.5 小結 248

第17章 不同資料庫的差異 249

目前市場上流行的資料庫有很多種,雖然這些資料庫在開發時遵循同樣的一個標準,但是,每種資料庫都有一些與其他同類產品不一樣的地方。本章將主要介紹不同種資料庫間的差異,並對PHP與不同資料庫的操作上的差異作一些介紹。

17.1 SQL語言標準以及常見關係型資料庫的SQL擴展 249

17.1.1 ANSI SQL語言標準 249

17.1.2 MySQL對ANSI SQL的擴充 250

17.1.3 SQL Server的T-SQL 251

17.1.4 Oracle的PL/SQL 252

17.2 PHP資料庫套用的差異 253

17.2.1 MySQL與PHP的套用 253

17.2.2 PostgreSQL與PHP的套用 253

17.2.3 SQL Server與PHP的套用 254

17.2.4 Oracle與PHP的套用 255

17.2.5 SQLite與PHP的套用 255

17.2.6 Access與PHP的套用 256

17.2.7 ODBC與PHP的套用 256

17.3 小結 258

第3篇 PHP的高級套用

第18章 PEAR、PECL的套用 260

本書前面的章節介紹了PHP的基本使用以及與資料庫結合的實例。通過對前面的學習,讀者應該能夠使用PHP設計並實現一些常見的功能了。很多時候,並不需要自己逐行完成套用中的所有代碼,因為很多常見的功能可能早已被人開發出來了。如果能夠有效地利用這些資源,就能在實際開發中達到事半功倍的效果。本章將介紹的PEAR與PECL就是這樣的資源庫。

18.1 PEAR與PECL的介紹 260

18.2 PEAR類庫組件的安裝 260

18.3 PEAR類庫的安裝與使用 264

18.3.1 查看已安裝PEAR包 264

18.3.2 查看PEAR包的詳細信息 264

18.3.3 安裝一個PEAR包 265

18.3.4 PEAR包的升級 266

18.3.5 PEAR包的使用 266

18.4 常用的PEAR類庫實例 266

18.4.1 使用DB類庫進行資料庫查詢 267

18.4.2 使用Auth_HTTP類庫進行身份校驗 269

18.4.3 使用HTML_Template_IT類庫進行模板替換 271

18.5 PECL擴展庫的安裝與使用 272

18.6 PECL擴展庫套用實例——Zip擴展 272

18.6.1 Zip擴展的安裝 273

18.6.2 一個Zip擴展套用實例 273

18.7 小結 274

第19章 ADOdb類庫套用 275

本書第2篇介紹了PHP與MySQL等幾種常用資料庫的結合使用。PHP提供了多種資料庫訪問組件來訪問不同類型的資料庫。PHP的這種機制為PHP程式設計師製造了很多麻煩,為了訪問不同種類的資料庫,不得不記住多種多樣的資料庫存取函式。而本章將要介紹的ADOdb類庫則有效地解決了這個問題。ADOdb類庫通過對不同資料庫的差異封裝,可使PHP套用可以輕鬆地在不同的資料庫之間進行切換。

19.1 ADOdb介紹 275

19.1.1 ADOdb的優勢 275

19.1.2 ADOdb的適用場合 276

19.2 ADOdb類庫的安裝與配置 276

19.2.1 ADOdb的下載與安裝 276

19.2.2 ADOdb的第一個測試程式 276

19.3 ADOdb的常用資料庫操作 278

19.3.1 連線資料庫 278

19.3.2 數據的插入、更新和刪除 281

19.3.3 數據查詢 281

19.3.4 記錄分頁的實現 283

19.3.5 多個資料庫的連線方法 285

19.4 ADOdb的程式調試 286

19.5 小結 288

第20章 FPDF類庫套用 289

PDF文檔格式是當前流行的電子文檔與電子表格的一種標準格式。PDF提供了完善的壓縮處理,無論創建者創建的PDF文檔使用了什麼字型,使用了什麼樣的圖片或者版式設計,瀏覽者都可以通過免費的Adobe Reader對其進行閱讀。本章將要介紹的是一個可以用PHP創建PDF文檔的類庫FPDF。

20.1 FPDF簡介 289

20.2 FPDF的安裝與配置 289

20.3 FPDF創建PDF文檔 289

20.3.1 FPDF創建Hello World 290

20.3.2 在PDF中插入圖片 291

20.3.3 頁眉與頁腳 292

20.3.4 繪製表格 293

20.4 為FPDF增加中文支持 295

20.5 FPDF的實際套用 296

20.5.1 為文章系統創建PDF頁面 297

20.5.2 動態生成企業產品名錄 299

20.6 小結 300

第21章 PHP的快取與靜態化套用 301

前面已經介紹了許多PHP套用的例子,這些例子無一例外是通過訪問PHP腳本檔案來完成的。用戶每次在瀏覽器端的訪問都是對PHP腳本的執行過程,程式根據用戶的需要返回信息。對於一些大型系統,訪問量往往很大,頻繁的動態操作與資料庫操作大大加重了伺服器的負擔。

在這種情況下,通常使用快取技術或者靜態化操作。也就是將PHP腳本的頁面結果放到快取中,或者放到靜態HTML檔案中。這樣,訪問者在訪問頁面時,不必重新執行動態PHP代碼即可獲得結果,可大大緩解伺服器的負擔。本章將介紹快取機制與靜態化的原理,以及使用PHP實現靜態化的方法。

21.1 為什麼要靜態化 301

21.2 大型套用的快取機制與靜態化 304

21.2.1 快取機制 304

21.2.2 靜態化機制 305

21.3 PHP如何實現靜態化 305

21.3.1 根據模板生成靜態頁面 305

21.3.2 資料庫與靜態頁的關係 306

21.3.3 靜態頁內容的修改 308

21.3.4 模板的替換 309

21.3.5 靜態頁上的動態操作 310

21.3.6 靜態頁面檔案的目錄 311

21.4 小結 314

第22章 PHP與XML格式操作 315

XML是一種流行的半結構化檔案格式,以一種類似資料庫的格式存儲數據。在實際套用中,一些簡單的、安全性較低的數據往往使用XML檔案的格式進行存儲。這樣做一方面可以通過減少與資料庫的互動性操作提高讀取效率,另一方面可以有效利用XML的優越性降低程式的編寫難度。

PHP提供了一整套的讀取XML檔案的方法,很容易就可以編寫基於XML的腳本程式。本章將介紹PHP與XML的操作方法,並對幾個常用的XML類庫作一些簡要介紹。

22.1 XML簡介 315

22.2 簡單的XML操作 316

22.2.1 創建一個SimpleXML對象 316

22.2.2 讀取SimpleXML對象中的XML數據 318

22.2.3 XML數據的修改 322

22.2.4 標準化XML數據 322

22.2.5 XML數據的存儲 322

22.3 XML文檔的動態創建 323

22.3.1 DOM簡介 324

22.3.2 DOM文檔的創建與使用 324

22.3.3 DOM元素的操作 327

22.3.4 DOM節點的操作 329

22.3.5 DOM組件操作實例 329

22.4 XSLT的使用 330

22.4.1 XSLT簡介 331

22.4.2 使用PHP與XSLT生成HTML頁面 332

22.5 XML套用實例一——留言本 333

22.5.1 XML檔案結構設計 333

22.5.2 提交頁面的編寫 334

22.5.3 顯示頁面的編寫 335

22.6 XML套用實例二——為網站生成RSS頁面 336

22.6.1 什麼是RSS 336

22.6.2 RSS頁面的編寫 338

22.7 小結 339

第23章 Smarty類庫 340

前面的章節介紹了很多在HTML頁面中內嵌PHP代碼的例子。隨著Web技術的不斷發展,很多Web程式設計師已經不再滿足於這種在HTML頁面中內嵌PHP代碼的方法。因為這樣做的一個很大弊端是為後期維護帶來了很多麻煩,程式設計師不得不修改PHP代碼來迎合頁面設計的改動。

本章要介紹的Smarty類庫有效地解決了這一問題。Smarty類庫通過建立模板庫來存放靜態HTML頁面中的HTML代碼,並使用PHP代碼對其中的元素進行賦值。這樣,當頁面的設計發生變化時,只需要修改模板頁面就可以了。

23.1 Smarty簡介 340

23.2 Smarty的安裝與配置 341

23.2.1 Smarty的安裝 341

23.2.2 Smarty的配置 341

23.3 Smarty程式設計 342

23.3.1 簡單的Smarty程式設計 342

23.3.2 模板對象屬性的定義 343

23.3.3 Smarty程式編寫的一般步驟 344

23.4 Smarty模板設計 344

23.4.1 模板中的變數 344

23.4.2 變數的修飾 345

23.4.3 區域循環方法 346

23.4.4 模板中的條件判斷 348

23.4.5 外部檔案的載入 350

23.5 Smarty的實際套用——多模板網站 351

23.5.1 模板的設計 351

23.5.2 頁面實現 352

23.6 小結 353

第24章 ThinkPHP框架 354

上一章介紹了使用Smarty類庫進行套用系統開發。Smarty使用模板構架有效地分離了代碼與頁面,當頁面發生變化的時候,程式設計師並不需要修改代碼。本章將要介紹另外一種基於模板的開發框架——ThinkPHP框架。

ThinkPHP框架是近兩年剛剛發展起來的一個PHP套用開發框架。該框架借鑑了很多優秀框架的經驗和模式,使用最通用的MVC構架和面向對象理念,是一款可以實現網站快速開發的優秀的輕量級框架。

24.1 ThinkPHP的安裝與項目創建 354

24.1.1 ThinkPHP的獲取與安裝 354

24.1.2 項目入口檔案 354

24.1.3 項目的創建 355

24.2 項目的配置 355

24.3 控制器類的創建 356

24.3.1 控制器的模組與操作 356

24.3.2 URL的處理 358

24.4 模型類的創建 358

24.4.1 模型的定義與實例化 359

24.4.2 資料庫的連線與操作 360

24.5 模板檔案的編寫 362

24.5.1 模板中的變數 362

24.5.2 模板中函式的使用 363

24.5.3 幾種基本標籤的使用 364

24.6 ThinkPHP套用實例——線上日程表 366

24.6.1 資料庫的設計 366

24.6.2 模板的設計 367

24.6.3 控制器的實現 368

24.7 小結 369

第25章 Zend Framework框架 370

隨著Web技術的發展,傳統的編程模式已經越來越不能滿足日益快速的技術發展。近些年來,一些致力於整合功能的框架技術蓬勃發展起來。上一章介紹的ThinkPHP框架是一個可以滿足基本需要的輕量級框架。而由Zend公司構建的框架Zend Framework則更適合大型系統的開發。本章將簡要介紹Zend Framework的使用方法。

25.1 Zend Framework的安裝與項目創建 370

25.2 dispatcher與Bootstrap 372

25.3 控制器程式的編寫 372

25.3.1 首頁控制器程式的編寫 373

25.3.2 其他頁面控制器程式的編寫 374

25.4 視圖檔案的調用 376

25.4.1 默認視圖檔案的使用 376

25.4.2 模板檔案的調用 376

25.5 數據模型的生成 377

25.5.1 資料庫的連線 377

25.5.2 數據模型的創建 378

25.5.3 數據模型的使用 379

25.6 用戶表單的處理 380

25.6.1 用戶表單的生成 380

25.6.2 表單數據的驗證與過濾 382

25.7 Zend Framework套用實例——留言本 384

25.8 小結 388

第26章 CakePHP框架 389

CakePHP是近兩年來新生的一款開源的PHP框架。該框架的設計理念來自Ruby的Rails框架,使PHP程式設計師可以比較迅速地創建Web應用程式。CakePHP框架使用了MVC體系結構,同時兼容PHP 4和PHP 5,並且擁有很靈活的數據模型與許可權管理機制。因此,近年來CakePHP受到了越來越多PHP程式設計師的關注與青睞。CakePHP的最新版本為1.3.0,本章將以該版本為例簡要介紹CakePHP的使用方法。

26.1 CakePHP的安裝與配置 389

26.2 Scaffolding簡介 391

26.3 CakePHP的數據模型 392

26.3.1 數據模型的定義 392

26.3.2 數據的查詢 393

26.3.3 數據的保存 395

26.3.4 數據的刪除 397

26.3.5 對象的關聯 398

26.4 控制器的編寫 400

26.4.1 控制器的基本使用 400

26.4.2 控制器的屬性與方法 401

26.5 視圖的調用 404

26.5.1 視圖的布局 404

26.5.2 視圖的元素 405

26.5.3 視圖的快取 405

26.6 ACL許可權控制 406

26.6.1 什麼是ACL 406

26.6.2 使用配置檔案定義許可權 407

26.6.3 使用資料庫定義許可權 408

26.7 CakePHP套用實例——員工工資單 409

26.7.1 登錄框與許可權控制 409

26.7.2 工資單頁面的編寫 410

26.8 小結 412

第27章 Symfony框架 413

前面幾章介紹了幾種常見的PHP開發框架。本章將繼續介紹另一種近幾年流行起來的新的開發框架Symfony。Symfony框架也是一款基於MVC架構的框架,並且使用到了一些其他PHP開源項目的部分代碼以增強其功能。因此,近年來Symfony受到了越來越多大型項目的青睞。Symfony框架的最新版本為1.4.3,本章將以該版本為例簡要介紹Symfony的使用方法。

27.1 Symfony的安裝 413

27.2 開始一個新項目 414

27.3 Symfony的數據模型 416

27.3.1 Schema的編寫 416

27.3.2 數據模型初始化 420

27.4 控制器與視圖 421

27.4.1 項目的基本構架 421

27.4.2 視圖的布局 422

27.4.3 控制器與模板 424

27.5 管理生成器 426

27.5.1 管理後台的生成 427

27.5.2 管理後台的配置 427

27.6 Symfony套用實例——個人部落格 430

27.7 小結 433

第28章 PHP與圖像操作 434

PHP不僅可以用來生成HTML頁面,還可以用來創建和操作二進制檔案,例如圖片。使用PHP程式動態生成圖片可以實現生成縮略圖、驗證碼等多種功能,在實際套用中很常用。在PHP中,通常使用GD庫來實現對圖像的操作。本章將介紹如何使用GD庫來操作圖像檔案。

28.1 PHP圖像函式館簡介 434

28.2 GD庫的配置 434

28.3 一個簡單圖像創建程式 436

28.4 GD庫的套用實例 437

28.4.1 使用GD庫創建圖片縮略圖 437

28.4.2 使用GD庫生成驗證碼 439

28.4.3 使用GD庫下載遠程圖片 441

28.4.4 使用GD庫為頁面增加水印 441

28.5 小結 442

第29章 JpGraph創建統計圖 443

上一章介紹了如何使用GD庫來創建圖像。使用GD庫提供的各種函式可以生成多種圖像,但是,如果需要在PHP中創建一些統計圖,使用GD庫就顯得很麻煩了。本章將要介紹一種專門用於輸出統計圖的JpGraph庫。該庫在數據統計等方面有很大優勢。在實際套用中,可以很容易使用JpGraph生成大方得體的統計圖。

29.1 JpGraph簡介 443

29.2 JpGraph的安裝與配置 443

29.2.1 JpGraph的安裝 443

29.2.2 JpGraph的配置 444

29.3 JpGraph繪製統計圖實例 444

29.3.1 簡單的X-Y坐標圖 444

29.3.2 改進的X-Y坐標圖 447

29.3.3 柱形圖 450

29.3.4 餅圖 451

29.3.5 3D餅圖 452

29.4 JpGraph套用實例——工廠銷量查詢系統 453

29.5 小結 457

第30章 PHP訪問LDAP伺服器 458

LDAP的全稱是“輕量級目錄訪問協定(Lightweight Directory Access Protocol)”,是一種簡單的目錄協定。所謂目錄,是一種專門的資料庫,可以服務於任何應用程式。在企業套用中使用LDAP可以讓企業範圍內的所有應用程式從LDAP目錄中獲取信息,使應用程式可以通過網路直接從LDAP目錄獲取信息,而不再局限於作業系統與伺服器的類型。本章將主要介紹如何使用PHP來訪問LDAP。

30.1 LDAP簡介 458

30.2 LDAP伺服器的安裝與配置 459

30.2.1 OpenLDAP的安裝 459

30.2.2 OpenLDAP的配置 460

30.2.3 OpenLDAP的啟動與關閉 461

30.2.4 OpenLDAP的數據操作 462

30.2.5 phpLDAPadmin簡介 463

30.3 PHP中LDAP擴展的配置 464

30.4 PHP與LDAP的相關操作 464

30.4.1 連線LDAP伺服器 464

30.4.2 綁定LDAP伺服器 465

30.4.3 斷開LDAP伺服器 465

30.4.4 查詢LDAP目錄內容 465

30.4.5 獲得查詢結果中的值 467

30.4.6 計算查詢結果中的記錄數 468

30.4.7 向LDAP添加一條新記錄 469

30.4.8 更新LDAP中的一條記錄 469

30.4.9 從LDAP中刪除一條新記錄 470

30.4.10 錯誤處理 470

30.5 使用LDAP驗證用戶身份 471

30.6 小結 472

第31章 PHP與郵件系統 473

在實際套用中,通常需要使用郵件系統來與網站的訪問者交流。例如,一個網站的新註冊用戶可以通過郵件來獲取註冊確認信息,也可以通過郵件來找回密碼等。因此,在一些常見的網站系統中,往往包含郵件傳送的功能。本章將介紹如何使用PHP來傳送郵件。

31.1 PHP郵件傳送功能配置 473

31.1.1 PHP中的SMTP功能配置 473

31.1.2 建立自己的SMTP伺服器 474

31.2 PHP中的mail函式 476

31.2.1 簡單的郵件傳送方法 476

31.2.2 傳送HTML格式文本 477

31.2.3 傳送帶附屬檔案的郵件 477

31.3 一個簡單的郵件傳送類 479

31.3.1 郵件傳送類的創建 479

31.3.2 郵件傳送系統的實現 481

31.4 小結 483

第32章 PHP最佳化器與加速器 484

PHP代碼在運行時是通過編譯器首先編譯成中間代碼,然後再被伺服器運行得到用戶所需要的結果。因此,中間代碼的優劣直接決定了代碼的最終運行速度。目前,有一些常見的PHP加速器可以通過對中間代碼進行最佳化來提高PHP代碼的運行速度。這樣,網站的訪問者就可以更快地打開網頁。

本章將介紹幾款常見的PHP加速器,讀者可以根據實際情況選擇其中的一款安裝,從而有效地提高PHP的運行效率。

32.1 最佳化器Zend Optimizer 484

32.1.1 Zend Optimizer的安裝 484

32.1.2 Zend Optimizer的配置 486

32.2 加速器PHP Accelerator 487

32.2.1 PHP Accelerator的安裝 487

32.2.2 PHP Accelerator的配置 488

32.3 開源的最佳化器Turck MMCache 488

32.3.1 Turck MMCache的安裝 489

32.3.2 Turck MMCache的配置 489

32.4 開源的加速器eAccelerator 490

32.5 小結 490

第4篇 PHP與實際項目

第33章 用PHP構建內容管理系統CMS 492

CMS是“內容管理系統(Content Management System)”的縮寫,任何基於內容的網站系統都可以稱為CMS。例如,文章管理、圖片管理以及綜合網站管理程式都是CMS的典型實現。一般的CMS系統都是基於模板設計,網站開發人員可以通過簡單地修改模板的設計快速實現網站所需功能。本章將以一個簡單的文章管理程式為例,說明如何開發一個CMS系統。

33.1 了解CMS需求 492

33.2 資料庫設計 492

33.3 關鍵技術的實現 495

33.3.1 資料庫連線公用代碼 496

33.3.2 網站開關的設計 496

33.3.3 模板更換機制 496

33.3.4 HTML編碼轉換 497

33.4 頁面代碼設計 497

33.4.1 首頁的實現 497

33.4.2 註冊頁面的實現 501

33.4.3 分類文章列表頁面與文章顯示頁面的實現 503

33.4.4 投稿頁面與添加新文章頁面的實現 507

33.4.5 文章管理頁面的實現 509

33.4.6 文章類別維護頁面的實現 513

33.4.7 網站參數配置頁面的實現 518

33.4.8 網站模板管理頁面的實現 521

33.4.9 退出登錄頁面的實現 524

33.5 小結 525

第34章 用PHP構建搜尋引擎 526

網際網路時代是一個信息爆炸的時代,面對著信息高速膨脹的網際網路,怎樣快捷有效地得到自己所需要的信息成為了一個關鍵的課題。於是,各種各樣的搜尋引擎在網際網路上誕生了出來,例如,Google、Yahoo和百度等,都是流行的搜尋引擎。這些搜尋引擎已經逐漸成為人們生活不可或缺的一部分。

本章將要介紹如何使用PHP來進行信息搜尋,以及調用這些現有的搜尋引擎進行搜尋。

34.1 PHP對資料庫數據的搜尋 526

34.1.1 資料庫創建 526

34.1.2 搜尋頁面的設計 527

34.1.3 內容顯示頁面的設計 528

34.1.4 系統集成的調度策略 529

34.2 PHP對文本檔案的搜尋 530

34.3 PHP對現有搜尋引擎的調用 531

34.4 小結 533

第35章 PHP與企業辦公自動化OA系統 534

OA是辦公自動化(Office Automation)的縮寫。OA系統是基於Internet或Intranet的概念、以企業工作流為基礎構建的辦公自動化系統。OA系統能夠有效地對企業信息進行管理,並且在企業內部共享信息。OA系統的存在改變了過去複雜低效的辦公模式,使辦公管理和決策變得更加簡單。本章將以一個簡單的OA系統為例來介紹如何使用PHP開發OA系統。

35.1 了解企業OA系統的需求 534

35.2 資料庫設計 535

35.3 關鍵技術的實現 536

35.3.1 根據登錄用戶的許可權進入不同的頁面 536

35.3.2 項目與任務狀態的級聯更新 537

35.4 頁面代碼的設計 538

35.4.1 公共資料庫連線代碼 538

35.4.2 登錄頁面的設計 538

35.4.3 管理員/經理項目列表頁面的設計 540

35.4.4 創建新項目頁面的設計 542

35.4.5 項目修改頁面的設計 545

35.4.6 普通員工任務列表頁面的設計 550

35.4.7 新賬號分配頁面的設計 552

35.4.8 賬號許可權設定頁面的設計 555

35.4.9 過期項目統計頁面的設計 558

35.4.10 經理項目分配情況統計頁面的設計 560

35.4.11 員工任務分配情況統計頁面的設計 561

35.4.12 公司項目運營情況統計頁面的設計 562

35.5 小結 565

第36章 PHP與流程管理系統 566

上一章介紹了如何使用PHP構建一個簡單的OA系統。在企業的日常工作中,往往需要遵循一些流程來工作。例如,報銷發票的流程可以是報銷人提出申請→相關經理批准→財務主管批准→支付報銷金額給報銷申請人等。流程管理系統可以簡單地實現對流程中各個過程進行追蹤並提示相關人員完成流程中相應的步驟。本章將以一個設備維修流程的管理系統為例簡要介紹如何使用PHP來構建流程管理系統。

36.1 流程管理系統的需求 566

36.2 資料庫設計 567

36.3 關鍵技術的實現 569

36.3.1 使用觸發器來記錄請求更新日誌 569

36.3.2 根據角色的不同對請求進行不同的操作 569

36.4 頁面代碼的實現 570

36.4.1 設備維修請求列表頁面的實現 570

36.4.2 提交新請求頁面的實現 572

36.4.3 需要執行操作的請求列表頁面的實現 574

36.4.4 對請求執行操作頁面的實現 576

36.4.5 操作日誌列表頁面的實現 582

36.5 小結 584

第37章 PHP與資源管理系統 585

前面兩章站在企業層面上介紹了如何使用PHP創建企業OA系統和流程管理系統。目前常見的企業級系統還包括資源管理系統(Enterprise Resource Management System,ERM)。所謂資源包含企業中的網路資源、工程方面的資源和財務資源等。一個完整的資源管理系統應該包括對資源的數據存儲、業務分析以及輔助決策等,並且要與其他現有系統具有良好的接口。本章將以一個小型庫存資源管理系統為例,簡要介紹如何使用PHP構建一個資源管理系統。

37.1 資源管理系統的需求 585

37.2 資料庫設計 586

37.3 關鍵技術的實現 588

37.3.1 使用SQL計算獎金額度 589

37.3.2 使用觸發器來限制獎金額度 589

37.3.3 使用存儲過程從其他數據表獲取數據 590

37.3.4 自動生成PHP代碼控制網站開關 590

37.3.5 使用JpGraph生成統計圖 591

37.4 各功能模組的具體實現 592

37.4.1 用戶許可權認證的實現 592

37.4.2 訂單輸入模組的實現 593

37.4.3 庫存管理模組的實現 597

37.4.4 賬目管理模組的實現 601

37.4.5 獎金計算模組的實現 606

37.4.6 年度統計模組的實現 609

37.5 小結 611

第38章 多國語言處理策略 612

前面幾章介紹了如何使用PHP來開發一些實際項目。隨著信息全球化的高速發展,套用系統向全球化發展的趨勢也越加明顯。例如,一個跨國企業的辦公系統可能要面向這家跨國企業分布在全球的多家分公司,在開發這個辦公系統時可能就需要對多種語言提供支持。本章將以一個小型系統為例來介紹一下如何對PHP開發的系統提供多國語言支持的功能。

38.1 對字元編碼與GB2312、GBK和UTF-8的理解 612

38.1.1 GB2312與GBK 612

38.1.2 Unicode、UCS與UTF-8 612

38.1.3 網頁編碼的實現 613

38.2 GLS設計思想簡介 614

38.3 客戶端語言選項的設定與獲取 615

38.3.1 客戶端語言選項的設定 615

38.3.2 使用PHP獲取客戶端語言選項 615

38.4 一個簡單的帶有多國語言支持的套用開發 615

38.4.1 資料庫設計 615

38.4.2 頁面代碼的開發 616

38.4.3 語言設定頁面的開發 620

38.4.4 語言配置檔案選取頁面的開發 620

38.4.5 語言配置檔案的設計 621

38.5 小結 624

第39章 PHP在入口網站中的套用 625

在網際網路發達的今天,網民的數量也在高速增長,越來越多的大型網站通過將各種數據資源和網際網路資源結合起來構成了入口網站。入口網站通過將新聞系統、聊天室、BBS和電子商務等多種套用系統整合起來為用戶提供了豐富的網際網路信息。本章將主要介紹PHP在入口網站中的一些套用。

39.1 入口網站的特點 625

39.2 靜態快取和動態快取 626

39.2.1 靜態快取與動態快取簡介 626

39.2.2 一個對系統實現靜態快取的例子 626

39.2.3 一個對系統實現動態快取的例子 628

39.3 入口網站中的互動設計 630

39.3.1 什麼是互動設計 631

39.3.2 一個不好的互動設計例子 631

39.3.3 改進的互動設計例子 633

39.4 負載均衡技術簡介 635

39.4.1 常用的負載均衡技術 635

39.4.2 常用的負載均衡算法 636

39.5 一個使用用戶排隊機制解決網站大訪問量的例子 636

39.6 小結 638

第5篇 PHP的擴展套用

第40章 PHP與網路客戶端 640

前面介紹了使用PHP構建伺服器端頁面,用戶可以通過瀏覽器訪問遠程伺服器上的PHP頁面來實現與伺服器的互動操作。除此之外,PHP還可以用來開發網路客戶端,用戶可以在自己的主機上訪問遠程伺服器,甚至可以通過命令行來與遠程伺服器進行互動。本章將介紹如何使用PHP訪問遠程Web伺服器和FTP伺服器,以及使用命令行來運行PHP代碼。

40.1 PHP訪問遠程Web頁面 640

40.1.1 fsockopen函式 640

40.1.2 一個遠程提交數據的實例 641

40.2 PHP訂閱RSS 642

40.2.1 下載遠程RSS 642

40.2.2 RSS的解析與保存 643

40.3 PHP訪問FTP伺服器 644

40.3.1 連線和斷開FTP伺服器 644

40.3.2 登錄FTP伺服器 644

40.3.3 獲取檔案列表 645

40.3.4 檔案的上傳、下載和刪除 646

40.3.5 目錄的創建和刪除 647

40.4 PHP的命令行模式 648

40.4.1 PHP命令行程式簡介 648

40.4.2 執行參數的獲取 649

40.4.3 一個使用命令行方式訪問FTP的實例 649

40.5 小結 652

第41章 PHP與XML-RPC、SOAP 653

前面介紹了如何通過訪問PHP頁面來實現與伺服器的互動。除此之外,PHP還支持開發供程式調用的接口頁面。通過這些接口,遠程程式可以很容易地實現與伺服器的互動操作,而不需要複雜地通過對一般頁面進行讀取來進行互動。本章將介紹兩種最常見的遠程調用的技術以及使用PHP的實現方法。

41.1 XML-RPC簡介 653

41.1.1 客戶端請求的XML格式 653

41.1.2 伺服器回響的XML格式 656

41.1.3 錯誤信息的XML格式 656

41.2 PHP與XML-RPC的結合實例 657

41.2.1 PHP的XML-RPC庫介紹 657

41.2.2 PHP伺服器端頁面的編寫 658

41.2.3 PHP客戶端頁面的編寫 659

41.3 SOAP簡介 659

41.4 PHP的SOAP套用實例 660

41.4.1 SOAP擴展庫的使用方法 660

41.4.2 伺服器端的編寫 661

41.4.3 客戶端的編寫 662

41.5 小結 662

第42章 PHP與Web Service 663

上一章介紹了如何使用PHP通過XML-RPC和SOAP進行遠程訪問以及遠程過程調用的方法,這些技術不單單實現了通過瀏覽器對頁面的直接訪問,而且提供了可供程式調用的函式為客戶端程式提供了便利。這種技術往往被稱為Web Service,在網際網路技術發展的今天,Web Service提供了一種可程式的數據接口方便了其他程式或客戶端的調用。本章將介紹Web Service技術以及如何使用PHP來實現。

42.1 Web Service簡介 663

42.2 WSDL、UDDI與Web Service 664

42.2.1 WSDL簡介 664

42.2.2 UDDI簡介 664

42.3 PHP與Web Service的互動操作 665

42.3.1 NuSOAP類庫 665

42.3.2 PHP創建Web Service 666

42.3.3 PHP訪問Web Service 668

42.4 小結 670

第43章 PHP與Ajax 671

Ajax是近年來剛剛流行起來的一種技術,全稱是Asynchronous JavaScript and XML(異步JavaScript和XML)。Ajax是多種技術的綜合套用,主要包括JavaScript技術、XML技術、DOM技術和XMLHttpRequest控制項等。Ajax作為Web 2.0的一個重要技術,大大推動了Web技術的發展。本章將結合PHP來簡要介紹一下Ajax的一些常見套用。

43.1 Ajax簡介 671

43.1.1 Ajax工作原理 671

43.1.2 Ajax的優勢與劣勢 672

43.2 XMLHttpRequest的使用 672

43.2.1 Ajax初始化 672

43.2.2 XMLHttpRequest的屬性和方法 673

43.2.3 簡單的伺服器請求 674

43.2.4 HTML檔案的讀取 675

43.2.5 XML檔案的讀取 677

43.3 PHP與Ajax的互動 679

43.3.1 使用GET方式與PHP互動 679

43.3.2 使用POST方式與PHP互動 681

43.4 Ajax套用實例 682

43.4.1 用戶名唯一性驗證的實現 682

43.4.2 動態列表框的實現 684

43.4.3 局部刷新頁面的實現 685

43.4.4 自動刷新頁面的實現 688

43.4.5 進度條的實現 689

43.4.6 表單輸入提示的實現 691

43.5 小結 693

第44章 PHP擴展的開發 694

本書前面的章節介紹了PHP的開發與套用。在進行PHP開發時,有時難免遇到無法使用PHP解決或很難使用PHP來解決的問題,這時就需要使用PHP擴展功能來擴展PHP的功能了。本章將簡要介紹如何在Windows平台下進行PHP擴展的開發。

44.1 PHP擴展開發簡介 694

44.2 使用Visual C++編寫PHP擴展 694

44.2.1 PHP擴展開發的前期準備 695

44.2.2 PHP擴展代碼模板的生成 696

44.2.3 模板代碼的修改與編譯 697

44.2.4 擴展模組的調用 699

44.3 一個擴展套用實例的開發——簡單加密解密函式 700

44.3.1 加密函式的編寫 700

44.3.2 解密函式的編寫 701

44.3.3 測試代碼的編寫 701

44.4 小結 702

相關詞條

熱門詞條

聯絡我們