內容簡介
第一篇(第1~7章)涵蓋PHP語言的基礎知識,包括PHP快速入門、數據存儲和讀取、數組、字元串操作與正則表達式、代碼重用與函式編寫、面向對象特性以及錯誤和異常處理。
第二篇(第8~13章)涵蓋MySQL的基礎知識,包括Web資料庫設計、創建和使用,以及使用PHP從Web訪問MySQL資料庫、MySQL高級管理和高級編程。
第三篇(第14~16章)講解Web套用的安全性,分析了Web套用的安全風險、如何構建安全的Web套用,以及使用PHP實現身份驗證的方法。
第四篇(第17~24章)講解PHP的高級編程技術,包括與檔案系統和伺服器的互動、使用網路和協定函式、管理日期和時間、國際化與本地化、圖像生成、使用PHP會話控制、JavaScript與PHP集成,以及PHP的其他有用特性。
第五篇(第25~31章)的重點是實戰,該篇從在大型項目中使用PHP和MySQL開始,針對當前最新Web套用開發潮流,介紹了幾個重要的Web產品實現細節,這些項目包括:用戶身份驗證和個性化、基於Web的電子郵件客戶端、社交媒體集成和購物車。
圖書目錄
本書讚譽
譯者序
前言
作者簡介
第一篇 使用PHP
第1章 PHP快速入門教程2
1.1 開始之前:了解PHP3
1.2 創建示例Web套用:Bob汽車零部件商店3
1.2.1 創建訂單表單3
1.2.2 表單處理 5
1.3 在HTML中嵌入PHP5
1.3.1 PHP標記6
1.3.2 PHP語句7
1.3.3 空格7
1.3.4 注釋 8
1.4 添加動態內容8
1.4.1 調用函式9
1.4.2 使用date()函式 9
1.5 訪問表單變數10
1.5.1 表單變數 10
1.5.2 字元串連線12
1.5.3 變數和字面量12
1.6 理解標識符 13
1.7 檢查變數類型 14
1.7.1 PHP的數據類型 14
1.7.2 類型強度 14
1.7.3 類型轉換 15
1.7.4 可變變數 15
1.8 聲明和使用常量 16
1.9 理解變數作用域 16
1.10 使用操作符 17
1.10.1 算術操作符 18
1.10.2 字元串操作符18
1.10.3 賦值操作符 19
1.10.4 比較操作符 21
1.10.5 邏輯操作符 22
1.10.6 位操作符 22
1.10.7 其他操作符 23
1.11 計算表單總金額 25
1.12 理解操作符優先權和結合性 26
1.13 使用變數處理函式27
1.13.1 測試和設定變數類型 27
1.13.2 測試變數狀態 28
1.13.3 變數的重解釋 29
1.14 根據條件進行決策 29
1.14.1 if語句 29
1.14.2 代碼塊 30
1.14.3 else語句 30
1.14.4 elseif語句 31
1.14.5 switch語句 32
1.14.6 比較不同條件 33
1.15 通過疊代實現重複動作 34
1.15.1 while循環 35
1.15.2 for循環和foreach循環 36
1.15.3 do...while循環 37
1.16 從控制結構或腳本中跳出 38
1.17 使用其他控制結構語法 38
1.18 使用declare 39
1.19 下一章 39
第2章 數據存儲和讀取40
2.1 保存數據以便後期使用 40
2.2 存儲和獲取Bob的訂單 41
2.3 檔案處理 41
2.4 打開檔案 42
2.4.1 選擇檔案模式 42
2.4.2 使用fopen()打開檔案 42
2.4.3 通過FTP或HTTP打開檔案 44
2.4.4 解決打開檔案時可能遇到的問題 45
2.5 寫檔案 47
2.5.1 fwrite()的參數 47
2.5.2 檔案格式 47
2.6 關閉檔案 48
2.7 讀檔案 50
2.7.1 以唯讀模式打開檔案:fopen()51
2.7.2 知道何時讀完檔案:feof()51
2.7.3 每次讀取一行數據:fgets()、fgetss()和fgetcsv() 52
2.7.4 讀取整個檔案:readfile()、fpassthru()、file()以及file_get_contents()53
2.7.5 讀取一個字元:fgetc() 53
2.7.6 讀取任意長度:fread()54
2.8 使用其他檔案函式 54
2.8.1 查看檔案是否存在:file_exists() 54
2.8.2 確定檔案大小:filesize() 55
2.8.3 刪除一個檔案:unlink()55
2.8.4 在檔案中定位:rewind()、fseek()和ftell() 55
2.9 檔案鎖定 56
2.10 更好的方式:資料庫管理系統 57
2.10.1 使用普通檔案的幾個問題 58
2.10.2 RDBMS是如何解決這些問題的 58
2.11 進一步學習 59
2.12 下一章 59
第3章 使用數組60
3.1 什麼是數組 60
3.2 數字索引數組 61
3.2.1 數字索引數組的初始化 61
3.2.2 訪問數組內容 62
3.2.3 使用循環訪問數組 63
3.3 使用不同索引的數組 64
3.3.1 初始化數組 64
3.3.2 訪問數組元素 64
3.3.3 使用循環語句 64
3.4 數組操作符 66
3.5 多維數組 66
3.6 數組排序 69
3.6.1 使用sort()函式 69
3.6.2 使用asort()函式和ksort()函式對數組排序 70
3.6.3 反向排序 70
3.7 多維數組排序 70
3.7.1 使用array_multisort()函式71
3.7.2 用戶定義排序 71
3.7.3 自定義排序函式的反序 73
3.8 對數組進行重新排序 73
3.8.1 使用shuffle()函式 73
3.8.2 逆序數組內容75
3.9 從檔案載入數組 75
3.10 執行其他數組操作 79
3.10.1 在數組中瀏覽:each()、current()、reset()、end()、next()、pos()和prev()79
3.10.2 對數組每一個元素套用函式:array_walk() 80
3.10.3 統計數組元素個數:count()、sizeof()和array_count_values() 81
3.10.4 將數組轉換成標量變數:extract() 81
3.11 進一步學習 83
3.12 下一章 83
第4章 字元串操作與正則表達式84
4.1 創建一個示例套用:智慧型表單郵件 84
4.2 字元串的格式化86
4.2.1 字元串截斷:chop()、ltrim()和trim() 87
4.2.2 格式化字元串以便輸出 87
4.3 使用字元串函式連線和分割字元串93
4.3.1 使用函式explode()、implode()和join() 93
4.3.2 使用strtok()函式 94
4.3.3 使用substr()函式 95
4.4 字元串比較 96
4.4.1 字元串的排序:strcmp()、strcasecmp()和strnatcmp() 96
4.4.2 使用strlen()函式判斷字元串長度 96
4.5 使用字元串函式匹配和替換子字元串 97
4.5.1 在字元串中查找字元串:strstr()、strchr()、strrchr()和stristr() 97
4.5.2 查找子字元串的位置:strpos()和strrpos() 98
4.5.3 替換子字元串:str_replace()和substr_replace() 99
4.6 正則表達式的介紹 100
4.6.1 基礎知識 100
4.6.2 分隔設定101
4.6.3 字元類和類型 101
4.6.4 重複 102
4.6.5 子表達式 102
4.6.6 子表達式計數 103
4.6.7 定位到字元串的開始或末尾 103
4.6.8 分支103
4.6.9 匹配特殊字元 103
4.6.10 元字元一覽 104
4.6.11 轉義序列104
4.6.12 回溯引用105
4.6.13 斷言105
4.6.14 在智慧型表單中套用 106
4.7 用正則表達式查找子字元串 107
4.8 用正則表達式替換子字元串 107
4.9 使用正則表達式分割字元串 108
4.10 進一步學習 109
4.11 下一章 109
第5章 代碼重用與函式編寫110
5.1 代碼重用的好處 110
5.1.1 成本111
5.1.2 可靠性 111
5.1.3 一致性 111
5.2 使用require()和include()函式 111
5.2.1 使用require()函式引入代碼112
5.2.2 使用require()製作Web站點模板113
5.2.3 使用auto_prepend_file和 auto_append_file 118
5.3 使用PHP函式 119
5.3.1 調用函式 119
5.3.2 調用未定義函式 120
5.3.3 理解大小寫和函式名稱121
5.4 自定義函式121
5.5 了解函式基本結構 122
5.6 參數使用 123
5.7 理解作用域126
5.8 引用傳遞和值傳遞128
5.9 使用return關鍵字 129
5.10 遞歸實現 131
5.11 進一步學習 134
5.12 下一章 134
第6章 面向對象特性135
6.1 理解面向對象概念 135
6.2 在PHP中創建類、屬性和操作 138
6.3 類的實例化139
6.4 使用類屬性 140
6.5 調用類操作141
6.6 使用private和public關鍵字控制訪問 141
6.7 編寫訪問器函式142
6.8 在PHP中實現繼承 143
6.9 使用Trait149
6.10 類設計 151
6.11 編寫自定義類代碼 151
6.12 理解PHP面向對象高級功能 158
6.13 下一章 170
第7章 錯誤和異常處理 171
7.1 異常處理的概念 171
7.2 Exception類173
7.3 用戶自定義異常 174
7.4 Bob汽車零部件商店套用的異常 176
7.5 異常和PHP的其他錯誤處理機制 179
7.6 進一步學習 180
7.7 下一章 180
第二篇 使用MySQL
第8章 Web資料庫設計182
8.1 關係型資料庫的概念 183
8.2 設計Web資料庫185
8.3 Web資料庫架構190
8.4 進一步學習191
8.5 下一章191
第9章 Web資料庫創建192
9.1 使用MySQL監視程式193
9.2 登錄MySQL194
9.3 創建資料庫和用戶195
9.4 設定用戶與許可權195
9.5 MySQL許可權系統介紹196
9.6 設定Web用戶201
9.7 使用正確的資料庫202
9.8 創建資料庫表202
9.9 理解MySQL標識符208
9.10 選擇列數據類型209
9.11 進一步學習213
9.12 下一章213
第10章 使用MySQL資料庫214
10.1 什麼是SQL214
10.2 在資料庫中插入數據215
10.3 從資料庫讀取數據217
10.4 更新資料庫記錄229
10.5 創建後修改表230
10.6 刪除資料庫記錄232
10.7 刪除表233
10.8 刪除資料庫233
10.9 進一步學習233
10.10 下一章233
第11章 使用PHP從Web訪問MySQL資料庫234
11.1 Web資料庫架構及工作原理234
11.2 從Web查詢資料庫238
11.3 向資料庫寫入數據243
11.4 使用其他PHP與資料庫互動接口247
11.5 進一步學習250
11.6 下一章250
第12章 MySQL高級管理251
12.1 深入理解許可權系統251
12.2 提升MySQL資料庫安全257
12.3 獲取資料庫的更多信息259
12.4 最佳化資料庫265
12.5 MySQL資料庫備份266
12.6 MySQL資料庫恢復267
12.7 實現複製267
12.8 進一步學習269
12.9 下一章269
第13章 MySQL高級編程270
13.1 LOAD DATA INFILE語句270
13.2 存儲引擎271
13.3 事務272
13.4 外鍵273
13.5 存儲過程274
13.6 觸發器281
13.7 進一步學習283
13.8 下一章283
第三篇 Web套用安全性
第14章 Web套用安全風險286
14.1 識別面臨的安全威脅286
14.2 了解對手292
14.3 下一章293
第15章 構建安全的Web套用294
15.1 安全策略294
15.2 代碼安全296
15.3 Web伺服器和PHP的安全306
15.4 資料庫伺服器的安全308
15.5 保護網路310
15.6 計算機和作業系統的安全312
15.7 災難計畫313
15.8 下一章313
第16章 使用PHP實現身份驗證方法314
16.1 識別訪問者314
16.2 實現訪問控制315
16.3 使用基本認證320
16.4 在PHP中使用基本認證320
16.5 使用Apache的.htaccess基本認證321
16.6 創建自定義認證324
16.7 進一步學習325
16.8 下一章325
第四篇 PHP高級編程技術
第17章 與檔案系統和伺服器互動328
17.1 上傳檔案328
17.2 使用目錄函式336
17.3 與檔案系統互動341
17.4 使用程式執行函式344
17.5 與環境互動:getenv()和putenv()347
17.6 進一步學習347
17.7 下一章347
第18章 使用網路和協定函式348
18.1 了解可用協定348
18.2 傳送和讀取郵件349
18.3 使用其他站點數據349
18.4 使用網路查詢函式352
18.5 備份或鏡像檔案355
18.6 進一步學習363
18.7 下一章363
第19章 管理日期和時間364
19.1 在PHP中獲得日期和時間364
19.2 PHP和MySQL的日期格式互轉371
19.3 在PHP中計算日期372
19.4 在MySQL中計算日期373
19.5 使用微秒374
19.6 使用日曆函式375
19.7 進一步學習375
19.8 下一章376
第20章 國際化與本地化377
20.1 本地化不只是翻譯377
20.2 理解字元集378
20.3 創建可本地化頁面基礎結構380
20.4 在國際化套用中使用gettext()函式383
20.5 進一步學習386
20.6 下一章386
第21章 生成圖像387
21.1 設定PHP圖像支持387
21.2 理解圖像格式388
21.3 創建圖像389
21.4 在其他頁面中使用自動創建的圖像393
21.5 使用文本和字型創建圖像394
21.6 繪製圖形圖像數據401
21.7 使用其他圖像函式409
21.8 下一章409
第22章 使用PHP會話控制410
22.1 什麼是會話控制410
22.2 理解基本會話功能410
22.3 實現簡單會話412
22.4 創建簡單會話示例414
22.5 配置會話控制416
22.6 使用會話控制實現身份驗證417
22.7 下一章423
第23章 JavaScript與PHP集成424
23.1理解AJAX424
23.2 jQuery概述425
23.3 在Web套用中使用jQuery425
23.4 在PHP中使用jQuery和AJAX434
23.5 進一步學習445
23.6 下一章445
第24章 PHP的其他有用特性446
24.1 字元串計算函式:eval()446
24.2 終止執行:die()和exit()447
24.3 序列化變數和對象448
24.4 獲取PHP環境信息448
24.5 臨時修改運行時環境450
24.6 高亮原始碼451
24.7 在命令行上使用PHP452
24.8 下一章453
第五篇 構建實用的PHP和MySQL項目
第25章 在大型項目中使用PHP和MySQL456
25.1 在Web開發中套用軟體工程技術457
25.2 規劃和運營Web套用項目457
25.3 代碼重用458
25.4 編寫可維護代碼458
25.5 實現版本控制462
25.6 選擇開發環境463
25.7 項目文檔化463
25.8 原型定義464
25.9 隔離邏輯和內容464
25.10 代碼最佳化465
25.11 測試466
25.12 進一步學習466
25.13 下一章467
第26章 調試和日誌468
26.1 編程錯誤468
26.1.1 語法錯誤468
26.1.2 運行時錯誤469
26.1.3 邏輯錯誤474
26.2 變數調試輔助475
26.3 錯誤報告級別477
26.4 修改錯誤報告設定478
26.5 觸發自定義錯誤479
26.6 錯誤日誌記錄480
26.7 錯誤日誌檔案482
26.8 下一章483
第27章 構建用戶身份驗證和個性化484
27.1 解決方案組件484
27.2 解決方案概述486
27.3 實現資料庫487
27.4 實現基本網站488
27.5 實現用戶身份驗證491
27.6 實現書籤存儲和讀取507
27.7 實現書籤推薦513
27.8 考慮可能的擴展516
第28章 使用Laravel構建基於Web的電子郵件客戶端(第一部分)517
28.1 Laravel 5介紹517
第29章 使用Laravel構建基於Web的電子郵件客戶端(第二部分) 536
29.1 使用Laravel構建簡單的IMAP客戶端536
29.2 創建基於Web的電子郵件客戶端561
29.3 小結581
第30章 社交媒體集成分享以及驗證582
30.1 OAuth:Web服務認證582
30.2 小結594
第31章 構建購物車595
31.1 解決方案組件595
31.2 解決方案概述597
31.3 實現資料庫599
31.4 實現線上類目601
31.4.3 顯示圖書詳情607
31.5 實現購物車608
31.6 實現支付622
31.7 實現管理界面624
31.8 擴展項目631
附錄A 安裝Apache、PHP和MySQL632
作者簡介
Luke Welling是OmniTI公司的一名軟體工程師,經常出席一些國際會議(例如,OSCON、 ZendCon、MySQLUC、PHPCon、OSDC以及LinuxTag)並就開源和Web開發話題發表演講。在加入OmniTI公司之前,他曾作為資料庫提供商的Web分析師為Hitwise.com公司工作。此外,他還是Tangled Web Design公司的獨立顧問,並曾在澳大利亞墨爾本RMIT大學教授計算機科學課程。他擁有套用科學(計算機科學)的學士學位。 Laura Thomson是Mozilla公司的研發總監。之前,她是OmniTI公司和Tangled Web Design公司的董事。此外,Laura曾經在RMIT大學和波士頓諮詢公司工作過。她擁有套用科學(
計算機科學)學士學位和工程學(計算機系統工程)學士學位。