PHP 5完全攻略

《PHP 5完全攻略》是2010年電子工業出版社出版的圖書,作者是杜江。

內容簡介

《PHP 5完全攻略(暢銷書升級版)》是目前第一本真正介紹PHP 5及MySQL 5新增語法與功能的中文版本權威寶典!《PHP 5完全攻略(暢銷書升級版)》本著精、全、要三宗旨,從理論中延伸,從實踐中深入,翔實並完善地描述了PHP 5的開發特性與MySQL 5資料庫。《PHP 5完全攻略(暢銷書升級版)》分為兩大部分,第1部分主要闡述PHP開發的基礎知識,如PHP數組與表單處理、PHP 5面向對象開發、Ajax、CLI、字元流處理、加密技術、圖片處理及PHP代碼最佳化,以及存儲過程、游標、事務等進階內容;書中第2部分的開發實例是作者開發的原創作品,該部分內容不僅會令讀者的開發水平有所增進,而且可在案例的基礎上進行二次開發,做出符合自己業務的網站系統。

《PHP 5完全攻略(暢銷書升級版)》既可作為初學者或剛剛從其他語言轉做PHP開發的程式設計師和軟體工程師的學習參考書,也可作為掌握PHP 5的進階套用及高級知識的案上學習指南。

編輯推薦

《PHP 5完全攻略(暢銷書升級版)》:徹夜不眠的封閉開發,睡夢中還在思考的業務聚合,除了加油努力,有時候我們忘了還要什麼,那不僅是客戶端和伺服器的腳泰,還有我們的真愛,還有想要的生活,謹以《PHP 5完全攻略(暢銷書升級版)》獻給所有辛勤工作、努力學習的PHP開發者。

媒體推薦

對所有的PHPer來說,這是一本極好的書。杜江先生手持利刃,將PHP 5的主方面面給大家一一剖析,並輔以實例,一深入淺出,更淺顯易懂,因而本書很適合PHP初學者閱讀學習,同時對PHP工作者來說,這也是一本非常有價值的案頭寶典。衷心祝願每位讀者都能通過這本書掌握PHP這把利刃!

——愛好者網技術總監 喬楚

PHP與MySQL已經是一個世界流行的Web開發黃金組合,杜江先生在書中結合了大量實際開發 經驗,由淺至I深,結合大量實例全方位闡述了PHP 5和MySQL 5。本書既是初學者全面學習和深入掌握PHP 5的教學材料,也可作為專業PHP工作者的參考手冊,特向廣大PHPer推薦。

——聖博網總工程師 馬明練

感謝杜江先生為廣大PHP開發者和愛好者帶來如此詳細且實用的書。趕集網是由PHP 5和MySQL 5開發的,這其中有杜江先生工作的很多成果。希望這本書能讓更多喜愛PHP朋友更快更深入地掌握PHP,進而湧現更多基礎紮實、功力深厚的PHP人才。

——趕集網技術主管 李靜

英才輩出,匯聚極品。杜江先生是在英極奮鬥中的精英人才之一,有著豐富的項目開發經驗,PHP功底深厚,諳熟大型網部構建,關於使用Open Source軟體構建分布套用。這本《PHP 5完全攻略》是他多年工作經驗的總結,希望這本書能成為眾多PHP技術書中的不二之選。

——英極軟體技術總監 王昕宇

目錄

第1部分 PHP 5基礎

第一篇 PHP 5基礎知識

第1章 PHP 5概述 3

1.1 什麼是PHP 3

1.1.1 PHP的歷史 3

1.1.2 PHP的優點 4

1.1.3 PHP的精神 5

1.1.4 PHP與Web 2.0 6

1.2 PHP 5的新特性 7

1.2.1 新的面向對象模式 7

1.2.2 新的面向對象特性 7

1.2.3 其他新特性 11

1.2.4 PHP 5.3新特性 12

1.2.5 MySQL 5.1新特性 12

1.3 PHP 5的擴展庫 13

1.3.1 XML擴展 13

1.3.2 SPL 14

1.3.3 MySQLi擴展 15

1.3.4 PDO資料庫抽象層 15

1.3.5 JSON擴展 15

1.4 PHP 5外部擴展庫 15

1.4.1 PECL擴展 15

1.4.2 PEAR擴展 16

1.5 PHP 5的其他更新 16

1.5.1 Zend引擎2.x 16

1.5.2 新的記憶體管理器 16

1.5.3 Zend Optimizer與Zend Core 17

1.6 PHP與WEB伺服器 17

1.6.1 Apache 17

1.6.2 Microsoft IIS 17

1.6.3 其他Web伺服器 18

1.7 PHP 5安裝與配置 18

1.7.1 Win32平台下Apache環境安裝 18

1.7.2 Win32平台下IIS環境安裝 35

1.7.3 使用集成化安裝包 38

1.7.4 FreeBSD平台 39

1.7.5 Linux平台 45

1.8 PHP配置與初步最佳化 48

1.9 其他需注意的問題 48

1.10 PHP開發工具 49

1.11 小結 54

第2章 PHP 5開發基礎 55

2.1 PHP初相遇 55

2.2 幾個技術點 56

2.2.1 PHP語句 57

2.2.2 空格與空行 57

2.2.3 注釋 57

2.2.4 函式調用 58

2.3 變數與變數名 58

2.4 變數的賦值 59

2.5 變數的引用賦值 59

2.6 PHP的數據類型 60

2.7 標量數據類型 60

2.7.1 整型 60

2.7.2 浮點型 60

2.7.3 字元串型 61

2.7.4 布爾型 61

2.8 複合數據類型 61

2.8.1 數組 61

2.8.2 對象 62

2.9 特殊數據類型 63

2.9.1 NULL 63

2.9.2 資源 63

2.10 變數列印與輸出 64

2.10.1 使用echo函式 64

2.10.2 使用print函式 64

2.10.3 echo和print的區別 64

2.10.4 使用printf函式 65

2.10.5 使用sprintf函式 65

2.10.6 顯示數組與對象 66

2.11 變數操作符 67

2.11.1 算術運算符 67

2.11.2 賦值操作符 68

2.11.3 字元串連線 68

2.11.4 字元串換行連線 68

2.11.5 花括弧的作用 69

2.11.6 單引號與雙引號 70

2.11.7 HereDoc 70

2.11.8 轉義操作符 71

2.11.9 格式控制符 71

2.11.10 遞增與遞減操作符 72

2.11.11 三元操作符 72

2.11.12 比較運算符 73

2.11.13 布爾運算符 74

2.11.14 位操作符 75

2.12 數據類型自動轉換 76

2.13 數據類型強制轉換 77

2.13.1 轉換為整型數據 78

2.13.2 用intval()函式取整 78

2.13.3 轉換為浮點型數據 78

2.13.4 轉換為布爾型數據 79

2.13.5 轉換為字元串型數據 79

2.13.6 轉換為數組 79

2.13.7 轉換為對象 80

2.14 超級全局數組 80

2.14.1 $_SERVER超級全局變數數組 81

2.14.2 修改全局數組的值 84

2.15 變數與腳本處理 84

2.15.1 使用isset()函式檢測變數定義 84

2.15.2 使用unset()函式刪除變數 85

2.15.3 使用empty()函式檢測變數值是否為空 85

2.15.4 其他檢測類函式族 85

2.16 常量 85

2.16.1 定義常量 86

2.16.2 PHP魔術常量 86

2.17 PHP的控制結構 87

2.17.1 分支結構語句 87

2.17.2 循環結構語句 92

2.18 包含控制語句 97

2.18.1 include與require 97

2.18.2 include_once與require_once 98

2.18.3 eval() 98

2.18.4 中止腳本的執行:exit()與die() 99

2.19 函式 99

2.19.1 函式的命名 100

2.19.2 函式的結構 100

2.19.3 從函式中返回值 101

2.19.4 函式參數的傳遞 102

2.19.5 函式與全局變數 106

2.19.6 函式的靜態變數 107

2.19.7 函式中使用常量 108

2.19.8 遞歸函式 109

2.19.9 解決函式重名的方法 109

2.20 可變變數 110

2.21 字元串操作 110

2.21.1 手動轉義字元串數據 110

2.21.2 自動轉義字元串數據 111

2.21.3 數值轉換字元串 112

2.21.4 字元串序列化 112

2.21.5 清理字元串中的空格 113

2.21.6 格式化字元串 114

2.21.7 字元串切分 114

2.21.8 字元串截取 115

2.21.9 計算字元串的長度 115

2.21.10 字元串單詞統計 116

2.21.11 字元串查找 117

2.21.12 字元串處理 118

2.22 日期與時間 123

2.22.1 UNIX時間戳 123

2.22.2 日期函式 124

2.22.3 時間函式 127

2.23 網路相關處理 130

2.23.1 header()函式 130

2.23.2 處理URL字元串 132

2.23.3 獲得PHP環境信息 134

2.24 其它操作符 135

2.24.1 @-錯誤抑制符 135

2.24.2 執行外部命令 135

2.25 小結 136

第3章 正則表達式 137

3.1 正則表達式簡介 137

3.2 正則表達式功能 137

3.3 POSIX正則表達式 138

3.3.1 ^和$定位符 138

3.3.2 POSIX量詞 138

3.3.3 方括弧表達式 139

3.3.4 預定義字元簇 140

3.3.5 POSIX正則表達式函式 140

3.4 PCRE正則表達式函式 142

3.4.1 PCRE字元類 142

3.4.2 PCRE匹配 142

3.4.3 PCRE正則表達式函式 143

3.5 正則表達式VS函式 149

3.6 創建BBCODE 149

3.7 小結 150

第4章 PHP數組 151

4.1 什麼是數組 151

4.2 數組的類型 152

4.2.1 數字索引數組 152

4.2.2 關聯數組 152

4.3 數組的構造 153

4.3.1 一維數組 153

4.3.2 二維數組與多維數組 154

4.3.3 多維數組 159

4.4 快速創建數組 161

4.4.1 使用range()函式 161

4.4.2 為數組追加數據 162

4.4.3 修改數組內容 162

4.5 訪問和處理數組內容 162

4.5.1 數字索引數組排序 162

4.5.2 關聯數組排序 163

4.5.3 數組隨機抽取shuffle()和array_rand() 164

4.5.4 統計數組元素出現的次數 165

4.5.5 數組聯合array_combine 166

4.5.6 數據合併array_merge 166

4.5.7 查找數組中鍵名是否存在 167

4.5.8 查找數組值是否存在 168

4.5.9 計算數組中數值元素的和 169

4.5.10 去除數組中重複的元素值 169

4.5.11 移動數組內部指針 170

4.5.12 取得關聯數組的鍵名 170

4.5.13 訪問數組的鍵名和元素 170

4.5.14 判斷數組的類型 171

4.5.15 顯示數組內容與結構 171

4.5.16 移除數組中的指定元素 173

4.5.17 在數組頂部插入元素 174

4.5.18 在數組任意位置插入元素 174

4.5.19 數組元素的統計count()函式和sizeof()函式 175

4.5.20 數組鍵名與值的對調array_flip()函式 175

4.5.21 對數組元素分組統計array_values()函式 176

4.5.22 刪除數組首末尾元素 177

4.5.23 刪除數組中任意位置的元素 177

4.5.24 將數組內容導出為變數extract()函式 179

4.6 數組遍歷(使用FOREACH) 180

4.6.1 一維索引數組的遍歷 180

4.6.2 一維關聯數組的遍歷 181

4.7 使用FOR語句對數組遍歷 182

4.8 使用FOR語句實現樹狀選單 182

4.9 數組遍歷LIST()和EACH() 184

4.10 數組復位RESET()函式 185

4.10.1 each() 185

4.10.2 list() 185

4.11 FOREACH與FOR語句對數組處理的比較 186

4.12 數組內容過濾 186

4.13 小結 188

第二篇 PHP 5核心套用與規範

第5章 表單——處理用戶輸入 190

5.1 表單與HTML 190

5.2 表單與PHP 190

5.3 表單設計 191

5.3.1 文本框 191

5.3.2 密碼文本框 191

5.3.3 單選項 192

5.3.4 複選項 192

5.3.5 下拉列表 193

5.3.6 表單屬性 194

5.3.7 提交與復位按鈕 194

5.4 GET與POST方法 195

5.4.1 使用GET方法 195

5.4.2 使用POST方法 199

5.4.3 POST方法和GET方法混合使用 200

5.4.4 POST方法和GET方法的區別 202

5.4.5 選擇POST還是GET 202

5.5 動態生成表單 202

5.6 表單的處理方法 205

5.6.1 檢查表單提交的來源 205

5.6.2 一個完整表單處理 206

5.7 其他處理表單的方法 208

5.7.1 使用import_request_variables()函式 208

5.7.2 使用extract()函式 209

5.8 多頁面間傳遞數據 210

5.9 驗證表單數據 210

5.9.1 客戶端驗證 210

5.9.2 伺服器端驗證 211

5.9.3 避免表單重複提交 211

5.9.4 表單過期的處理 213

5.9.5 判斷表單動作的技巧 213

5.10 表單安全 214

5.10.1 處理全局性錯誤 214

5.10.2 預防SQL注入 217

5.11 開發安全的代碼 218

5.11.1 用戶輸入驗證 218

5.11.2 高級數據驗證:使用ctype 218

5.11.3 數據過濾 - PECL filter擴展 219

5.11.4 input_get()函式 220

5.11.5 路徑檢測 221

5.11.6 魔法引用magic_quotes_gpc 221

5.11.7 其他高效的解決方案 221

5.12 小結 222

第6章 PHP加密技術 223

6.1 MD5算法 223

6.2 SHA-1算法 223

6.3 CRACKLIB擴展庫 224

6.4 MCRYPT擴展與DES算法 224

6.4.1 mcrypt加密擴展 225

6.4.2 mcrypt加密模式 225

6.4.3 mcrypt初始化向量 226

6.4.4 mcrypt加密與解密方法 227

6.5 小結 228

第7章 PHP國際化與本地化 229

7.1 I18N和L10N 229

7.2 字元集與編碼 229

7.2.1 ASCII字元集 230

7.2.2 ISO-8859字元集 230

7.2.3 ANSI編碼 230

7.2.4 GB2312與GBK編碼 230

7.2.5 Unicode字元集 231

7.2.6 正確使用檔案編碼 232

7.3 GETTEXT擴展庫 232

7.3.1 設定gettext 233

7.3.2 php_gettext函式集 233

7.3.3 編寫I18N程式 233

7.3.4 設定gettext po檔案 234

7.4 系統本地化函式族 236

7.4.1 setlocale()函式 236

7.4.2 貨幣值本地化 237

7.4.3 使用pc_format_currency( )函式 238

7.5 ICONV()函式 239

7.6 MBSTRING擴展庫 240

7.6.1 使用mbstring進行字元串截取 240

7.6.2 檢測字元串編碼 241

7.6.3 mbstring轉換編碼 241

7.7 小結 242

第8章 PHP開發規範 243

8.1 代碼結構 243

8.1.1 一個腳本服務全部 243

8.1.2 分離顯示邏輯 244

8.2 良好的編碼風格與樣式 244

8.2.1 代碼注釋 245

8.2.2 代碼縮進 246

8.2.3 使用必要的空格 246

8.2.4 SQL編寫規範 247

8.2.5 控制結構 247

8.2.6 函式的命名 247

8.2.7 類命名規範 248

8.2.8 減少出錯的技巧 248

8.3 小結 249

第9章 PHP 5面向對象開發 250

9.1 面向對象基礎 250

9.2 PHP 5 面向對象編程概述 251

9.2.1 類的封裝 251

9.2.2 類的繼承 251

9.3 對象 251

9.4 創建和使用類 252

9.5 類的結構與定義 252

9.6 成員方法 252

9.7 成員變數與屬性 253

9.8 $THIS關鍵字 254

9.9 構造方法 254

9.10 析構方法 256

9.11 類的繼承與多態 256

9.11.1 類的繼承——extends 256

9.11.2 數據的隱藏 258

9.11.3 訪問成員變數的約束 258

9.11.4 設定訪問成員方法 259

9.11.5 類常量 260

9.11.6 靜態成員變數 260

9.11.7 靜態成員方法 262

9.12 對象傳遞 262

9.13 克隆一個對象——CLONE 263

9.14 對象的比較 263

9.15 對象類型的檢測——INSTANCEOF 264

9.16 克隆一個成員方法 264

9.17 類的多態性 265

9.18 PARENT::與SELF::關鍵字 267

9.19 抽象方法與抽象類 267

9.20 接口的實現 269

9.21 實現多個接口 270

9.22 FINAL方法 272

9.23 FINAL類 272

9.24 例外與異常處理 273

9.25 方法中聲明類的類型 274

9.26 重載與多態 275

9.27 魔術方法 275

9.27.1 _ _get()與_ _set()方法 275

9.27.2 _ _call()方法 276

9.27.3 _ _sleep()與_ _wakeup()方法 277

9.27.4 _ _toString()方法 277

9.27.5 _ _autoload()方法 278

9.28 類映射API REFLECTION 279

9.29 小結 286

第10章 PHP會話管理 287

10.1 概述 287

10.2 COOKIE管理 287

10.2.1 什麼是Cookie 288

10.2.2 Cookie工作原理 288

10.2.3 Cookie套用開發 288

10.2.4 一個通用的Cookie類 292

10.2.5 解決方案 293

10.3 SESSION管理 294

10.3.1 什麼是Session 294

10.3.2 Session配置 295

10.3.3 Session套用 297

10.3.5 Session編碼與解碼 300

10.3.6 Session中保存數組 300

10.3.6 Session中保存對象 301

10.3.7 Session存取最佳化 303

10.3.8 多伺服器下共享Session 304

10.3.9 Session安全 307

10.4 小結 308

第11章 PHP輸入輸出緩衝 309

11.1 緩衝技術簡介 309

11.2 從緩衝讀取內容 310

11.3 使用回調函式 311

11.4 輸出回調函式 311

11.5 壓縮內容輸出 312

11.6 小結 312

第12章 檔案系統與字元流 313

12.1 檔案與路徑 313

12.1.1 分析一個檔案的名稱與擴展名 313

12.1.2 利用PHP自帶函式分析當前路徑 314

12.1.3 顯示相對路徑的真實路徑 314

12.2 檔案類型與相關信息 314

12.2.1 filesize()——計算檔案的大小 315

12.2.2 取得檔案的建立、最後訪問與更新時間 315

12.2.3 fileperms()——檔案屬性以及許可權 315

12.2.4 取得檔案所有者(Owner) 315

12.3 檔案的順序讀寫 315

12.3.1 檔案打開與寫入 315

12.3.2 檔案輸出 317

12.3.3 讀取檔案內容 318

12.4 檔案的非線性讀寫 318

12.4.1 fseek()函式 319

12.4.2 ftell()函式 319

12.4.3 rewind()函式 319

12.4.4 parse_ini_file()函式 320

12.5 自定義日誌記錄 321

12.6 目錄和磁碟操作 321

12.6.1 disk_free_space()——統計某個目錄的剩餘空間 321

12.6.2 disk_total_space()——顯示邏輯磁碟的容量 322

12.6.3 getcwd()/chdir()函式 322

12.6.4 opendir()與readdir()函式 322

12.6.5 實現iterator接口的目錄讀取 323

12.7 字元流 324

12.7.1 流與封裝器的原理 325

12.7.2 PHP 5的預置流包裝器 325

12.7.4 流與封裝器的套用 326

12.7.5 Filter過濾器及其套用 328

12.7.6 流相關函式 330

12.7.7 創建自己的流過濾器 331

12.8 取得HTTPS加密內容 332

12.9 創建自己的流封裝器 333

12.10 小結 334

第三篇 MySQL 5與PHP 5接口

第13章 WEB資料庫設計 336

13.1 資料庫和資料庫系統的概念 336

13.2 資料庫設計的步驟 337

13.3 表名與欄位名規則 338

13.4 小結 339

第14章 MYSQL 5資料庫 340

14.1 MYSQL簡介 340

14.2 MYSQL 5特性 341

14.2.1 MySQL 5優點 341

14.2.2 MySQL 5缺點 341

14.2.3 MySQL 5性能 341

14.3 MYSQL資料庫存儲類型 342

14.4 MYSQL欄位類型 343

14.5 MYSQL字元集與整理 344

14.5.1 MySQL 5字元集支持的原理 344

14.5.2 修改MySQL字元集方法 344

14.6 MYSQL 5套用與管理 345

14.6.1 登錄到MySQL 345

14.6.2 修改root管理密碼 346

14.6.3 創建資料庫 346

14.6.4 改變資料庫存儲路徑 346

14.6.5 MySQL許可權系統 347

14.6.6 phpMyAdmin管理工具 350

14.7 MYSQL管理工具 357

14.8 小結 357

第15章 MYSQL資料庫 358

15.1 MYSQL操作與SQL 358

15.2 檢索表中的數據 361

15.2.1 SELECT 語句 361

15.2.2 SELECT的聚集函式 362

15.2.3 結果集排序 362

15.2.4 函式 362

15.2.5 關聯查詢 362

15.3 高級SQL技術 364

15.3.1 主鍵 364

15.3.2 子查詢 365

15.3.3 聯合查詢 365

15.4 MYSQL事務處理與觸發器 365

15.4.1 存儲進程 365

15.4.2 觸發器(trigger) 366

15.4.3 視圖 366

15.4.4 PHP與MySQL字元集 367

15.5 小結 368

第16章 PHP與MYSQL 369

16.1 PHP5與MYSQL連線的MYSQL擴展 369

16.2 資料庫查詢 370

16.3 其他顯示記錄集的函式 372

16.4 PHP 5與MYSQL的新接口MYSQLI 375

16.5 智慧型選擇MYSQL擴展 384

16.6 小結 387

第17章 PHP資料庫抽象層 388

17.1 什麼是資料庫抽象層 388

17.2 常用的資料庫抽象層 389

17.2.1 PEAR:DB 389

17.2.2 ADODB 390

17.2.3 Metabase 390

17.2.4 MDB 391

17.2.5 MDB2 391

17.2.6 Creole 392

17.2.7 PDO 392

17.2.8 PHPLib 392

17.3 PDO資料庫抽象類 392

17.3.1 PDO簡介 392

17.3.2 PDO的安裝 393

17.3.3 PDO連線資料庫 393

17.3.4 使用PDO查詢 394

17.3.5 錯誤與異常處理 395

17.3.6 取得查詢結果 397

17.4 ADODB 401

17.4.1 使用ADODB 401

17.4.2 ADODB安裝 402

17.4.3 啟動ADODB 402

17.4.4 ADODB的查詢方法 403

17.4.5 移動記錄集 403

17.4.6 使用ADODB生成HTML 404

17.4.7 使用ADODB進行分頁 404

17.4.8 生成下拉選擇選單 404

17.4.9 ADODB開發實例 404

17.5 PHPLIB 416

17.5.1 使用PHPLib查詢 416

17.5.2 創建GetAll方法 418

17.6 小結 419

第四篇 PHP 5進階與技巧

第18章 SMARTY與模板技術 421

18.1 MVC簡介 421

18.2 模板系統 422

18.3 SMARTY概述 422

18.3.1 Smarty的優點 422

18.3.2 Smarty開發特性 423

18.4 安裝SMARTY 423

18.5 SMARTY開發基礎 425

18.5.1 第一個模板程式 425

18.5.2 編譯後的模板 426

18.5.3 Smarty區塊 427

18.5.4 Smarty注釋 427

18.5.5 Smarty變數與變數格式化 427

18.6 SMARTY的控制結構 430

18.6.1 IF分支結構 430

18.6.2 循環結構 432

18.6.3 Smarty生成表單元素 440

18.6.4 Smarty檔案包含 442

18.7 SMARTY快取 443

18.8 深入SMARTY開發 444

18.8.1 register_function 444

18.8.2 register_block 444

18.8.3 register_modifier 444

18.8.4 在模板內運行PHP代碼 445

18.8.5 幾個重要的模板修飾符 445

18.8.6 Smarty的保留變數 446

18.8.7 模板配置檔案 447

18.8.8 Smarty工作檯 447

18.8.9 Smarty生成靜態頁面 448

18.8.10 製作線上日曆 448

18.8.11 Smarty與ADODB 449

18.9 小結 451

第19章 PHP和AJAX技術 452

19.1 AJAX簡介 452

19.2 AJAX特性 453

19.3 XAJAX簡介 453

19.4 XAJAX如何工作 453

19.5 異步更新內容 454

19.6 異步處理表單數據 456

19.7 增加自定義功能 457

19.8 解決亂碼 457

19.9 SMARTY與XAJAX 457

19.10 小結 459

第20章 使用PHP編寫SHELL 460

20.1 簡介 460

20.2 PHP CLI SHELL腳本 460

20.2.1 CLI 與CGI的區別 460

20.2.2 CLI的配置參數 460

20.3 PHP命令行接口(CLI) 461

20.4 CLI命令選項 462

20.5 CLI開發 463

20.6 CLI實際套用 467

20.7 小結 470

第21章 PHP網路開發 471

21.1 SOCKET技術 471

21.1.1 Socket原理 471

21.1.2 建立一個連線 472

21.1.3 傳送一個請求 472

21.1.4 查詢Whois信息 473

21.1.5 創建自己的Socket伺服器 474

21.2 電子郵件 475

21.2.1 電子郵件簡介 475

21.2.2 MTA和SMTP 475

21.2.3 PHP郵件配置 476

21.2.4 電子郵件頭 477

21.2.5 MIME 477

21.3 使用MAIL()函式 479

21.4 使用SOCKET傳送郵件 481

21.5 獲取遠程內容與自動化 482

21.5.1 使用CURL 482

21.5.2 使用Snoopy類 484

21.5.3 FTP操作 486

21.5.4 PHP與網路協定 488

21.6 小結 488

第22章 PHP檔案上傳 489

22.1 檔案上傳簡介 489

22.2 處理上傳檔案 490

22.3 處理多檔案上傳 494

22.4 突破上傳的記憶體限制 496

22.5 小結 496

第23章 圖片與媒體處理 497

23.1 使用GD2擴展庫 497

23.1.1 打開一張圖片 498

23.1.2 打開任意格式的圖片 498

23.1.3 顯示和保存圖片 499

23.1.4 圖片轉換 500

23.1.5 創建文字圖片 501

23.1.6 繪製圖形 502

23.1.7 創建驗證碼——CAPTCHA 503

23.1.8 縮略圖片處理 504

23.1.9 創建水印圖片 506

23.2 使用MING擴展創建FLASH 508

23.2.1 創建按鈕 508

23.2.2 靜態文字 509

23.2.3 動態文字 510

23.2.4 繪製圖形 511

23.2.5 使用圖片 512

23.3 使用IMAGEMAGICK 513

23.3.1 ImageMagick簡介 513

23.3.2 安裝ImageWand 514

23.3.3 讀取圖片內容 514

23.3.4 讀取圖片尺寸 515

23.3.5 圖片裁切 515

23.3.6 生成圖片縮略圖 515

23.3.7 轉換圖片格式 516

23.3.8 控制圖片旋轉 516

23.3.9 重新縮放圖片 517

23.3.10 加入渲染效果 517

23.3.11 壓縮JPEG圖片 518

23.4 小結 518

第24章 XML與RSS 519

24.1 XML 519

24.1.1 XML的結構與定義 519

24.1.2 XML與HTML 520

24.2 創建與解析XML文檔 521

24.2.1 創建一個XML文檔 522

24.2.2 使用SAX解析XML 523

24.2.3 DOM 525

24.2.4 SimpleXML 529

24.3 RSS聚合與解析技術 530

24.3.1 RSS簡介 530

24.3.2 RSS 0.9 530

24.3.3 RSS3 1.0 531

24.3.4 RSS 2.0 532

24.3.5 Atom 534

24.4 XML READER 536

24.5 XML與SMARTY 537

24.6 小結 537

第25章 WEB服務與SOAP 538

25.1 WEB服務 538

25.1.1 Web服務概述 538

25.1.2 Web服務的特點 539

25.2 SOAP的訊息體 540

25.2.1 SOAP封套(SOAP Envelope) 540

25.2.2 SOAP頭(SOAP Header) 540

25.2.3 SOAP錯誤信息(SOAP Fault) 540

25.2.4 訊息體(SOAP Body) 541

25.3 PHP中的SOAP配置 541

25.4 使用PHP開發SOAP套用 542

25.4.1 WSDL 542

25.4.2 建立SOAP伺服器端 545

25.4.3 建立SOAP客戶端 546

25.5 小結 546

第26章 PHP與WAP技術 547

26.1 WAP技術簡介 547

26.2 WAP配置 547

26.3 WAP頁面 548

26.3.1 WAP頁面簡介 548

26.3.2 WAP頁面跳轉 548

26.3.3 使用WAP製作登錄頁面 550

26.4 SMARTY與WAP 554

26.5 小結 554

第五篇 PHP 5調試、升級與最佳化

第27章 錯誤與異常處理 556

27.1 概述 556

27.2 錯誤的類型 556

27.2.1 編程錯誤 556

27.2.2 未定義符號 557

27.2.3 輕量級錯誤 559

27.2.4 PHP產生的錯誤 560

27.2.5 錯誤與例外處理 562

27.3 小結 567

第28章 升級到PHP5 568

28.1 簡介 568

28.2 對象的引用 568

28.3 構造對象 569

28.4 GET_CLASS()函式 569

28.5 IS_A()函式與INSTANCE OF 569

28.6 E_STRICT 570

28.6.1 自動建立對象 570

28.6.2 var與public 570

28.7 其他兼容性的問題 570

28.7.1 命令行接口 570

28.7.2 舊的超級全局數組的升級 570

28.7.3 函式修正與功能升級 571

28.8 小結 571

第29章 PHP最佳化技巧 572

29.1 PHP腳本級最佳化 572

29.1.1 require比require_once快 573

29.1.2 不做重複的車輪 573

29.2 使用代碼最佳化工具 574

29.3 快取加速 575

29.3.1 使用eAccelerator 575

29.3.2 使用APC 577

29.4 HTTP加速 578

29.4.1 HTTP頭信息 578

29.4.2 啟用GZIP內容壓縮 578

29.5 MYSQL性能最佳化 578

29.5.1 添加索引 578

29.5.2 MySQL快取與性能調優 579

29.6 MYSQL日誌維護 581

29.7 資料庫外部最佳化 581

29.7.1 伺服器硬體最佳化 581

29.7.2 磁碟最佳化 582

29.7.3 作業系統最佳化 582

29.8 使用反向代理 582

29.9 APACHE伺服器最佳化 583

29.10 內容壓縮與最佳化 583

29.11 分布與負載均衡 584

29.12 小結 586

第2部分 實戰PHP5

第30章 實例開發:會員 589

30.1 概述 589

30.2 頁面流程 589

30.2.1 用戶註冊流程 589

30.2.2 用戶登錄流程 590

30.3 資料庫結構 590

30.4 UI與界面 593

30.5 目錄結構與檔案說明 595

第31章 實例開發: 603

31.1 目錄結構與檔案說明 603

31.2 頁面流程 603

31.2.1 創建圈子 603

31.2.2 管理圈子 604

31.2.3 加入其他人創建的圈子 605

31.3 資料庫結構 605

31.4 UI與界面 608

第32章 實例開發:愛問系統 610

32.1 概述 610

32.2 頁面流程 610

32.3 目錄結構與檔案說明 612

32.4 UI與界面 613

32.5 資料庫結構 617

第33章 實例開發:多用戶 619

33.1 概述 619

33.2 目錄結構與檔案說明 619

33.3 頁面流程 620

33.4 UI與界面 620

33.5 資料庫結構 621

33.6 小結 623

附錄A PHP線上資源 592

附錄B Zend Core安裝 593

附錄C PHP擴展開發 599

附錄D MySQL字元集與整理 601

附錄E 代碼頁與Charset對照表 605

附錄F php.ini配置詳解 606

附錄G HTTP返回代碼表(RFC2068) 626

相關詞條

熱門詞條

聯絡我們