PHP開發手冊

PHP開發手冊

電子工業出版社出版圖書
《PHP開發手冊》由孫鵬程編着,電子工業出版社編着,全面、系統地介紹了PHP實戰開發方方面面的技術。
  • 書名:PHP開發手冊
  • 别名:
  • 作者:孫鵬程
  • 類别:
  • 原作品:
  • 譯者:
  • 出版社:電子工業出版社
  • 頁數:702頁
  • 定價:
  • 開本:16
  • 裝幀:平裝
  • ISBN:9787121122934
  • 價格:¥99.00
  • 語種:中文
  • 字數:1126000
  • 類型:計算機與互聯網

内容簡介

本書從易到難、由淺入深、循序漸進、系統地介紹了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

相關詞條

相關搜索

其它詞條