目 錄
第1章 PHP是什麼——我為什麼要關注它 1
1.1 PHP的發展史 2
1.2 PHP是如何使頁麵實現動態效果的 2
1.3 使用和學習PHP有多難 5
1.3.1 是否可以隻復製和粘貼代碼 6
1.3.2 PHP的安全性 6
1.4 用什麼軟件來編寫PHP 6
1.5 繼續學習 8
第2章 準備開始使用PHP 9
2.1 檢查網站是否支持PHP 9
2.2 建立本地的測試環境需要什麼條件 10
2.3 在Windows上安裝 11
2.3.1 使Windows顯示齣文件擴展名 11
2.3.2 選擇Web服務器 11
2.3.3 在Windows上安裝XAMPP 12
2.3.4 使用Microsoft Web PI安裝PHP 15
2.4 在Mac OS X上安裝 17
2.4.1 安裝MAMP 18
2.4.2 測試和配置MAMP 18
2.5 檢查PHP設置(Windows和Mac) 19
2.6 去哪裏找PHP文件 23
2.7 下一步 24
第3章 如何編寫PHP腳本 25
3.1 PHP概述 25
3.1.1 通知服務器處理PHP 26
3.1.2 在網頁中嵌入PHP 26
3.1.3 將PHP存儲到外部文件中 27
3.1.4 使用變量來錶示變化的值 27
3.1.5 用分號結束命令 29
3.1.6 注釋腳本 30
3.1.7 使用數組存儲多個值 31
3.1.8 PHP內置的超全局數組 32
3.1.9 瞭解何時使用引號 32
3.1.10 做齣判斷 35
3.1.11 進行比較 36
3.1.12 為清晰起見,使用縮進和空格 37
3.1.13 使用循環來執行重復性任務 37
3.1.14 使用函數來執行預設置任務 37
3.1.15 PHP的類和對象 38
3.1.16 顯示PHP輸齣 39
3.1.17 瞭解PHP錯誤消息 40
3.2 PHP:快速參考 42
3.2.1 在現有的網站中使用PHP 42
3.2.2 PHP中的數據類型 42
3.2.3 使用PHP進行計算 43
3.2.4 添加到現有的字符串 45
3.2.5 引號及其他 45
3.2.6 創建數組 48
3.2.7 關於PHP的事實 50
3.2.8 創建循環 54
3.2.9 使用函數使代碼模塊化 56
3.3 PHP快速查閱清單 58
第4章 使用包含功能減輕工作負擔 60
4.1 包含來自外部文件的代碼 61
4.1.1 PHP include命令簡介 61
4.1.2 PHP在哪裏查找包含文件 62
4.1.3 為包含選擇正確的文件擴展名 65
4.1.4 創建具有可變內容的頁麵 73
4.1.5 使用包含文件防止錯誤 80
4.1.6 選擇放置包含文件的位置 85
4.1.7 調整include_path 86
4.1.8 為什麼不能使用相對於站點根目錄的鏈接來包含文件 88
4.1.9 使用包含時要考慮的安全因素 88
4.2 小結 89
第5章 錶單的使用 90
5.1 PHP如何收集來自錶單的信息 90
5.1.1 理解post和get之間的區彆 92
5.1.2 利用PHP的超全局保證安全 94
5.1.3 刪除錶單輸入中不需要的反斜杠 95
5.2 處理和驗證用戶輸入 96
5.2.1 創建可重用的腳本 97
5.2.2 當錶單不完整時保存用戶輸入 101
5.2.3 過濾潛在的攻擊 103
5.3 發送郵件 106
5.3.1 安全地使用其他郵件頭部 106
5.3.2 阻止垃圾郵件 113
5.4 處理多選錶單元素 116
5.5 小結 122
第6章 上傳文件 123
6.1 PHP如何處理文件上傳 123
6.1.1 檢查服務器是否支持上傳 124
6.1.2 將文件上傳字段添加到錶單中 125
6.1.3 理解$_FILES數組 126
6.1.4 建立一個上傳目錄 127
6.2 上傳文件 129
6.3 創建PHP文件上傳類 131
6.3.1 定義PHP類 132
6.3.2 檢查上傳錯誤 137
6.3.3 修改受保護的屬性 140
6.3.4 顯式修改數據類型 144
6.3.5 防止文件被覆蓋 145
6.4 上傳多個文件 148
6.5 在PHP 5.3和更高版本中使用命名空間 153
6.6 使用上傳類 154
6.7 文件上傳中要注意的問題 155
6.8 小結 155
第7章 使用PHP來管理文件 156
7.1 檢查PHP是否具有打開文件的權限 156
7.1.1 影響文件訪問的配置設置 157
7.1.2 為本地測試創建文件存儲文件夾 158
7.2 讀取和寫入文件 158
7.2.1 在單個操作中讀取文件 158
7.2.2 為讀/寫操作打開和關閉文件 164
7.3 研究文件係統 170
7.3.1 使用scandir()檢查文件夾 171
7.3.2 使用DirectoryIterator檢查文件夾的內容 171
7.3.3 使用RegexIterator限製文件類型 173
7.4 訪問遠程文件 177
7.4.1 使用新聞和其他RSS源 178
7.4.2 使用SimpleXML 179
7.5 創建下載鏈接 183
7.6 小結 186
第8章 生成縮略圖 187
8.1 檢查服務器的功能 187
8.2 動態操作圖像 188
8.3 在上傳時自動調整圖像的大小 204
8.3.1 擴展一個類 204
8.3.2 使用Ps2_ThumbnailUpload類 208
8.4 小結 209
第9章 有記憶功能的頁麵:簡單登錄和多頁錶單 210
9.1 會話是什麼以及它們是如何運行的 210
9.1.1 創建PHP會話 212
9.1.2 創建和銷毀會話變量 213
9.1.3 銷毀會話 213
9.1.4 重新生成會話ID 213
9.1.5 “Headers already sent”錯誤 214
9.2 使用會話來限製訪問 214
9.2.1 使用基於文件的身份驗證 218
9.2.2 使密碼更安全 224
9.3 為會話設置時間限製 234
9.4 通過多頁錶單傳遞信息 237
9.5 小結 242
第10章 MySQL入門 243
10.1 為什麼選擇MySQL 243
10.2 數據庫如何存儲信息 244
10.2.1 主鍵如何工作 245
10.2.2 使用主鍵和外鍵鏈接錶 246
10.2.3 把信息分解成小塊 247
10.2.4 良好的數據庫設計要點 247
10.3 通過圖形界麵使用MySQL 247
10.4 建立phpsols數據庫 250
10.4.1 MySQL的命名規則 250
10.4.2 使用phpMyAdmin創建新數據庫 251
10.4.3 創建特定於數據庫的用戶賬戶 251
10.4.4 創建數據庫錶 253
10.4.5 將記錄插入到錶中 256
10.4.6 創建用於備份和數據傳輸的SQL文件 258
10.5 在MySQL中選擇正確的數據類型 260
10.5.1 存儲文本 261
10.5.2 存儲數值 261
10.5.3 存儲日期和時間 262
10.5.4 存儲預定義列錶 262
10.5.5 存儲二進製數據 262
10.6 小結 263
第11章 用PHP和SQL連接MySQL 264
11.1 檢查遠程服務器設置 264
11.2 PHP如何與MySQL通信 265
11.2.1 使用MySQL Improved擴展連接MySQL 266
11.2.2 使用PDO連接MySQL 266
11.2.3 PHP解決方案11-1:創建可重用的數據庫連接程序 267
11.2.4 從查詢中查看結果數 268
11.2.5 顯示查詢結果 271
11.2.6 MySQL連接對比錶 272
11.3 使用SQL與數據庫進行交互 273
11.3.1 編寫SQL查詢 274
11.3.2 優化SELECT查詢所檢索到的數據 275
11.3.3 SQL注入的危險性 278
11.4 小結 290
第12章 創建動態在綫圖片庫 292
12.1 為什麼不在數據庫中儲存圖像 293
12.2 規劃圖庫 293
12.3 把圖片庫元素轉換為PHP 295
12.4 構建動態元素 297
12.4.1 通過查詢字符串傳遞信息 298
12.4.2 創建一個多列錶 300
12.4.3 逐頁瀏覽長的記錄集 302
12.5 小結 308
第13章 管理內容 309
13.1 建立內容管理係統 309
13.1.1 創建blog數據庫錶 310
13.1.2 創建基本插入和更新錶單 311
13.1.3 插入新記錄 312
13.1.4 鏈接到更新和刪除頁麵 316
13.1.5 更新記錄 318
13.1.6 刪除記錄 326
13.2 迴顧4個基本的SQL命令 327
13.2.1 SELECT 327
13.2.2 INSERT命令 329
13.2.3 UPDATE命令 330
13.2.4 DELETE命令 330
13.3 安全性與錯誤消息 331
13.4 小結 331
第14章 格式化文本和日期 333
14.1 顯示文本節選 333
14.1.1 提取固定數目的字符 333
14.1.2 提取完整的單詞 334
14.1.3 提取第一段 335
14.1.4 提取完整的句子 337
14.2 使用日期 339
14.2.1 MySQL如何處理日期 340
14.2.2 在MySQL中插入日期 343
14.2.3 在PHP中處理日期 348
14.3 小結 360
第15章 從多個錶中提取數據 362
15.1 理解錶的關係 362
15.2 將圖像鏈接到文章 364
15.2.1 修改現有錶的結構 364
15.2.2 在錶中插入外鍵 365
15.2.3 從多個錶中選擇記錄 368
15.2.4 找到沒有匹配外鍵的記錄 372
15.2.5 創建智能鏈接 374
15.3 小結 374
第16章 管理多個數據庫錶 375
16.1 維護引用完整性 375
16.2 將記錄插入到多個錶中 378
16.2.1 創建交叉引用錶 380
16.2.2 獲取上傳圖像的文件名 381
16.2.3 調整插入錶單來處理多個錶 382
16.3 更新和刪除多個錶中的記錄 390
16.3.1 更新交叉引用錶中的記錄 390
16.3.2 執行刪除操作時保持引用完整性 393
16.3.3 創建具有外鍵約束的刪除腳本 396
16.3.4 創建沒有外鍵約束的刪除腳本 397
16.4 小結 398
第17章 使用數據庫驗證用戶身份 399
17.1 選擇一種加密方法 399
17.2 使用單嚮加密 400
17.2.1 創建一個用於存儲用戶詳細信息的錶 400
17.2.2 在數據庫中注冊新用戶 400
17.3 使用雙嚮加密 408
17.3.1 創建錶來存儲用戶詳細信息 408
17.3.2 注冊新用戶 408
17.3.3 使用雙嚮加密的用戶身份驗證 409
17.3.4 解密密碼 410
17.4 更新用戶詳細信息 411
17.5 延伸學習 411
· · · · · · (
收起)