目錄:
第一篇 使用PHP
第1章 PHP快速入門教程 1
1.1 使用PHP 2
1.2 創建一個示例應用:Bob誷 Auto Parts(Bob汽車零部件商店)2
1.2.1 創建訂單表單 2
1.2.2 表單處理 4
1.3 在HTML中嵌入PHP 4
1.3.1 使用PHP標記 5
1.3.2 PHP標記風格 5
1.3.3 PHP語句 6
1.3.4 空格 6
1.3.5 注釋 7
1.4 添加動態內容 8
1.4.1 調用函數 8
1.4.2 使用date()函數 9
1.5 訪問表單變量 9
1.5.1 表單變量 9
1.5.2 字符串的連接 11
1.5.3 變量和文本 12
1.6 理解標識符 13
1.7 創建用戶聲明的變量 13
1.8 給變量賦值 13
1.9 檢查變量的類型 13
1.9.1 PHP的數據類型 13
1.9.2 類型強度 14
1.9.3 類型轉換 14
1.9.4 可變變量 14
1.10 聲明和使用常量 15
1.11 理解變量的作用域 16
1.12 使用操作符 16
1.12.1 算術操作符 17
1.12.2 字符串操作符 17
1.12.3 賦值操作符 17
1.12.4 比較操作符 19
1.12.5 邏輯操作符 20
1.12.6 位操作符 21
1.12.7 其他操作符 21
1.13 使用操作符:計算表單總金額 23
1.14 理解操作符的優先級和結合性:表達式求值 24
1.15 使用可變函數 25
1.15.1 測試和設置變量類型 26
1.15.2 測試變量狀態 26
1.15.3 變量的重解釋 27
1.16 實現控制結構 27
1.17 根據條件進行判斷 27
1.17.1 if語句 28
1.17.2 代碼塊 28
1.17.3 else語句 28
1.17.4 elseif語句 29
1.17.5 switch語句 30
1.17.6 比較不同的條件 31
1.18 通過迭代實現重復動作 32
1.18.1 while循環 33
1.18.2 for和foreach循環 34
1.18.3 do...while循環 35
1.19 從控制結構或腳本中跳出 35
1.20 使用可替換的控制結構語法 36
1.21 使用declare 36
1.22 下一章:保存客戶的訂單 37
第2章 數據的存儲與檢索 38
2.1 保存數據以便後期使用 38
2.2 存儲和檢索Bob的訂單 38
2.3 文件處理 39
2.4 打開文件 40
2.4.1 選擇文件模式 40
2.4.2 使用fopen()打開文件 40
2.4.3 通過FTP或HTTP打開文件 42
2.4.4 解決打開文件時可能遇到的問題 42
2.5 寫文件 44
2.5.1 fwrite()的參數 44
2.5.2 文件格式 45
2.6 關閉文件 45
2.7 讀文件 47
2.7.1 以只讀模式打開文件:fopen() 48
2.7.2 知道何時讀完文件:feof() 48
2.7.3 每次讀取一行數據:fgets()、fgetss()和fgetcsv() 49
2.7.4 讀取整個文件:readfile()、fpassthru()和file() 49
2.7.5 讀取一個字符:fgetc() 50
2.7.6 讀取任意長度:fread() 51
2.8 使用其他有用的文件函數 51
2.8.1 查看文件是否存在:file_exists() 51
2.8.2 確定文件大小:filesize() 51
2.8.3 刪除一個文件:unlink() 51
2.8.4 在文件中定位:rewind()、fseek()和ftell() 52
2.9 文件鎖定 52
2.10 更好的方式:數據庫管理系統 53
2.10.1 使用普通文件的幾個問題 54
2.10.2 RDBMS是如何解決這些問題的 54
2.11 進一步學習 54
2.12 下一章 55
第3章 使用數組 56
3.1 什麼是數組 56
3.2 數字索引數組 57
3.2.1 數字索引數組的初始化 57
3.2.2 訪問數組的內容 57
3.2.3 使用循環訪問數組 58
3.3 使用不同索引的數組 59
3.3.1 初始化相關數組 59
3.3.2 訪問數組元素 59
3.3.3 使用循環語句 59
3.4 數組操作符 60
3.5 多維數組 61
3.6 數組排序 64
3.6.1 使用sort()函數 64
3.6.2 使用asort()函數和ksort()函數對相關數組排序 64
3.6.3 反向排序 65
3.7 多維數組的排序 65
3.7.1 用戶定義排序 65
3.7.2 反向用戶排序 66
3.8 對數組進行重新排序 67
3.8.1 使用shuffle()函數 67
3.8.2 使用array-reverse()函數 68
3.9 從文件載入數組 69
3.10 執行其他的數組操作 71
3.10.1 在數組中浏覽:each()、current()、reset()、end()、next()、pos()和prev() 71
3.10.2 對數組的每一個元素應用任何函數:array_walk() 72
3.10.3 統計數組元素個數:count()、sizeof()和array_count_values(}73
3.10.4 將數組轉換成標量變量:extract() 73
3.11 進一步學習 75
3.12 下一章 75
第4章 字符串操作與正則表達式 76
4.1 創建一個示例應用程序:智能表單郵件 76
4.2 字符串的格式化 78
4.2.1 字符串的整理:chop()、ltrim()和trim() 78
4.2.2 格式化字符串以便顯示 78
4.2.3 格式化字符串以便存儲:addslashes()和stripslashes() 81
4.3 用字符串函數連接和分割字符串 82
4.3.1 使用函數explode()、implode()和join() 82
4.3.2 使用strtok()函數 83
4.3.3 使用substr()函數 83
4.4 字符串的比較 84
4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp() 84
4.4.2 使用strlen()函數測試字符串的長度 85
4.5 使用字符串函數匹配和替換子字符串 85
4.5.1 在字符串中查找字符串:strstr()、strchr()、strrchr()stristr()85
4.5.2 查找子字符串的位置:strpos()、strrpos() 86
4.5.3 替換子字符串:str_replace()、substr_replace() 87
4.6 正則表達式的介紹 88
4.6.1 基礎知識 88
4.6.2 字符集和類 88
4.6.3 重復 89
4.6.4 子表達式 89
4.6.5 子表達式計數 90
4.6.6 定位到字符串的開始或末尾 90
4.6.7 分支 90
4.6.8 匹配特殊字符 90
4.6.9 特殊字符一覽 91
4.6.10 在智能表單中應用 91
4.7 用正則表達式查找子字符串 92
4.8 用正則表達式替換子字符串 93
4.9 使用正則表達式分割字符串 93
4.10 比較字符串函數和正則表達式函數 93
4.11 進一步學習 93
4.12 下一章 93
第5章 代碼重用與函數編寫 94
5.1 代碼重用 94
5.1.1 成本 94
5.1.2 可靠性 94
5.1.3 一致性 95
5.2 使用require()和include()函數 95
5.2.1 require()函數 95
5.2.2 文件擴展名和require()語句 96
5.2.3 PHP標記和require()語句 96
5.3 使用require()制作Web站點的模版 96
5.3.1 使用include() 100
5.3.2 使用require_once()和include_once() 100
5.3.3 使用auto_prepend_file和auto_append_file 101
5.4 在PHP中使用函數 101
5.4.1 調用函數 101
5.4.2 調用未定義的函數 103
5.4.3 理解字母大小寫和函數名稱 103
5.5 理解為什麼要定義自己的函數 103
5.6 了解基本的函數結構 104
5.7 使用參數 105
5.8 理解作用域 107
5.9 參數的引用傳遞和值傳遞 109
5.10 從函數中返回 110
5.11 從函數返回一個值 111
5.12 實現遞歸 113
5.13 進一步學習 114
5.14 下一章 114
第6章 面向對象的PHP 115
6.1 面向對象的概念 115
6.1.1 類和對象 115
6.1.2 多態性 116
6.1.3 繼承 117
6.2 在PHP中創建類、屬性和操作 117
6.2.1 類的結構 117
6.2.2 構造函數 118
6.2.3 析構函數 118
6.3 類的實例化 118
6.4 使用類的屬性 119
6.5 使用private和public關鍵字控制訪問 121
6.6 類操作的調用 121
6.7 在PHP中實現繼承 122
6.7.1 通過繼承使用private和protected訪問修飾符控制可見性 123
6.7.2 重載 124
6.7.3 使用final關鍵字禁止繼承和重載 125
6.7.4 理解多重繼承 126
6.7.5 實現接口 126
6.8 類的設計 127
6.9 編寫類代碼 128
6.10 理解PHP面向對象新的高級功能 135
6.10.1 提示:PHP4和PHP5的比較 135
6.10.2 使用Per-Class常量 135
6.10.3 實現靜態方法 135
6.10.4 檢查類的類型和類型提示 136
6.10.5 克隆對象 136
6.10.6 使用抽象類 137
6.10.7 使用__call()重載方法 137
6.10.8 使用__autoload()方法 138
6.10.9 實現迭代器和迭代 138
6.10.10 將類轉換成字符串 140
6.10.11 使用Reflection(反射)API 140
6.11 下一章 141
第7章 異常處理 142
7.1 異常處理的概念 142
7.2 Exception類 144
7.3 用戶自定義異常 144
7.4 Bob的汽車零部件商店應用程序的異常 146
7.5 異常和PHP的其他錯誤處理機制 150
7.6 進一步學習 150
7.7 下一章 150
第二篇 使用MySQL
第8章 設計Web數據庫 151
8.1 關系數據庫的概念 152
8.1.1 表格 152
8.1.2 列 152
8.1.3 行 152
8.1.4 值 152
8.1.5 鍵 152
8.1.6 模式 153
8.1.7 關系 153
8.2 如何設計Web數據庫 154
8.2.1 考慮要建模的實際對象 154
8.2.2 避免保存冗余數據 154
8.2.3 使用原子列值 155
8.2.4 選擇有意義的鍵 156
8.2.5 考慮需要詢問數據庫的問題 156
8.2.6 避免多個空屬性的設計 156
8.2.7 表格類型的總結 157
8.3 Web數據庫架構 157
8.4 進一步學習 158
8.5 下一章 158
第9章 創建Web數據庫 159
9.1 使用MySQL監視程序 160
9.2 登錄到MySQL 160
9.3 創建數據庫和用戶 161
9.4 設置用戶與權限 162
9.5 MySQL權限系統的介紹 162
9.5.1 最少權限原則 162
9.5.2 創建用戶:GRANT命令 162
9.5.3 權限的類型和級別 163
9.5.4 REVOKE命令 165
9.5.5 使用GRANT和REVOKE的例子 165
9.6 創建一個Web用戶 166
9.7 使用正確的數據庫 166
9.8 創建數據庫表 167
9.8.1 理解其他關鍵字的意思 168
9.8.2 理解列的類型 169
9.8.3 用SHOW和DESCRIBE來查看數據庫 170
9.8.4 創建索引 171
9.8.5 表格類型的提示 171
9.9 理解MySQL的標識符 171
9.10 選擇列數據類型 172
9.10.1 數字類型 173
9.10.2 日期和時間類型 174
9.10.3 字符串類型 174
9.11 進一步學習 176
9.12 下一章 176
第10章 使用MySQL數據庫 177
10.1 SQL是什麼 177
10.2 在數據庫中插入數據 177
10.3 從數據庫中獲取數據 179
10.3.1 獲取滿足特定條件的數據 181
10.3.2 從多個表中獲取數據 182
10.3.3 以特定的順序獲取數據 186
10.3.4 分組與合計數據 186
10.3.5 選擇要返回的行 188
10.3.6 使用子查詢 188
10.4 更新數據庫記錄 190
10.5 創建後修改表 191
10.6 刪除數據庫中的記錄 193
10.7 表的刪除 193
10.8 刪除整個數據庫 193
10.9 進一步學習 194
10.10 下一章 194
第11章 使用PHP從Web訪問MySQL數據庫 195
11.1 Web數據庫架構的工作原理 195
11.2 從Web查詢數據庫的基本步驟 198
11.3 檢查與過濾用戶輸入數據 198
11.4 建立一個連接 199
11.5 選擇使用的數據庫 200
11.6 查詢數據庫 200
11.7 檢索查詢結果 201
11.8 從數據庫斷開連接 202
11.9 將新信息放入數據庫 202
11.10 使用Prepared語句 205
11.11 使用PHP與數據庫交互的其他接口 206
11.12 使用常規的數據庫接口:PEAR DB 206
11.13 進一步學習 209
11.14 下一章 209
第12章 MySQL高級管理 210
12.1 深入理解權限系統 210
12.1.1 user表 211
12.1.2 db表和host表 212
12.1.3 tables_priv表和columns_priv表 212
12.1.4 訪問控制:MySQL如何使用Grant表 213
12.1.5 更新權限:修改什麼時候生效 213
12.2 提高MySQL數據庫的安全性 214
12.2.1 從操作系統角度來保護MySQL 214
12.2.2 密碼 214
12.2.3 用戶權限 215
12.2.4 Web問題 215
12.3 獲取更多關於數據庫的信息 216
12.3.1 使用SHOW獲取信息 216
12.3.2 使用DESCRIBE獲取關於列的信息 218
12.3.3 用EXPLAIN理解查詢操作的工作過程 218
12.4 使用索引提高查詢速度 221
12.5 優化數據庫 221
12.5.1 設計優化 222
12.5.2 權限 222
12.5.3 表的優化 222
12.5.4 使用索引 222
12.5.5 使用默認值 222
12.5.6 其他技巧 222
12.6 備份MySQL數據庫 222
12.7 恢復MySQL數據庫 223
12.8 實現復制 223
12.8.1 設置主服務器 224
12.8.2 執行初始的數據傳輸 224
12.8.3 設置一個/多個從服務器 225
12.9 進一步學習 225
12.10 下一章 225
第13章 MySQL高級編程 226
13.1 LOAD DATA INFILE語句 226
13.2 存儲引擎 226
13.3 事務 227
13.3.1 理解事務的定義 227
13.3.2 通過InnoDB使用事務 228
13.4 外鍵 229
13.5 存儲過程 230
13.5.1 基本示例 230
13.5.2 局部變量 232
13.5.3 游標和控制結構 233
13.6 進一步學習 236
13.7 下一章 236
第三篇 電子商務與安全性
第14章 運營一個電子商務網站 237
14.1 我們要實現什麼目標 237
14.2 考慮電子商務網站的類型 237
14.2.1 使用在線說明書公布信息 238
14.2.2 接收產品或服務的訂單 240
14.2.3 提供服務和數字產品 243
14.2.4 為產品或服務增值 243
14.2.5 減少成本 243
14.3 理解風險和威脅 244
14.3.1 網絡黑客 244
14.3.2 不能招攬足夠的生意 245
14.3.3 計算機硬件故障 245
14.3.4 電力、通信、網絡或運輸故障 245
14.3.5 廣泛的競爭 245
14.3.6 軟件錯誤 245
14.3.7 不斷變化的政府政策和稅收 246
14.3.8 系統容量限制 246
14.4 基於策略作決定 246
14.5 下一章 246
第15章 電子商務的安全問題 247
15.1 信息的重要程度 247
15.2 安全威脅 248
15.2.1 機密數據的洩露 248
15.2.2 數據丟失和數據破壞 249
15.2.3 數據修改 250
15.2.4 拒絕服務 251
15.2.5 軟件錯誤 251
15.2.6 否認 252
15.3 易用性,性能、成本和安全性 253
15.4 建立一個安全政策 253
15.5 身份驗證原則 254
15.6 使用身份驗證 254
15.7 加密技術基礎 255
15.8 私有密鑰加密 256
15.9 公有密鑰加密 256
15.10 數字簽名 256
15.11 數字證書 257
15.12 安全的Web服務器 258
15.13 審計與日志記錄 259
15.14 防火牆 259
15.15 備份數據 259
15.15.1 備份常規文件 260
15.15.2 備份與恢復MySQL數據庫 260
15.16 自然環境安全 260
15.17 下一章 261
第16章 使用PHP和MySQL實現身份驗證 262
16.1 識別訪問者 262
16.2 實現訪問控制 263
16.2.1 保存密碼 265
16.2.2 密碼的加密 267
16.2.3 保護多個網頁 268
16.3 使用基本身份驗證 269
16.4 在PHP中使用基本身份驗證 270
16.5 在Apache的.htaccess文件中使用基本身份驗證 271
16.6 在IIS上使用基本身份驗證 274
16.7 使用mod_auth_mysql身份驗證 276
16.7.1 安裝mod_auth_mysql 276
16.7.2 檢查是否正常工作 276
16.7.3 使用mod_auth_mysql 277
16.8 創建自定義身份驗證 277
16.9 進一步學習 278
16.10 下一章 278
第17章 使用PHP和MySQL實現安全事務 279
17.1 提供安全的事務處理 279
17.1.1 用戶機器 280
17.1.2 Internet 281
17.1.3 我們的系統 281
17.2 使用加密套接字層(SSL) 282
17.3 屏蔽用戶的輸入 284
17.4 提供安全存儲 284
17.5 確定是否需要存儲信用卡號碼 285
17.6 在PHP中使用加密技術 286
17.6.1 安裝GPG 286
17.6.2 測試GPG 288
17.7 進一步學習 293
17.8 下一章 293
第四篇 PHP的高級技術
第18章 與文件系統和服務器的交互 295
18.1 文件上載 295
18.1.1 文件上載的HTML 296
18.1.2 關於安全性的提示 296
18.1.3 編寫處理文件的PHP 297
18.1.4 常見問題 300
18.2 使用目錄函數 300
18.2.1 從目錄讀取 300
18.2.2 獲得當前目錄的信息 302
18.2.3 創建和刪除目錄 302
18.3 與文件系統的交互 302
18.3.1 獲取文件信息 302
18.3.2 更改文件屬性 304
18.3.3 創建、刪除和移動文件 305
18.4 使用程序執行函數 305
18.5 與環境變量交互:getenv()和putenv() 308
18.6 進一步學習 308
18.7 下一章 308
第19章 使用網絡函數和協議函數 309
19.1 了解可供使用的協議 309
19.2 發送和讀取電子郵件 309
19.3 使用其他Web站點 310
19.4 使用網絡查找函數 312
19.5 使用FTP 316
19.5.1 使用FTP備份或鏡像一個文件 316
19.5.2 上傳文件 321
19.5.3 避免超時 321
19.5.4 使用其他的FTP函數 322
19.6 進一步學習 322
19.7 下一章 323
第20章 日期和時間的管理 324
20.1 在PHP中獲取日期和時間 324
20.1.1 使用date()函數 324
20.1.2 使用UNIX時間戳 325
20.1.3 使用getdate()函數 326
20.1.4 檢驗日期有效性 327
20.2 在PHP日期格式和MySQL日期格式之間進行轉換 327
20.3 在PHP中計算日期 329
20.4 在MySQL中計算日期 329
20.5 使用微秒 331
20.6 使用日歷函數 331
20.7 進一步學習 332
20.8 下一章 332
第21章 創建圖像 333
21.1 在PHP中設定圖像支持 333
21.2 理解圖像格式 334
21.2.1 JPEG 334
21.2.2 PNG 334
21.2.3 WBMP 335
21.2.4 GIF 335
21.3 創建圖像 335
21.3.1 創建一個背景圖像 336
21.3.2 在圖像上繪圖或打印文本 337
21.3.3 輸出最終圖形 338
21.3.4 清理 339
21.4 在其他頁面中使用自動生成的圖像 339
21.5 使用文本和字體創建圖像 339
21.5.1 創建基本畫布 342
21.5.2 將文本調整到適合按鈕 342
21.5.3 放置文本 345
21.5.4 將文本寫到按鈕上 345
21.5.5 完成 345
21.6 繪制圖像與用圖表描繪數據 346
21.7 使用其他的圖像函數 352
21.8 進一步學習 352
21.9 下一章 353
第22章 在PHP中使用會話控制 354
22.1 什麼是會話控制 354
22.2 理解基本的會話功能 354
22.2.1 什麼是cookie 354
22.2.2 通過PHP設置cookie 355
22.2.3 在會話中使用cookie 355
22.2.4 存儲會話 ID 356
22.3 實現簡單的會話 356
22.3.1 開始一個會話 356
22.3.2 注冊一個會話變量 356
22.3.3 使用會話變量 357
22.3.4 注銷變量與銷毀會話 357
22.4 創建一個簡單的會話例子 357
22.5 配置會話控制 359
22.6 通過會話控制實現身份驗證 360
22.7 進一步學習 365
22.8 下一章 365
第23章 其他有用的特性 366
23.1 使用魔術引用 366
23.2 使用eval()函數對字符串求值 367
23.3 中斷執行:die和exit 367
23.4 序列化變量和對象 368
23.5 獲取PHP環境信息 369
23.5.1 找到所加載的PHP擴展部件 369
23.5.2 識別腳本所有者 370
23.5.3 確定腳本最近修改時間 370
23.6 動態加載擴展部件 370
23.7 暫時改變運行時環境 370
23.8 源代碼加亮 371
23.9 在命令行中使用PHP 372
23.10 下一章 372
第五篇 創建實用的PHP和MySQL項目
第24章 在大型項目中使用PHP和MySQL 373
24.1 在Web開發中應用軟件工程 374
24.2 規劃和運行Web應用程序項目 374
24.3 重用代碼 375
24.4 編寫可維護代碼 375
24.4.1 編碼標准 375
24.4.2 分解代碼 378
24.4.3 使用標准的目錄結構 378
24.4.4 文檔化和共享內部函數 378
24.5 實現版本控制 379
24.6 選擇一個開發環境 380
24.7 項目的文檔化 380
24.8 建立原型 381
24.9 將邏輯和內容分離 381
24.10 優化代碼 382
24.10.1 使用簡單優化 382
24.10.2 使用Zend產品 382
24.11 測試 383
24.12 進一步學習 383
24.13 下一章 384
第25章 調試 385
25.1 編程錯誤 385
25.1.1 語法錯誤 385
25.1.2 運行時錯誤 386
25.1.3 邏輯錯誤 391
25.2 使用變量幫助調試 392
25.3 錯誤報告級別 393
25.4 改變錯誤報告設置 394
25.5 觸發自定義錯誤 395
25.6 巧妙地處理錯誤 396
25.7 下一章 398
第26章 建立用戶身份驗證機制和個性化設置 399
26.1 問題所在 399
26.2 解決方案的組成 399
26.2.1 用戶識別和個性化設置 399
26.2.2 保存書簽 400
26.2.3 推薦書簽 400
26.3 解決方案概述 400
26.4 實現數據庫 402
26.5 實現基本的網站 403
26.6 實現用戶身份驗證 405
26.6.1 注冊 405
26.6.2 登錄 410
26.6.3 登出 413
26.6.4 修改密碼 414
26.6.5 重設遺忘的密碼 416
26.7 實現書簽的存儲和檢索 420
26.7.1 添加書簽 420
26.7.2 顯示書簽 422
26.7.3 刪除書簽 422
26.8 實現書簽推薦 424
26.9 封裝和可能的擴展 427
26.10 下一章 427
第27章 創建一個購物車 428
27.1 問題所在 428
27.2 解決方案的組成 428
27.2.1 創建一個在線目錄 428
27.2.2 在用戶購買商品的時候記錄購買行為 429
27.2.3 實現一個付款系統 429
27.2.4 創建一個管理界面 429
27.3 解決方案概述 429
27.4 實現數據庫 432
27.5 實現在線目錄 434
27.5.1 列出目錄 434
27.5.2 列出一個目錄中的所有圖書 437
27.5.3 顯示圖書詳細信息 438
27.6 實現購物車 440
27.6.1 使用show_cart.php腳本 440
27.6.2 浏覽購物車 442
27.6.3 將物品添加到購物庫 444
27.6.4 保存更新後的購物車 446
27.6.5 打印標題欄摘要 447
27.6.6 結賬 447
27.7 實現付款 452
27.8 實現一個管理界面 454
27.9 擴展該項目 460
27.10 使用一個已有系統 461
27.11 下一章 461
第28章 創建一個內容管理系統 462
28.1 問題所在 462
28.2 解決方案的需求 462
28.3 已有系統 462
28.4 編輯內容 463
28.4.1 使內容進入系統 463
28.4.2 數據庫與文件存儲的對比 463
28.4.3 文檔結構 464
28.5 使用元數據 464
28.6 格式化輸出 465
28.7 解決方案的設計/概述 465
28.8 設計數據庫 466
28.9 實現CMS 467
28.9.1 前台 467
28.9.2 圖像處理 471
28.9.3 後台 473
28.9.4 搜索 480
28.9.5 編輯頁面 483
28.10 擴展該項目 485
28.11 下一章 485
第29章 創建一個基於Web的電子郵件服務系統 486
29.1 問題所在 486
29.2 解決方案的組成 486
29.3 解決方案概述 488
29.4 建立數據庫 489
29.5 了解腳本架構 490
29.6 登錄與登出 495
29.7 建立賬戶 498
29.7.1 創建一個新賬戶 499
29.7.2 修改已有賬戶 501
29.7.3 刪除賬戶 501
29.8 閱讀郵件 502
29.8.1 選擇賬戶 502
29.8.2 查看郵箱內容 504
29.8.3 閱讀郵件消息 507
29.8.4 查看消息標題 509
29.8.5 刪除郵件 509
29.9 發送郵件 510
29.9.1 發送一則新消息 510
29.9.2 回復或轉發郵件 512
29.10 擴展這個項目 514
29.11 下一章 514
第30章 創建一個郵件列表管理器 515
30.1 問題所在 515
30.2 解決方案的組成 515
30.2.1 建立列表和訂閱者數據庫 516
30.2.2 使用文件上載 516
30.2.3 發送帶附件的郵件 516
30.3 解決方案概述 516
30.4 建立數據庫 518
30.5 定義腳本架構 520
30.6 實現登錄 526
30.6.1 新賬戶的創建 527
30.6.2 登錄 529
30.7 用戶函數的實現 531
30.7.1 查看列表 531
30.7.2 查看郵件列表信息 535
30.7.3 查看郵件列表存檔 536
30.7.4 訂閱與取消訂閱 538
30.7.5 更改賬戶設置 539
30.7.6 更改密碼 539
30.7.7 登出 540
30.8 管理功能的實現 541
30.8.1 創建新的郵件列表 541
30.8.2 上載新的新聞信件 543
30.8.3 多文件上載的處理 545
30.8.4 預覽新聞信件 549
30.8.5 發送郵件 550
30.9 擴展這個項目 555
30.10 下一章 555
第31章 創建一個Web論壇 556
31.1 問題所在 556
31.2 解決方案的組成 556
31.3 解決方案概述 557
31.4 數據庫的設計 558
31.5 查看文章的樹型結構 560
31.5.1 展開和折疊 561
31.5.2 顯示文章 564
31.5.3 使用treenode類 564
31.6 查看單個的文章 570
31.7 添加新文章 572
31.8 添加擴充 578
31.9 使用一個已有的系統 578
31.10 下一章 578
第32章 生成PDF格式的個性化文檔 579
32.1 問題所在 579
32.2 評估文檔格式 579
32.2.1 紙張 580
32.2.2 ASCII 580
32.2.3 HTML 580
32.2.4 字處理器格式 580
32.2.5 RTF格式 581
32.2.6 PostScript 581
32.2.7 可移植文檔格式(PDF) 582
32.3 解決方案的組成 582
32.3.1 問題與回答系統 583
32.3.2 文檔生成軟件 583
32.4 解決方案概述 585
32.4.1 提問 585
32.4.2 給答題評分 587
32.4.3 生成RTF證書 589
32.4.4 從模板生成PDF證書 591
32.4.5 使用PDFlib生成PDF文檔 595
32.4.6 使用PDFlib的一個“Hello World”程序 595
32.4.7 用PDFlib生成證書 598
32.5 處理標題的問題 605
32.6 擴展該項目 605
32.7 進一步學習 606
32.8 下一章 606
第33章 使用XML和SOAP來連接Web服務 607
33.1 問題所在 607
33.2 理解XML 608
33.3 理解Web服務 611
33.3.1 SOAP 611
33.3.2 WSDL 612
33.4 解決方案的組成 612
33.4.1 創建購物車 613
33.4.2 使用Amazon的Web服務接口 613
33.4.3 XML的解析 613
33.4.4 在PHP中使用SOAP 614
33.4.5 緩存 614
33.5 解決方案概述 614
33.5.1 核心應用程序 618
33.5.2 顯示特定種類的圖書 623
33.5.3 獲得一個AmazonResultSet類 624
33.5.4 使用基於HTTP的REST/XML 631
33.5.5 使用SOAP 635
33.5.6 緩存數據 636
33.5.7 創建購物車 639
33.5.8 到Amazon付賬 642
33.6 安裝項目代碼 642
33.7 擴展這個項目 643
33.8 進一步學習 643
第六篇 附 錄
附錄A 安裝PHP及MySQL 645
附錄B Web資源 664
【責任編輯: