第一篇 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的新特性 6
1.2.1 新的面向對象模式 7
1.2.2 新的面向對象特性 7
1.2.3 其他新特性 10
1.3 PHP 5的擴展庫 11
1.3.1 XML擴展 12
1.3.2 SPL 13
1.3.3 MySQLi擴展 13
1.3.4 PDO數據庫抽象層 13
1.3.5 JSON擴展 13
1.4 PHP 5外部擴展庫 14
1.4.1 PECL擴展 14
1.4.2 PEAR擴展 14
1.5 PHP 5的其他更新 14
1.5.1 Zend引擎2.0 14
1.5.2 新的內存管理器 14
1.5.3 Zend Optimizer與Zend Core 14
1.6 PHP與Web服務器 15
1.6.1 Apache 15
1.6.2 Microsoft IIS 15
1.6.3 其他Web服務器 15
1.7 PHP 5安裝與配置 15
1.7.1 Win32平台下Apache環境安裝 16
1.7.2 Win32平台下的IIS環境安裝 36
1.7.3 Win32平台下使用集成化安裝包 39
1.7.4 FreeBSD平台 40
1.7.5 Linux平台 47
1.8 PHP配置與初步優化 49
1.9 其他注意的問題 49
1.10 PHP開發工具 50
1.11 小結 53
第2章 PHP 5開發基礎 54
2.1 第一個PHP腳本 54
2.2 變量與表達式 55
2.2.1 打印與輸出變量 55
2.2.2 顯示數組與對象 57
2.2.3 變量的數據精度 58
2.2.4 變量的變量 59
2.2.5 超級全局變量數組 59
2.2.6 變量的作用域 64
2.3 變量類型 64
2.3.1 布爾型變量 64
2.3.2 NULL數據類型 65
2.3.3 Resource 65
2.3.4 靜態變量 66
2.4 變量操作符 66
2.4.1 算術運算符 67
2.4.2 賦值操作符 67
2.4.3 字符串操作 68
2.4.4 前置與後置的加減運算 68
2.4.5 引用操作符 69
2.4.6 三元操作符 69
2.4.7 比較運算符 69
2.4.8 布爾運算符 70
2.4.9 位操作符 70
2.4.10 其他操作符 70
2.4.11 變量與腳本處理 71
2.4.12 數據轉換 72
2.5 常量 74
2.5.1 常量的定義 75
2.5.2 PHP魔術常量 75
2.6 PHP的控制結構 76
2.6.1 分支語句 76
2.6.2 循環結構 79
2.7 包含控制 83
2.7.1 include與require 83
2.7.2 include_once與require_once 84
2.7.3 eval() 84
2.8 函數 85
2.8.1 PHP內部函數 85
2.8.2 中止腳本的執行:exit()與die() 85
2.8.3 用戶自定義函數 86
2.8.4 函數的命名規則 86
2.8.5 函數的作用域 87
2.8.6 從函數中返回值 87
2.8.7 返回引用的值 88
2.8.8 函數參數的傳遞 89
2.8.9 函數裡的靜態變量 91
2.8.10 函數的遞歸 92
2.8.11 函數命名重復的解決方法 92
2.8.12 創建自己的函數庫 92
2.9 字符串操作 92
2.9.1 單引號與雙引號的區別 92
2.9.2 手動轉義字符串數據 93
2.9.3 自動轉義字符串數據 93
2.9.4 字符串序列化 94
2.9.5 字符串整理 96
2.9.6 格式化字符串 96
2.9.7 字符串分割 96
2.9.8 字符串截取 97
2.9.9 計算字符串長度 98
2.9.10 字符串單詞統計 98
2.9.11 字符串查找 99
2.9.12 字符串處理 101
2.10 日期與時間 106
2.10.1 時間戳 107
2.10.2 PHP日期函數 107
2.10.3 PHP時間函數 109
2.11 網絡相關處理 112
2.11.1 header()函數 112
2.11.2 處理URL字符串 114
2.11.3 獲得用戶來源 116
2.11.4 獲得PHP環境信息 117
2.12 小結 117
第3章 正則表達式 118
3.1 正則表達式簡介 118
3.2 正則表達式功能 118
3.3 POSIX正則表達式 119
3.3.1 ^和$定位符 119
3.3.2 POSIX量詞 119
3.3.3 方括號表達式 120
3.3.4 預定義字符簇 121
3.3.5 POSIX正則表達式函數 121
3.4 PCRE正則表達式函數 123
3.4.1 PCRE字符類 123
3.4.2 PCRE匹配 123
3.4.3 PCRE正則表達式函數 124
3.5 正則表達式VS函數 130
3.6 創建BBCode 130
3.7 小結 131
第4章 PHP數組 132
4.1 什麼是數組 132
4.2 數組的類型 133
4.2.1 數字索引數組 133
4.2.2 關聯數組 133
4.3 數組的構造 134
4.3.1 一維數組 134
4.3.2 二維數組與多維數組 135
4.3.3 多維數組 140
4.4 快速創建數組 142
4.4.1 使用range()函數 142
4.4.2 為數組追加數據 143
4.4.3 修改數組內容 143
4.5 訪問和處理數組內容 143
4.5.1 數字索引數組排序 143
4.5.2 關聯數組排序 144
4.5.3 數組隨機抽取shuffle()和
4.5.3 array_rand() 145
4.5.4 統計數組元素出現的次數 146
4.5.5 數組合並 147
4.5.6 查找數組中鍵名是否存在 147
4.5.7 查找數組值是否存在 147
4.5.8 計算數組中數值元素的和 148
4.5.9 去除數組中重復的元素值 148
4.5.10 移動數組內部指針 149
4.5.11 取得關聯數組的鍵名 150
4.5.12 訪問數組的鍵名和元素 150
4.5.13 判斷數組的類型 150
4.5.14 顯示數組內容與結構 151
4.5.15 移除數組中的指定元素 153
4.5.16 在數組頂部插入元素 153
4.5.17 在數組任意位置插入元素 154
4.5.18 數組元素的統計count()和sizeof()
4.5.18 函數 155
4.5.19 數組鍵名與值的對調array_flip()
4.5.19 函數 155
4.5.20 對數組元素分組統計array_values()
4.5.20 函數 155
4.5.21 刪除數組首末尾元素 156
4.5.22 刪除數組任意位置的元素 157
4.5.23 將數組內容導出為變量extract()
4.5.23 函數 159
4.6 數組遍歷(使用foreach) 159
4.6.1 一維索引數組的遍歷 160
4.6.2 一維關聯數組的遍歷 160
4.7 使用for語句對數組遍歷 161
4.8 使用for語句實現樹狀菜單 162
4.9 數組遍歷list()和each() 164
4.10 數組復位reset()函數 164
4.10.1 each() 164
4.10.2 list() 165
4.11 foreach與for語句對數組處理的比較 165
4.12 數組內容過濾 166
4.13 小結 168
第二篇 PHP 5核心應用與規范
第5章 表單——處理用戶輸入 170
5.1 表單與HTML 170
5.2 設計表單 170
5.3 GET與POST的區別 171
5.4 表單元素 172
5.5 表單的處理方法 174
5.5.1 檢查表單提交的來源 174
5.5.2 一個完整表單處理 175
5.6 其他處理表單的方法 177
5.6.1 使用import_request_variables()
5.6.1 函數 177
5.6.2 使用extract()函數 178
5.7 多頁面間傳遞數據 179
5.8 驗證表單數據 179
5.8.1 客戶端驗證 179
5.8.2 服務器端驗證 180
5.8.3 避免表單重復提交 180
5.8.4 表單過期的處理 181
5.8.5 判斷表單動作的技巧 182
5.9 表單安全 183
5.9.1 處理全局性錯誤 183
5.9.2 預防SQL注入 186
5.10 開發安全的代碼 187
5.10.1 用戶輸入驗證 187
5.10.2 高級數據驗證:使用ctype 187
5.10.3 數據過濾 - PECL filter擴展 187
5.10.4 input_get()函數 189
5.10.5 路徑檢測 189
5.10.6 魔法引用magic_quotes_gpc 190
5.10.7 其他高效的解決方案 190
5.11 小結 191
第6章 PHP加密技術 192
6.1 MD5算法 192
6.2 SHA1算法 192
6.3 Cracklib擴展庫 193
6.4 mcrypt擴展與DES算法 193
6.4.1 mcrypt加密擴展 194
6.4.2 mcrypt加密模式 194
6.4.3 mcrypt初始化向量 195
6.4.4 mcrypt加密與解密方法 195
6.5 小結 197
第7章 PHP國際化與本地化 198
7.1 I18N和L10N 198
7.2 字符集與編碼 198
7.2.1 ASCII字符集 199
7.2.2 ISO-8859字符集 199
7.2.3 ANSI編碼 199
7.2.4 GB2312與GBK編碼 199
7.2.5 Unicode字符集 200
7.2.6 正確使用文件編碼 201
7.3 gettext函數 201
7.3.1 設置gettext 202
7.3.2 php_gettext函數集 202
7.3.3 編寫I18N程序 202
7.3.4 設置gettext po文件 203
7.4 系統本地化函數族 205
7.4.1 setlocale函數 205
7.4.2 貨幣值本地化 206
7.4.3 使用pc_format_currency( )函數 207
7.5 Iconv函數 208
7.6 mbstring擴展庫 209
7.6.1 使用mbstring進行字符串截取 209
7.6.2 檢測字符串編碼 210
7.6.3 mbstring轉換編碼 210
7.7 小結 211
第8章 PHP開發規范 212
8.1 代碼結構 212
8.1.1 一個腳本服務全部 212
8.1.2 分離顯示邏輯 213
8.2 良好的編碼風格與樣式 213
8.2.1 代碼注釋 214
8.2.2 代碼縮進 214
8.2.3 使用必要的空格 215
8.2.4 SQL編寫規范 215
8.2.5 控制結構 216
8.2.6 函數的命名 216
8.2.7 類命名規范 216
8.2.8 減少出錯的技巧 217
8.3 小結 217
第9章 PHP 5面向對象開發 218
9.1 面向對象基礎 218
9.2 PHP 5 面向對象編程概述 219
9.2.1 類的封裝 219
9.2.2 類的繼承 219
9.3 對象 219
9.4 創建和使用類 220
9.5 類的結構與定義 220
9.6 成員方法 220
9.7 成員變量與屬性 221
9.8 $this關鍵字 222
9.9 構造方法 222
9.10 析構方法 223
9.11 類的繼承與多態 224
9.11.1 類的繼承——extends 224
9.11.2 數據的隱藏 226
9.11.3 訪問成員變量的約束 226
9.11.4 設置訪問成員方法 227
9.11.5 類常量 228
9.11.6 靜態成員變量 228
9.11.7 靜態成員方法 230
9.12 對象傳遞 230
9.13 克隆一個對象——clone 230
9.14 對象的比較 231
9.15 對象類型的檢測——instanceof 232
9.16 克隆一個成員方法 232
9.17 類的多態性 233
9.18 parent::與self::關鍵字 234
9.19 抽象方法與抽象類 235
9.20 接口的實現 237
9.21 實現多個接口 238
9.22 final方法 240
9.23 final類 240
9.24 例外與異常處理 241
9.25 方法中聲明類的類型 242
9.26 重載與多態 242
9.27 魔術方法 243
9.27.1 __get()與__set()方法 243
9.27.2 __call()方法 244
9.27.3 __sleep()與__wakeup()方法 245
9.27.4 __toString()方法 245
9.27.5 __autoload()方法 246
9.28 類映射API Reflection 247
9.29 小結 253
第10章 PHP會話管理 254
10.1 概述 254
10.2 Cookie管理 254
10.2.1 什麼是Cookie 254
10.2.2 Cookie工作原理 255
10.2.3 Cookie應用開發 255
10.2.4 一個通用的Cookie類 259
10.2.5 解決方案 260
10.3 Session管理 261
10.3.1 什麼是Session 261
10.3.2 Session配置 262
10.3.3 Session應用 263
10.3.4 Session編碼與解碼 267
10.3.5 Session中保存數組 267
10.3.6 Session中保存對象 268
10.3.7 Session存取優化 270
10.3.8 多服務器下共享Session 271
10.3.9 Session安全 274
10.4 小結 275
第11章 PHP輸入輸出緩沖 276
11.1 緩沖技術簡介 276
11.2 從緩沖讀取內容 277
11.3 使用回調函數 278
11.4 輸出回調函數 278
11.5 壓縮內容輸出 279
11.6 小結 279
第12章 文件系統與字符流 280
12.1 文件與路徑 280
12.1.1 分析一個文件的名稱與擴展名 280
12.1.2 利用PHP自帶函數分析當前
12.1.2 路徑 281
12.1.3 顯示相對路徑的真實路徑 281
12.2 文件類型與相關信息 281
12.2.1 filesize()——計算文件的大小 282
12.2.2 取得文件的建立、最後訪問與更新
12.2.2 時間 282
12.2.3 fileperms()——文件屬性以及
12.2.3 權限 282
12.2.4 取得文件所有者(Owner) 282
12.3 文件的順序讀寫 282
12.3.1 文件打開與寫入 282
12.3.2 文件輸出 284
12.3.3 讀取文件內容 285
12.4 文件的非線性讀寫 285
12.4.1 fseek()函數 286
12.4.2 ftell()函數 286
12.4.3 rewind()函數 286
12.4.4 parse_ini_file()函數 287
12.5 自定義日志記錄 288
12.6 目錄和磁盤操作 288
12.6.1 disk_free_space()——統計某個
12.6.1 目錄的剩余空間 288
12.6.2 disk_total_space()——顯示邏輯
12.6.2 磁盤的容量 289
12.6.3 getcwd()/chdir()函數 289
12.6.4 opendir()與readdir()函數 289
12.6.5 實現iterator接口的目錄讀取 290
12.7 字符流 291
12.7.1 流與封裝器的原理 292
12.7.2 PHP 5的預置流包裝器 292
12.7.4 流與封裝器的應用 293
12.7.5 Filter過濾器及其應用 295
12.7.6 流相關函數 296
12.7.7 創建自己的流過濾器 298
12.8 取得HTTPS加密內容 299
12.9 創建自己的流封裝器 300
12.10 小結 301
第三篇 MySQL 5與PHP 5接口
第13章 Web數據庫設計 303
13.1 數據庫和數據庫系統的概念 303
13.2 數據庫設計的步驟 304
13.3 表名與字段名規則 305
13.4 小結 306
第14章 MySQL 5數據庫 307
14.1 MySQL簡介 307
14.2 MySQL 5特性 308
14.2.1 MySQL 5優點 308
14.2.2 MySQL 5缺點 308
14.2.3 MySQL 5性能 308
14.3 MySQL數據庫存儲類型 309
14.4 MySQL字段類型 310
14.5 MySQL字符集與整理 311
14.5.1 MySQL 5字符集支持的原理 311
14.5.2 修改MySQL字符集方法 311
14.6 MySQL 5應用與管理 312
14.6.1 登錄到MySQL 312
14.6.2 修改root管理密碼 313
14.6.3 創建數據庫 313
14.6.4 改變數據庫存儲路徑 313
14.6.5 MySQL權限系統 314
14.6.6 phpMyAdmin管理工具 317
14.7 MySQL管理工具 324
14.8 小結 324
第15章 MySQL數據庫數據操縱 325
15.1 MySQL操作與SQL 325
15.2 檢索表中的數據 328
15.2.1 SELECT 語句 328
15.2.2 SELECT的聚集函數 329
15.2.3 結果集排序 329
15.2.4 函數 329
15.2.5 關聯查詢 329
15.3 高級SQL技術 331
15.3.1 主鍵 331
15.3.2 子查詢 332
15.3.3 聯合查詢 332
15.4 MySQL事務處理與觸發器 332
15.4.1 存儲進程 332
15.4.2 觸發器(trigger) 333
15.4.3 視圖 333
15.4.4 PHP與MySQL字符集 334
15.5 小結 335
第16章 PHP與MySQL數據庫接口 336
16.1 PHP5與MySQL連接的mysql擴展 336
16.2 數據庫查詢 337
16.3 其他顯示記錄集的函數 339
16.4 PHP 5與MySQL的新接口MySQLi 342
16.5 智能選擇MySQL擴展 351
16.6 小結 354
第17章 PHP數據庫抽象層 355
17.1 什麼是數據庫抽象層 355
17.2 常用的數據庫抽象層 356
17.2.1 PEAR:DB 356
17.2.2 ADODB 357
17.2.3 Metabase 357
17.2.4 MDB 358
17.2.5 MDB2 358
17.2.6 Creole 359
17.2.7 PDO 359
17.2.8 PHPLib 359
17.3 PDO數據庫抽象類 359
17.3.1 PDO簡介 359
17.3.2 PDO的安裝 360
17.3.3 PDO連接數據庫 360
17.3.4 使用PDO查詢 361
17.3.5 錯誤與異常處理 362
17.3.6 取得查詢結果 364
17.4 ADODB 368
17.4.1 使用ADODB 368
17.4.2 ADODB安裝 369
17.4.3 啟動ADODB 369
17.4.4 ADODB的查詢方法 370
17.4.5 移動記錄集 370
17.4.6 使用ADODB生成HTML 371
17.4.7 使用ADODB進行分頁 371
17.4.8 生成下拉選擇菜單 371
17.4.9 ADODB開發實例 371
17.5 PHPLib 383
17.5.1 使用PHPLib查詢 383
17.5.2 創建GetAll方法 385
17.6 小結 386
第四篇 PHP 5進階與技巧
第18章 Smarty與模板技術 388
18.1 MVC簡介 388
18.2 模板系統 389
18.3 Smarty概述 389
18.3.1 Smarty的優點 389
18.3.2 Smarty開發特性 390
18.4 安裝Smarty 390
18.5 Smarty開發基礎 392
18.5.1 第一個模板程序 392
18.5.2 編譯後的模板 393
18.5.3 Smarty區塊 394
18.5.4 Smarty注釋 394
18.5.5 Smarty變量與變量格式化 394
18.6 Smarty的控制結構 397
18.6.1 IF分支結構 397
18.6.2 循環結構 399
18.6.3 Smarty生成表單元素 407
18.6.4 Smarty文件包含 409
18.7 Smarty緩存 410
18.8 深入Smarty開發 410
18.8.1 register_function 410
18.8.2 register_block 411
18.8.3 register_modifier 411
18.8.4 在模板內運行PHP代碼 411
18.8.5 幾個重要的模板修飾符 412
18.8.6 Smarty的保留變量 413
18.8.7 模板配置文件 414
18.8.8 Smarty工作台 414
18.8.9 Smarty生成靜態頁面 415
18.8.10 制作線上日歷 415
18.8.11 Smarty與ADODB 416
18.9 小結 418
第19章 PHP和Ajax技術 419
19.1 Ajax簡介 419
19.2 Ajax特性 420
19.3 Xajax簡介 420
19.4 Xajax如何工作 420
19.5 異步更新內容 421
19.6 異步處理表單數據 423
19.7 增加自定義功能 424
19.8 解決亂碼 424
19.9 Smarty與Xajax 424
19.10 小結 426
第20章 使用PHP編寫Shell 427
20.1 簡介 427
20.2 PHP CLI Shell腳本 427
20.2.1 CLI 與CGI的區別 427
20.2.2 CLI的配置參數 427
20.3 PHP命令行接口(CLI) 428
20.4 CLI命令選項 429
20.5 CLI開發 430
20.6 CLI實際應用 434
20.7 小結 437
第21章 PHP網絡開發 438
21.1 Socket技術 438
21.1.1 Socket原理 438
21.1.2 建立一個連接 439
21.1.3 發送一個請求 439
21.1.4 查詢Whois信息 440
21.1.5 創建自己的Socket服務器 441
21.2 電子郵件 442
21.2.1 電子郵件簡介 442
21.2.2 MTA和SMTP 442
21.2.3 PHP郵件配置 443
21.2.4 電子郵件頭 444
21.2.5 MIME 444
21.3 使用mail()函數 446
21.4 使用Socket發送郵件 448
21.5 獲取遠程內容與自動化 449
21.5.1 使用CURL 449
21.5.2 使用Snoopy類 451
21.5.3 FTP操作 453
21.5.4 PHP與網絡協議 455
21.6 小結 455
第22章 PHP文件上傳 456
22.1 文件上傳簡介 456
22.2 處理上傳文件 457
22.3 處理多文件上傳 461
22.4 突破上傳的內存限制 463
22.5 小結 463
第23章 圖片與媒體處理 464
23.1 使用GD2擴展庫 464
23.1.1 打開一張圖片 465
23.1.2 打開任意格式的圖片 465
23.1.3 顯示和保存圖片 466
23.1.4 圖片轉換 467
23.1.5 創建文字圖片 468
23.1.6 繪制圖形 469
23.1.7 創建驗證碼——CAPTCHA 470
23.1.8 縮略圖片處理 471
23.1.9 創建水印圖片 473
23.2 使用Ming擴展創建Flash 475
23.2.1 創建按鈕 475
23.2.2 靜態文字 476
23.2.3 動態文字 477
23.2.4 繪制圖形 478
23.2.5 使用圖片 479
23.3 使用ImageMagick 480
23.3.1 ImageMagick簡介 480
23.3.2 安裝ImageWand 481
23.3.3 讀取圖片內容 481
23.3.4 讀取圖片尺寸 482
23.3.5 圖片裁切 482
23.3.6 生成圖片縮略圖 482
23.3.7 轉換圖片格式 483
23.3.8 控制圖片旋轉 483
23.3.9 重新縮放圖片 484
23.3.10 加入渲染效果 484
23.3.11 壓縮JPEG圖片 485
23.4 小結 485
第24章 XML與RSS 486
24.1 XML 486
24.1.1 XML的結構與定義 486
24.1.2 XML與HTML 487
24.2 創建與解析XML文檔 488
24.2.1 創建一個XML文檔 489
24.2.2 使用SAX解析XML 490
24.2.3 DOM 492
24.2.4 SimpleXML 496
24.3 RSS聚合與解析技術 497
24.3.1 RSS簡介 497
24.3.2 RSS 0.9 497
24.3.3 RSS3 1.0 498
24.3.4 RSS 2.0 499
24.3.5 Atom 501
24.4 XML Reader 503
24.5 XML與Smarty 504
24.6 小結 504
第25章 Web服務與SOAP 505
25.1 Web服務 505
25.1.1 Web服務概述 505
25.1.2 Web服務的特點 506
25.2 SOAP的消息體 507
25.2.1 SOAP封套(SOAP Envelope) 507
25.2.2 SOAP頭(SOAP Header) 507
25.2.3 SOAP錯誤信息(SOAP Fault) 507
25.2.4 消息體(SOAP Body) 508
25.3 PHP中的SOAP配置 508
25.4 使用PHP開發SOAP應用 509
25.4.1 WSDL 509
25.4.2 建立SOAP服務器端 512
25.4.3 建立SOAP客戶端 513
25.5 小結 513
第26章 PHP與WAP技術 514
26.1 WAP技術簡介 514
26.2 WAP配置 514
26.3 WAP頁面 514
26.3.1 WAP頁面簡介 515
26.3.2 WAP頁面跳轉 515
26.3.3 使用WAP制作登錄頁面 517
26.4 Smarty與WAP 521
26.5 小結 522
第五篇 PHP 5調試、升級與優化
第27章 錯誤與異常處理 524
27.1 概述 524
27.2 錯誤的類型 524
27.2.1 編程錯誤 524
27.2.2 未定義符號 525
27.2.3 輕量級錯誤 527
27.2.4 PHP產生的錯誤 528
27.2.5 錯誤與例外處理 530
27.3 小結 535
第28章 升級到PHP5 536
28.1 簡介 536
28.2 對象的引用 536
28.3 構造對象 537
28.4 get_class函數 537
28.5 is_a()函數與instance of 537
28.6 E_STRICT 538
28.6.1 自動建立對象 538
28.6.2 var與public 538
28.7 其他兼容性的問題 538
28.7.1 命令行接口 538
28.7.2 舊的超級全局數組的升級 538
28.7.3 函數修正與功能升級 539
28.8 小結 539
第29章 PHP優化技巧 540
29.1 PHP腳本級優化 540
29.1.1 require比require_once快 541
29.1.2 不做重復的車輪 541
29.2 使用代碼優化工具 542
29.3 緩存加速 543
29.3.1 使用eAccelerator 543
29.3.2 使用APC 545
29.4 HTTP加速 546
29.4.1 HTTP頭信息 546
29.4.2 啟用GZIP內容壓縮 546
29.5 MySQL性能優化 546
29.5.1 添加索引 546
29.5.2 MySQL緩存與性能調優 547
29.6 MySQL日志維護 549
29.7 數據庫外部優化 549
29.7.1 服務器硬件優化 549
29.7.2 磁盤優化 550
29.7.3 操作系統優化 550
29.8 使用反向代理 550
29.9 Apache服務器優化 551
29.10 內容壓縮與優化 551
29.11 分布與負載均衡 552
29.12 小結 554
第2部分 實戰PHP5
第30章 實例開發:會員注冊系統 557
30.1 概述 557
30.2 頁面流程 557
30.2.1 用戶注冊流程 557
30.2.2 用戶登錄流程 558
30.3 數據庫結構 558
30.4 UI與界面 561
30.5 目錄結構與文件說明 563
第31章 實例開發:圈子系統開發 571
31.1 目錄結構與文件說明 571
31.2 頁面流程 571
31.2.1 創建圈子 571
31.2.2 管理圈子 572
31.2.3 加入其他人創建的圈子 573
31.3 數據庫結構 573
31.4 UI與界面 576
第32章 實例開發:愛問系統 578
32.1 概述 578
32.2 頁面流程 578
32.3 目錄結構與文件說明 580
32.4 UI與界面 581
32.5 數據庫結構 585
第33章 實例開發:多用戶博客系統 587
33.1 概述 587
33.2 目錄結構與文件說明 587
33.3 頁面流程 588
33.4 UI與界面 588
33.5 數據庫結構 589
33.6 小結 591
附錄A PHP在線資源 592
附錄B Zend Core安裝 593
附錄C PHP擴展開發 599
附錄D MySQL字符集與整理 601
附錄E 代碼頁與Charset對照表 605
附錄F php.ini配置詳解 606
附錄G HTTP返回代碼表(RFC2068) 626