内容簡介
本書從易到難、由淺入深、循序漸進、系統地介紹了PHP5知識點及其Web應用程序的開發技術。通俗易懂,提供大量的實例供讀者更加深刻鞏固所學的知識,使讀者更好地進行開發實踐。
本書共分為51章,從搭建PHP應用程序開發環境開始,首先介紹了PHP語言的編程基礎知識、常用技巧及與一般Web對象的操作,然後介紹了PHP與數據庫的交互操作方法,并對PHP中的擴展庫的使用方法進行了詳細的介紹,其中包括PEAR、ADOdb、FPDF、GD庫等。除此之外,還對PHP的緩存處理方法、XML文件操作、LDAP服務器操作和郵件系統操作進行了介紹。本書通過對CMS系統、OA系統、流程管理系統和資源管理系統等系統的介紹,詳細講解了PHP在實際開發中的應用,并且對服務器的基本知識及PHP的擴展應用都進行了系統翔實的介紹。
本書内容緊湊、實例豐富、結構嚴謹、深入淺出,不論是對PHP應用程序的初學者,還是對PHP應用程序開發有一定經驗的開發人員,都會起到有益的幫助。
作者簡介
孫鵬程,從事7年的PHPB/S模式系統的設計和開發,曾經在神州數碼、IBM中國擔任項目經理。具有六百餘萬行代碼經驗,對PHP與企業結合的應用系統設計有深入研究。開發的基于企業管理流程的應用系統廣泛應用于東北電網等大型企業。
目錄
第1章文件系統與文本數據操作2
在程序設計中,文件是一個很重要的對象,web編程也不例外。文件的操作在很多web系統中一直都是被反複用到的。在實際應用中經常會遇到對文件和目錄的創建、修改、删除等操作。本章将主要介紹如何使用php對文件系統以及文本數據進行操作。
1.1php中目錄操作詳解2
1.1.1打開目錄2
1.1.2關閉目錄3
1.1.3讀取目錄中的文件3
1.1.4創建目錄3
1.1.5删除目錄4
1.2php中文件操作詳解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
在php中,對于字符的處理是一個很重要的部分,很多應用中都包含有字符處理的功能,而正則表達式則是有效地處理一些複雜字符操作的便利方式。本章将重點介紹php中的一些常見字符處理操作及正則表達式的應用。
2.1字符類型的特殊性13
2.2字符的顯示與格式化14
2.2.1字符的顯示14
2.2.2字符的格式化14
2.3常見的操作15
2.3.1字符串重複操作——str_repeat15
2.3.2字符串替換操作——str_replace和str_ireplace16
2.3.3字符串分解操作——str_split17
2.3.4字符串單詞數的計算函數——str_word_count18
2.3.5字符串查找操作——strstr19
2.3.6獲得字符串長度——strlen19
2.3.7獲得字符串子串——substr19
2.4正則表達式簡介20
2.5正則表達式與字符操作綜合應用20
2.5.1獲得與模式匹配的數組單元——preg_grep21
2.5.2進行全局正則表達式匹配——preg_match_all21
2.5.3進行正則表達式匹配——preg_match23
2.5.4轉義正則表達式字符——preg_quote24
2.5.5執行正則表達式的搜索和替換的函數——preg_replace25
2.5.6通過回調函數執行正則表達式的搜索和替換——preg_replace_callback25
2.5.7用正則表達式進行字符串分割——preg_split26
2.6字符操作的注意事項27
2.7小結29
數組是一個由若幹同類型變量組成的集合,引用這些變量時可用同一名字。數組中的每一個變量都叫做數組的一個元素。在開發中,數組有廣泛的用途。本章将對數組及一些數組的使用技巧作詳細講解。
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遞增排序——sort36
3.4.2遞減排序——rsort36
3.4.3數組排序——array_multisort37
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.1php中的錯誤類型46
4.1.1語法錯誤46
4.1.2語義錯誤47
4.1.3邏輯錯誤47
4.1.4注釋錯誤47
4.1.5運行時錯誤48
4.2php程序調試策略48
4.2.1php的錯誤級别48
4.2.2打開php的錯誤報告49
4.2.3使用print進行程序調試50
4.3使用phpeclipse進行php程序調試51
4.3.1使用eclipse編寫php程序的好處51
4.3.2phPECLipse的安裝與啟動51
4.3.3phpeclipse的使用52
4.3.4phpeclipse的語法錯誤強調功能53
4.3.5phpeclipse的調試界面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.2php中的異常處理62
5.2.1異常類exception63
5.2.2異常抛出關鍵字throw64
5.2.3異常捕獲語句try-catch65
5.2.4異常處理函數設置set_exception_handler66
5.2.5完整的異常信息67
5.3擴展的異常處理類68
5.4異常的傳遞與重擲71
5.5小結73
第6章php與表單74
在web應用程序的開發中,通常使用表單來實現程序與用戶輸入的交互。用戶通過在表單上輸入數據,将一些信息傳輸給網站的程序以進行相應的處理。當用戶在web頁面中的表單内填寫好信息以後,可以通過單擊按鈕或鍊接來實現數據的提交。本章将主要介紹php中表單的應用,php程序通過接收用戶在表單中輸入的信息實現與用戶的交互。
6.1html表單簡介74
6.1.1表單标簽form74
6.1.2輸入标簽input與文本框75
6.1.3按鈕76
6.1.4單選框與複選框77
6.1.5多行文本域标簽textarea78
6.1.6下拉框與列表框标簽select79
6.2表單數據的接收79
6.2.1get方法80
6.2.2post方法82
6.3常用表單數據的驗證方法83
6.3.1姓名驗證83
6.3.2日期驗證84
6.3.3e-mail地址驗證84
6.3.4密碼字段的驗證84
6.3.5改進的用戶信息輸入程序85
6.4URL編碼解碼函數87
6.4.1編碼字符串——urlencode87
6.4.2解碼字符串——urldecode87
6.5小結88
前面幾章介紹了如何使用php語言來實現一些基本操作。php是一種後台語言,在執行時會将php程序的運行結果以靜态html的形式返回給客戶端。也就是說,在客戶端并不能看見php代碼。本章将要介紹一種流行的在客戶端執行的前台編程語言——javascript。在實際應用中,往往會結合應用後台語言和前台語言以實現一些需要的功能。
7.1javascript簡介89
7.2javascript的數據類型89
7.3JavaScript程序設計基礎90
7.3.1在html中嵌入javascript90
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.4php動态生成javascript代碼99
7.4.1多行輸出99
7.4.2單行輸出99
7.4.3php動态生成javascript實例——進度條100
7.5javascript中調用php程序101
7.5.1頁面的跳轉101
7.5.2隐性調用php程序102
7.6javascript和php綜合實例——表單驗證102
7.6.1表單設計103
7.6.2javascript代碼設計104
7.6.3php代碼設計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.1mysql112
8.3.2oracle112
8.3.3sybase113
8.3.4db2113
8.3.5sqlserver113
8.4sql語言簡介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.1mysql數據庫服務器介紹125
9.2安裝與配置125
9.2.1下載mysql125
9.2.2mysql的安裝126
9.2.3mysql的配置127
9.2.4mysql的啟動與關閉129
9.3數據庫與表的創建129
9.3.1登錄與退出MySql命令行管理模式130
9.3.2mysql的數據庫操作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.1php結合數據庫應用的優勢145
10.2web數據庫的工作原理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.5php與存儲過程、觸發器178
11.5.1php調用存儲過程178
11.5.2php調用觸發器179
11.6小結180
第12章session與cookie181
在數據庫應用中,難免會涉及用戶登錄功能的編寫。在一些系統中,往往也需要識别用戶的身份。因此,session與cookie是web應用特别是數據庫應用中不可或缺的兩個要素。正是由于session和cookie的存在才使頁面間信息的安全傳遞成為可能。本章将結合數據庫的使用實例來介紹php中session和cookie的應用。
12.1session與cookie簡介181
12.2php中session的實現181
12.2.1标識開始使用session182
12.2.2session預定義數組182
12.2.3session的檢測與注銷182
12.2.4php中session處理的定制183
12.3session應用實例——登錄驗證187
12.3.1數據庫設計187
12.3.2html表單的設計187
12.3.3驗證頁面的編寫188
12.3.4歡迎頁面的編寫189
12.3.5注銷頁面的編寫189
12.3.6代碼的運行189
12.3.7代碼的改進190
12.4php中cookie的實現191
12.4.1cookie語法格式191
12.4.2cookie預定義數組191
12.4.3創建一個cookie191
12.4.4創建一個有時間限制的cookie192
12.4.5創建一個有範圍限制的cookie192
12.4.6删除cookie193
12.4.7浏覽器重定向193
12.4.8cookie的常見問題193
12.5cookie應用實例——登錄驗證194
12.5.1html表單的設計194
12.5.2驗證頁面的編寫194
12.5.3歡迎頁面的編寫195
12.5.4注銷頁面的編寫196
12.5.5代碼的運行196
12.6cookie與session的比較197
12.7小結197
在前面幾章中,介紹了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.1postgresql簡介212
14.2postgresql的安裝212
14.2.1postgresql的下載212
14.2.2postgresql的安裝步驟213
14.2.3postgresql服務的啟動與停止214
14.3postgresql的基本操作214
14.3.1pgAdminiii的啟動214
14.3.2服務器的連接214
14.3.3創建一個新數據庫215
14.3.4創建一個表215
14.3.5對表中數據的操作217
14.3.6sql語句的執行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.8information_schema227
14.5小結228
前面兩章對php與mysql和postgresql數據庫服務器的連接進行了簡單介紹。在實際應用中,由于mysql和postgresql的大型數據處理能力比較差,因而往往使用較大型的數據庫系統進行部署。sqlserver就是微軟推出的一款适合較大型系統使用的數據庫服務器軟件。本章将對sqlserver與php的應用進行介紹。
15.1sqlserver簡介229
15.2sqlserver的安裝230
15.2.1sqlserver的安裝步驟230
15.2.2sqlservermanagementstudio231
15.3sqlserver的基本操作232
15.3.1創建一個數據庫232
15.3.2創建一個表232
15.3.3對表中數據的操作233
15.3.4sql語句的執行233
15.4使用php存取sqlserver數據庫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
上一章介紹了sqlserver與php的應用。與sqlserver類似,oracle是甲骨文公司推出的一款大型數據庫管理系統。在實際應用中,oracle具有更高的數據處理和管理能力。因此,oracle受到了很多大型企業的青睐。本章将介紹oracle的基本操作以及與php的應用。
16.1oracle簡介240
16.2oracle的安裝241
16.2.1oracle的安裝過程241
16.2.2oracleapplicationexpress241
16.3oracle的基本操作242
16.3.1創建一個表242
16.3.2對表中數據的操作244
16.3.3sql語句的執行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
目前市場上流行的數據庫有很多種,雖然這些數據庫在開發時遵循同樣的一個标準,但是,每種數據庫都有一些與其他同類産品不一樣的地方。本章将主要介紹不同種數據庫間的差異,并對php與不同數據庫的操作上的差異作一些介紹。
17.1sql語言标準以及常見關系型數據庫的sql擴展249
17.1.1ansisql語言标準249
17.1.2mysql對ansisql的擴充250
17.1.3sqlserver的t-sql251
17.1.4oracle的pl/sql252
17.2php數據庫應用的差異253
17.2.1mysql與php的應用253
17.2.2postgresql與php的應用253
17.2.3sqlserver與php的應用254
17.2.4oracle與php的應用255
17.2.5sqlite與php的應用255
17.2.6access與php的應用256
17.2.7odbc與php的應用256
17.3小結258
第3篇php的高級應用
第18章pear、pecl的應用260
本書前面的章節介紹了php的基本使用以及與數據庫結合的實例。通過對前面的學習,讀者應該能夠使用php設計并實現一些常見的功能了。很多時候,并不需要自己逐行完成應用中的所有代碼,因為很多常見的功能可能早已被人開發出來了。如果能夠有效地利用這些資源,就能在實際開發中達到事半功倍的效果。本章将介紹的pear與pecl就是這樣的資源庫。
18.1pear與pecl的介紹260
18.2pear類庫組件的安裝260
18.3pear類庫的安裝與使用264
18.3.1查看已安裝pear包264
18.3.2查看pear包的詳細信息264
18.3.3安裝一個pear包265
18.3.4pear包的升級266
18.3.5pear包的使用266
18.4常用的pear類庫實例266
18.4.1使用db類庫進行數據庫查詢267
18.4.2使用auth_http類庫進行身份校驗269
18.4.3使用html_template_it類庫進行模闆替換271
18.5pecl擴展庫的安裝與使用272
18.6pecl擴展庫應用實例——zip擴展272
18.6.1zip擴展的安裝273
18.6.2一個zip擴展應用實例273
18.7小結274
第19章adodb類庫應用275
本書第2篇介紹了php與mysql等幾種常用數據庫的結合使用。php提供了多種數據庫訪問組件來訪問不同類型的數據庫。php的這種機制為php程序員制造了很多麻煩,為了訪問不同種類的數據庫,不得不記住多種多樣的數據庫存取函數。而本章将要介紹的adodb類庫則有效地解決了這個問題。adodb類庫通過對不同數據庫的差異封裝,可使php應用可以輕松地在不同的數據庫之間進行切換。
19.1adodb介紹275
19.1.1adodb的優勢275
19.1.2adodb的适用場合276
19.2adodb類庫的安裝與配置276
19.2.1adodb的下載與安裝276
19.2.2adodb的第一個測試程序276
19.3adodb的常用數據庫操作278
19.3.1連接數據庫278
19.3.2數據的插入、更新和删除281
19.3.3數據查詢281
19.3.4記錄分頁的實現283
19.3.5多個數據庫的連接方法285
19.4adodb的程序調試286
19.5小結288
pdf文檔格式是當前流行的電子文檔與電子表格的一種标準格式。pdf提供了完善的壓縮處理,無論創建者創建的pdf文檔使用了什麼字體,使用了什麼樣的圖片或者版式設計,浏覽者都可以通過免費的adobereader對其進行閱讀。本章将要介紹的是一個可以用php創建pdf文檔的類庫fpdf。
20.1fpdf簡介289
20.2fpdf的安裝與配置289
20.3fpdf創建pdf文檔289
20.3.1fpdf創建helloworld290
20.3.2在pdf中插入圖片291
20.3.3頁眉與頁腳292
20.3.4繪制表格293
20.4為fpdf增加中文支持295
20.5fpdf的實際應用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.3php如何實現靜态化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.1xml簡介315
22.2簡單的xml操作316
22.2.1創建一個simplexml對象316
22.2.2讀取simplexml對象中的xml數據318
22.2.3xml數據的修改322
22.2.4标準化xml數據322
22.2.5xml數據的存儲322
22.3xml文檔的動态創建323
22.3.1dom簡介324
22.3.2dom文檔的創建與使用324
22.3.3dom元素的操作327
22.3.4dom節點的操作329
22.3.5dom組件操作實例329
22.4xslt的使用330
22.4.1xslt簡介331
22.4.2使用php與xslt生成html頁面332
22.5xml應用實例一——留言本333
22.5.1xml文件結構設計333
22.5.2提交頁面的編寫334
22.5.3顯示頁面的編寫335
22.6xml應用實例二——為網站生成rss頁面336
22.6.1什麼是rss336
22.6.2rss頁面的編寫338
22.7小結339
第23章smarty類庫340
前面的章節介紹了很多在html頁面中内嵌php代碼的例子。随着web技術的不斷發展,很多web程序員已經不再滿足于這種在html頁面中内嵌php代碼的方法。因為這樣做的一個很大弊端是為後期維護帶來了很多麻煩,程序員不得不修改php代碼來迎合頁面設計的改動。
本章要介紹的smarty類庫有效地解決了這一問題。smarty類庫通過建立模闆庫來存放靜态html頁面中的html代碼,并使用php代碼對其中的元素進行賦值。這樣,當頁面的設計發生變化時,隻需要修改模闆頁面就可以了。
23.1smarty簡介340
23.2smarty的安裝與配置341
23.2.1smarty的安裝341
23.2.2smarty的配置341
23.3smarty程序設計342
23.3.1簡單的smarty程序設計342
23.3.2模闆對象屬性的定義343
23.3.3smarty程序編寫的一般步驟344
23.4smarty模闆設計344
23.4.1模闆中的變量344
23.4.2變量的修飾345
23.4.3區域循環方法346
23.4.4模闆中的條件判斷348
23.4.5外部文件的載入350
23.5smarty的實際應用——多模闆網站351
23.5.1模闆的設計351
23.5.2頁面實現352
23.6小結353
第24章thinkphp框架354
上一章介紹了使用smarty類庫進行應用系統開發。smarty使用模闆構架有效地分離了代碼與頁面,當頁面發生變化的時候,程序員并不需要修改代碼。本章将要介紹另外一種基于模闆的開發框架——thinkphp框架。
thinkphp框架是近兩年剛剛發展起來的一個php應用開發框架。該框架借鑒了很多優秀框架的經驗和模式,使用最通用的mvc構架和面向對象理念,是一款可以實現網站快速開發的優秀的輕量級框架。
24.1thinkphp的安裝與項目創建354
24.1.1thinkphp的獲取與安裝354
24.1.2項目入口文件354
24.1.3項目的創建355
24.2項目的配置355
24.3控制器類的創建356
24.3.1控制器的模塊與操作356
24.3.2url的處理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.6thinkphp應用實例——在線日程表366
24.6.1數據庫的設計366
24.6.2模闆的設計367
24.6.3控制器的實現368
24.7小結369
随着web技術的發展,傳統的編程模式已經越來越不能滿足日益快速的技術發展。近些年來,一些緻力于整合功能的框架技術蓬勃發展起來。上一章介紹的thinkphp框架是一個可以滿足基本需要的輕量級框架。而由zend公司構建的框架zendframework則更适合大型系統的開發。本章将簡要介紹zendframework的使用方法。
25.1zendframework的安裝與項目創建370
25.2dispatcher與bootstrap372
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.7zendframework應用實例——留言本384
25.8小結388
第26章cakephp框架389
cakephp是近兩年來新生的一款開源的php框架。該框架的設計理念來自ruby的rails框架,使php程序員可以比較迅速地創建web應用程序。cakephp框架使用了mvc體系結構,同時兼容php4和php5,并且擁有很靈活的數據模型與權限管理機制。因此,近年來cakephp受到了越來越多php程序員的關注與青睐。cakephp的最新版本為1.3.0,本章将以該版本為例簡要介紹cakephp的使用方法。
26.1cakephp的安裝與配置389
26.2scaffolding簡介391
26.3cakephp的數據模型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.6acl權限控制406
26.6.1什麼是acl406
26.6.2使用配置文件定義權限407
26.6.3使用數據庫定義權限408
26.7cakephp應用實例——員工工資單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.1symfony的安裝413
27.2開始一個新項目414
27.3symfony的數據模型416
27.3.1schema的編寫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.6symfony應用實例——個人博客430
27.7小結433
第28章php與圖像操作434
php不僅可以用來生成html頁面,還可以用來創建和操作二進制文件,例如圖片。使用php程序動态生成圖片可以實現生成縮略圖、驗證碼等多種功能,在實際應用中很常用。在php中,通常使用gd庫來實現對圖像的操作。本章将介紹如何使用gd庫來操作圖像文件。
28.1php圖像函數庫簡介434
28.2gd庫的配置434
28.3一個簡單圖像創建程序436
28.4gd庫的應用實例437
28.4.1使用gd庫創建圖片縮略圖437
28.4.2使用gd庫生成驗證碼439
28.4.3使用gd庫下載遠程圖片441
28.4.4使用gd庫為頁面增加水印441
28.5小結442
上一章介紹了如何使用gd庫來創建圖像。使用gd庫提供的各種函數可以生成多種圖像,但是,如果需要在php中創建一些統計圖,使用gd庫就顯得很麻煩了。本章将要介紹一種專門用于輸出統計圖的jpgraph庫。該庫在數據統計等方面有很大優勢。在實際應用中,可以很容易使用jpgraph生成大方得體的統計圖。
29.1jpgraph簡介443
29.2jpgraph的安裝與配置443
29.2.1jpgraph的安裝443
29.2.2jpgraph的配置444
29.3jpgraph繪制統計圖實例444
29.3.1簡單的x-y坐标圖444
29.3.2改進的x-y坐标圖447
29.3.3柱形圖450
29.3.4餅圖451
29.3.53d餅圖452
29.4jpgraph應用實例——工廠銷量查詢系統453
29.5小結457
第30章php訪問ldap服務器458
ldap的全稱是“輕量級目錄訪問協議(lightweightdirectoryaccessprotocol)”,是一種簡單的目錄協議。所謂目錄,是一種專門的數據庫,可以服務于任何應用程序。在企業應用中使用ldap可以讓企業範圍内的所有應用程序從LDAP目錄中獲取信息,使應用程序可以通過網絡直接從ldap目錄獲取信息,而不再局限于操作系統與服務器的類型。本章将主要介紹如何使用php來訪問ldap。
30.1ldap簡介458
30.2ldap服務器的安裝與配置459
30.2.1openldap的安裝459
30.2.2openldap的配置460
30.2.3openldap的啟動與關閉461
30.2.4openldap的數據操作462
30.2.5phpldapadmin簡介463
30.3php中ldap擴展的配置464
30.4php與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
在實際應用中,通常需要使用郵件系統來與網站的訪問者交流。例如,一個網站的新注冊用戶可以通過郵件來獲取注冊确認信息,也可以通過郵件來找回密碼等。因此,在一些常見的網站系統中,往往包含郵件發送的功能。本章将介紹如何使用php來發送郵件。
31.1php郵件發送功能配置473
31.1.1php中的smtp功能配置473
31.1.2建立自己的smtp服務器474
31.2php中的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優化器ZendOptimizer484
32.1.1zendoptimizer的安裝484
32.1.2zendoptimizer的配置486
32.2加速器phpaccelerator487
32.2.1phpaccelerator的安裝487
32.2.2phpaccelerator的配置488
32.3開源的優化器turckmmcache488
32.3.1turckmmcache的安裝489
32.3.2turckmmcache的配置489
32.4開源的加速器eaccelerator490
32.5小結490
第4篇php與實際項目
第33章用php構建内容管理系統cms492
cms是“内容管理系統(contentmanagementsystem)”的縮寫,任何基于内容的網站系統都可以稱為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.4html編碼轉換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
互聯網時代是一個信息爆炸的時代,面對着信息高速膨脹的互聯網,怎樣快捷有效地得到自己所需要的信息成為了一個關鍵的課題。于是,各種各樣的搜索引擎在互聯網上誕生了出來,例如,google、yahoo和百度等,都是流行的搜索引擎。這些搜索引擎已經逐漸成為人們生活不可或缺的一部分。
本章将要介紹如何使用php來進行信息搜索,以及調用這些現有的搜索引擎進行搜索。
34.1php對數據庫數據的搜索526
34.1.1數據庫創建526
34.1.2搜索頁面的設計527
34.1.3内容顯示頁面的設計528
34.1.4系統集成的調度策略529
34.2php對文本文件的搜索530
34.3php對現有搜索引擎的調用531
34.4小結533
oa是辦公自動化(officeautomation)的縮寫。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
上一章介紹了如何使用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系統和流程管理系統。目前常見的企業級系統還包括資源管理系統(enterpriseresourcemanagementsystem,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.1gb2312與gbk612
38.1.2unicode、ucs與utf-8612
38.1.3網頁編碼的實現613
38.2gls設計思想簡介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
在互聯網發達的今天,網民的數量也在高速增長,越來越多的大型網站通過将各種數據資源和互聯網資源結合起來構成了門戶網站。門戶網站通過将新聞系統、聊天室、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的擴展應用
前面介紹了使用php構建服務器端頁面,用戶可以通過浏覽器訪問遠程服務器上的php頁面來實現與服務器的交互操作。除此之外,php還可以用來開發網絡客戶端,用戶可以在自己的主機上訪問遠程服務器,甚至可以通過命令行來與遠程服務器進行交互。本章将介紹如何使用php訪問遠程web服務器和ftp服務器,以及使用命令行來運行php代碼。
40.1php訪問遠程web頁面640
40.1.1fsockopen函數640
40.1.2一個遠程提交數據的實例641
40.2php訂閱rss642
40.2.1下載遠程rss642
40.2.2rss的解析與保存643
40.3php訪問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.4php的命令行模式648
40.4.1php命令行程序簡介648
40.4.2執行參數的獲取649
40.4.3一個使用命令行方式訪問ftp的實例649
40.5小結652
第41章php與xml-rpc、soap653
前面介紹了如何通過訪問php頁面來實現與服務器的交互。除此之外,php還支持開發供程序調用的接口頁面。通過這些接口,遠程程序可以很容易地實現與服務器的交互操作,而不需要複雜地通過對一般頁面進行讀取來進行交互。本章将介紹兩種最常見的遠程調用的技術以及使用php的實現方法。
41.1xml-rpc簡介653
41.1.1客戶端請求的xml格式653
41.1.2服務器響應的xml格式656
41.1.3錯誤信息的xml格式656
41.2php與xml-rpc的結合實例657
41.2.1php的xml-rpc庫介紹657
41.2.2php服務器端頁面的編寫658
41.2.3php客戶端頁面的編寫659
41.3soap簡介659
41.4php的soap應用實例660
41.4.1soap擴展庫的使用方法660
41.4.2服務器端的編寫661
41.4.3客戶端的編寫662
41.5小結662
第42章php與webservice663
上一章介紹了如何使用php通過xml-rpc和soap進行遠程訪問以及遠程過程調用的方法,這些技術不單單實現了通過浏覽器對頁面的直接訪問,而且提供了可供程序調用的函數為客戶端程序提供了便利。這種技術往往被稱為webservice,在互聯網技術發展的今天,webservice提供了一種可編程的數據接口方便了其他程序或客戶端的調用。本章将介紹webservice技術以及如何使用php來實現。
42.1webservice簡介663
42.2wsdl、uddi與webservice664
42.2.1wsdl簡介664
42.2.2uddi簡介664
42.3php與webservice的交互操作665
42.3.1NuSOAP類庫665
42.3.2php創建webservice666
42.3.3php訪問webservice668
42.4小結670
第43章php與ajax671
ajax是近年來剛剛流行起來的一種技術,全稱是asynchronousjavascriptandxml(異步javascript和xml)。ajax是多種技術的綜合應用,主要包括javascript技術、xml技術、dom技術和xmlhttprequest控件等。ajax作為web2.0的一個重要技術,大大推動了web技術的發展。本章将結合php來簡要介紹一下ajax的一些常見應用。
43.1ajax簡介671
43.1.1ajax工作原理671
43.1.2ajax的優勢與劣勢672
43.2xmlhttprequest的使用672
43.2.1ajax初始化672
43.2.2xmlhttprequest的屬性和方法673
43.2.3簡單的服務器請求674
43.2.4html文件的讀取675
43.2.5xml文件的讀取677
43.3php與ajax的交互679
43.3.1使用get方式與php交互679
43.3.2使用post方式與php交互681
43.4ajax應用實例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
本書前面的章節介紹了php的開發與應用。在進行php開發時,有時難免遇到無法使用php解決或很難使用php來解決的問題,這時就需要使用php擴展功能來擴展php的功能了。本章将簡要介紹如何在windows平台下進行php擴展的開發。
44.1php擴展開發簡介694
44.2使用visualc++編寫php擴展694
44.2.1php擴展開發的前期準備695
44.2.2php擴展代碼模闆的生成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