目 錄
第1篇 基礎 入 門
第1章 揭開PHP的神秘面紗——我的
第一個PHP程序 3
1.1 認識PHP 4
1.1.1 什么是PHP 4
1.1.2 PHP的發展歷程 4
1.1.3 PHP語言的優勢 5
1.2 PHP 7的新特征 5
1.3 PHP服務器概述 7
1.4 新手的福音——安裝WampServer集成
開發環境 8
1.5 常用的開發利器 11
1.5.1 PHP代碼開發工具 11
1.5.2 網頁設計工具 12
1.5.3 文本編輯工具 12
1.6 案例實戰——我的第一個PHP程序 13
1.7 如何能學好PHP 7 14
1.8 疑難解惑 15
第2章 零基礎開始學習——PHP的基本
語法 17
2.1 PHP語言標識風格 18
2.2 熟悉編碼規范 18
2.2.1 什么是編碼規范 19
2.2.2 PHP的一些編碼規范 19
2.3 常量 21
2.3.1 聲明和使用常量 21
2.3.2 使用系統預定義常量 21
2.4 變量 23
2.4.1 PHP中的變量聲明 23
2.4.2 可變變量和變量的引用 24
2.4.3 變量作用域 25
2.4.4 變量的銷毀 27
2.5 理解變量的類型 28
2.5.1 什么是類型 28
2.5.2 整型(integer) 29
2.5.3 浮點型(float或double) 29
2.5.4 布爾型(boolean) 29
2.5.5 字符串型(string) 29
2.5.6 數組型(array) 30
2.5.7 對象型(object) 32
2.5.8 NULL型 32
2.5.9 資源類型(Resource) 32
2.5.10 數據類型之間的相互轉換 32
2.6 PHP 7的新變化——聲明標量類型和
函數返回值類型 33
2.7 使用運算符 35
2.7.1 算術運算符 35
2.7.2 字符串連接符 36
2.7.3 賦值運算符 36
2.7.4 比較運算符 37
2.7.5 邏輯運算符 38
2.7.6 按位運算符 38
2.7.7 否定控制運算符 39
2.7.8 錯誤控制運算符 39
2.7.9 三元運算符 39
2.7.10 運算符的優先級和結合規則 39
2.8 PHP 7的新變化——合并運算符和
組合運算符 40
2.9 PHP中的表達式 40
2.10 案例實戰——創建多維數組 41
2.11 疑難解惑 42
第3章 實現定制功能——函數的應用 43
3.1 認識函數 44
3.2 內置函數 44
3.2.1 數學函數 44
3.2.2 變量相關的函數 45
3.3 自定義函數 46
3.3.1 定義和調用函數 46
3.3.2 向函數傳遞參數值 47
3.3.3 向函數傳遞參數引用 48
3.3.4 從函數中返回值 48
3.3.5 引用函數 49
3.3.6 取消函數引用 50
3.3.7 變量函數 50
3.4 PHP 7的新變化——新增intdiv()函數 51
3.5 包含文件 51
3.5.1 require和include 52
3.5.2 include_once和require_once 52
3.6 疑難解惑 53
第4章 程序的執行方向——程序控制
結構 55
4.1 流程控制概述 56
4.2 條件控制結構 56
4.2.1 單一條件分支結構(if語句) 56
4.2.2 雙向條件分支結構(if…else
語句) 57
4.2.3 多向條件分支結構(elseif
語句) 57
4.2.4 多向條件分支結構(switch
語句) 58
4.3 循環控制結構 60
4.3.1 while循環語句 60
4.3.2 do...while循環語句 60
4.3.3 for循環語句 61
4.3.4 foreach循環語句 62
4.3.5 流程控制的另一種書寫格式 62
4.3.6 使用break/continue語句
跳出循環 64
4.4 案例實戰1——條件分支結構的應用 65
4.5 案例實戰2——循環控制結構的應用 66
4.6 疑難解惑 67
第5章 不可不說的文本數據——
字符串 69
5.1 字符串的單引號和雙引號 70
5.2 字符串的連接符 71
5.3 字符串的基本操作 72
5.3.1 手動和自動轉義字符串中的
字符 72
5.3.2 計算字符串的長度 72
5.3.3 字符串單詞統計 73
5.3.4 清理字符串中的空格 74
5.3.5 字符串的切分與組合 74
5.3.6 字符串子串的截取 75
5.3.7 字符串子串的替換 76
5.3.8 字符串查找 77
5.4 疑難解惑 77
第6章 匹配文本有妙招——正則
表達式 79
6.1 什么是正則表達式 80
6.2 正則表達式的語法規則 80
6.2.1 方括號([ ]) 80
6.2.2 連字符(-) 80
6.2.3 點號字符(.) 80
6.2.4 限定符( *?{n,m}) 81
6.2.5 行定位符(^和$) 81
6.2.6 排除字符([^]) 81
6.2.7 括號字符(()) 81
6.2.8 選擇字符(|) 81
6.2.9 轉義字符與反斜杠 81
6.2.10 認證E-mail的正則表達式 82
6.3 Perl 兼容正則表達式函數 82
6.3.1 使用正則表達式對字符串
進行匹配 82
6.3.2 使用正則表達式替換字符串的
子串 84
6.3.3 使用正則表達式切分字符串 85
6.4 案例實戰——創建商品在線訂單頁面 85
6.5 疑難解惑 89
第2篇 核心 技 術
第7章 特殊的元素集合——數組 93
7.1 什么是數組 94
7.2 數組類型 94
7.2.1 數字索引數組 94
7.2.2 關聯索引數組 95
7.3 數組的結構 95
7.3.1 一維數組 96
7.3.2 多維數組 96
7.4 遍歷數組 98
7.4.1 遍歷一維數字索引數組 98
7.4.2 遍歷一維關聯索引數組 98
7.4.3 遍歷多維數組 99
7.5 數組排序 100
7.5.1 一維數組排序 100
7.5.2 多維數組排序 102
7.6 字符串與數組的轉換 103
7.7 向數組中添加和刪除元素 104
7.7.1 向數組中添加元素 104
7.7.2 從數組中刪除元素 105
7.8 查詢數組中的指定元素 106
7.9 統計數組元素的個數 108
7.10 刪除數組中重復的元素 109
7.11 調換數組中的鍵值和元素值 110
7.12 數組的序列化 111
7.13 疑難解惑 112
第8章 表單的動態效果——PHP與
Web頁面交互 113
8.1 創建動態內容 114
8.2 表單與PHP 114
8.3 設計表單元素 115
8.3.1 表單的基本結構 115
8.3.2 文本框 115
8.3.3 復選框 116
8.3.4 單選按鈕 118
8.3.5 下拉列表 119
8.3.6 重置按鈕和提交按鈕 120
8.4 傳遞數據 123
8.4.1 用POST方式傳遞數據 123
8.4.2 用GET方式傳遞數據 123
8.5 PHP獲取表單傳遞數據的方法 124
8.6 PHP對URL傳遞的參數進行編碼 125
8.7 案例實戰——團購商品訂單表 126
8.8 疑難解惑 127
第9章 時間很重要——管理日期
和時間 129
9.1 系統時區的設置 130
9.1.1 時區劃分 130
9.1.2 時區設置 130
9.2 PHP的日期和時間函數 130
9.2.1 關于Unix時間戳 130
9.2.2 獲取當前的時間戳 131
9.2.3 獲取當前的日期和時間 131
9.2.4 使用時間戳獲取日期信息 132
9.2.5 檢驗日期的有效性 135
9.2.6 輸出格式化時間戳的日期
和時間 135
9.2.7 顯示本地化的日期和時間 137
9.2.8 將日期和時間解析為Unix
時間戳 138
9.2.9 日期時間在PHP和MySQL
數據格式之間轉換 138
9.3 案例實戰1——實現倒計時功能 139
9.4 案例實戰2——比較兩個時間的大小 139
9.5 疑難解惑 140
第10章 保持HTTP連接狀態——
Cookie和會話管理 141
10.1 Cookie的基本操作 142
10.1.1 什么是Cookie 142
10.1.2 創建Cookie 142
10.1.3 讀取Cookie 143
10.1.4 刪除Cookie 144
10.2 認識Session 145
10.2.1 什么是Session 145
10.2.2 Session的基本功能 146
10.2.3 Cookie與Session 146
10.2.4 儲存Session ID在Cookie
或URL中 146
10.3 會話管理 146
10.3.1 創建會話 146
10.3.2 注冊會話變量 147
10.3.3 使用會話變量 148
10.3.4 注銷和銷毀會話變量 148
10.4 案例實戰——綜合應用會話管理 149
10.5 疑難解惑 150
第11章 設計圖形圖像——GD繪圖與
圖像處理 151
11.1 在PHP中加載GD庫 152
11.2 圖形圖像的典型應用案例 154
11.2.1 創建一個簡單的圖像 155
11.2.2 使用GD2的函數在圖片上
添加文字 156
11.2.3 使用TrueType字體處理中文
生成圖片 157
11.3 Jpgraph庫的基本操作 159
11.3.1 Jpgraph的安裝 160
11.3.2 Jpgraph的配置 160
11.4 案例實戰1——制作圓形統計圖 161
11.5 案例實戰2——制作3D餅形
統計圖 163
11.6 疑難解惑 164
第12章 不可避免的問題——錯誤處理
和異常處理 167
12.1 常見的錯誤和異常 168
12.2 錯誤處理 171
12.2.1 php.ini中的錯誤處理機制 171
12.2.2 應用DIE語句來調試 172
12.2.3 自定義錯誤和錯誤觸發器 172
12.2.4 錯誤記錄 175
12.3 PHP 7新變化——改變了錯誤的報告
方式 176
12.4 異常處理 177
12.4.1 異常的基本處理方法 177
12.4.2 自定義的異常處理器 179
12.4.3 處理多個異常 180
12.4.4 設置頂層異常處理器 181
12.5 案例實戰——處理異常或錯誤 182
12.6 疑難解惑 183
第13章 與外界的交流——操作文件
與目錄 185
13.1 查看文件和目錄 186
13.1.1 查看文件名稱 186
13.1.2 查看目錄名稱 186
13.1.3 查看文件真實目錄 187
13.2 查看文件信息 187
13.2.1 查看文件的類型 187
13.2.2 查看文件的訪問和修改時間 188
13.3 文件操作 188
13.3.1 打開文件和關閉文件 189
13.3.2 讀取文件 190
13.3.3 文件數據寫入 191
13.3.4 重命名和移動文件 193
13.3.5 復制文件 193
13.3.6 刪除文件 194
13.4 目錄操作 194
13.5 上傳文件 198
13.5.1 全局變量$_FILES 198
13.5.2 文件上傳 199
13.6 案例實戰——編寫訪客計數器 201
13.7 疑難解惑 202
第14章 主流的編程思想——面向
對象編程 203
14.1 類和對象的介紹 204
14.2 類的基本操作 205
14.2.1 類的聲明 205
14.2.2 成員屬性 205
14.2.3 成員方法 206
14.2.4 類的實例化 206
14.2.5 訪問類中的成員屬性和方法 207
14.3 構造方法和析構方法 208
14.4 訪問器 210
14.5 類的繼承 211
14.6 抽象類和接口 212
14.6.1 抽象類 212
14.6.2 接口 213
14.7 面向對象的多態性 215
14.7.1 通過繼承實現多態 215
14.7.2 通過接口實現多態 216
14.8 PHP 7的新變化——支持匿名類 217
14.9 疑難解惑 218
第15章 提升網站安全的武器——PHP
加密技術 219
15.1 使用PHP加密函數 220
15.1.1 實例1——使用md5()函數進行
加密 220
15.1.2 實例2——使用crypt()函數
進行加密 220
15.1.3 實例3——使用sha1()函數進行
加密 222
15.2 使用PHP加密擴展庫 222
15.2.1 實例4——安裝和使用Mcrypt
擴展庫 222
15.2.2 實例5——使用Mhash
擴展庫 224
15.3 疑難解惑 226
第3篇 高級 技 能
第16章 管理MySQL的利器——
phpMyAdmin操作MySQL
數據庫 229
16.1 什么是MySQL 230
16.1.1 客戶-服務器軟件 230
16.1.2 數據庫的原理 230
16.1.3 MySQL版本 231
16.1.4 MySQL的優勢 232
16.2 創建MySQL數據庫和數據表 232
16.2.1 啟動phpMyAdmin管理程序 232
16.2.2 創建數據庫 233
16.2.3 認識數據表的字段 234
16.2.4 創建數據表 236
16.2.5 添加數據 238
16.3 加密MySQL數據庫 239
16.3.1 MySQL數據庫的安全問題 239
16.3.2 為MySQL管理賬號加上
密碼 240
16.4 數據庫的備份與還原 241
16.4.1 數據庫的備份 241
16.4.2 數據庫的還原 242
16.5 疑難解惑 243
第17章 數據庫編程——MySQL數據庫
與SQL查詢 245
17.1 安裝與配置MySQL 5.7 246
17.1.1 安裝MySQL 5.7 246
17.1.2 配置MySQL 5.7 248
17.2 啟動服務并登錄MySQL數據庫 251
17.2.1 啟動MySQL服務 251
17.2.2 登錄MySQL數據庫 252
17.3 MySQL數據庫的基本操作 254
17.3.1 創建數據庫 254
17.3.2 查看數據庫 254
17.3.3 刪除數據庫 255
17.3.4 選擇數據庫 255
17.4 MySQL數據表的基本操作 256
17.4.1 創建數據表 256
17.4.2 查看數據表的結構 257
17.4.3 修改數據表結構 258
17.4.4 刪除數據表 259
17.5 MySQL語句的操作 259
17.5.1 插入記錄 259
17.5.2 查詢記錄 260
17.5.3 修改記錄 261
17.5.4 刪除記錄 261
17.6 MySQL數據庫的備份與還原 261
17.6.1 數據備份 261
17.6.2 數據還原 268
17.7 疑難解惑 270
第18章 最經典的方法——使用MySQLi
操作MySQL 271
18.1 PHP訪問MySQL數據庫的一般
步驟 272
18.2 連接數據庫前的準備工作 272
18.3 PHP操作MySQL數據庫 273
18.3.1 連接MySQL服務器 273
18.3.2 選擇數據庫 274
18.3.3 創建數據庫 275
18.3.4 創建數據表 276
18.3.5 添加數據 278
18.3.6 一次插入多條數據 279
18.3.7 讀取數據 281
18.3.8 釋放資源 282
18.3.9 關閉連接 282
18.4 案例實戰1——動態添加員工信息 283
18.5 案例實戰2——動態查詢數據信息 284
18.6 提升安全性——防止SQL注入的
攻擊 286
18.7 疑難解惑 287
第19章 最兼容的方法——使用PDO
操作MySQL數據庫 289
19.1 認識PDO 290
19.2 PDO的安裝 290
19.3 使用PDO操作MySQL 291
19.3.1 連接MySQL數據庫 292
19.3.2 創建數據庫 293
19.3.3 創建數據表 294
19.3.4 添加數據 295
19.3.5 一次插入多條數據 296
19.3.6 讀取數據 296
19.4 提升安全性——防止SQL注入的
攻擊 298
19.5 疑難解惑 299
第20章 跨平臺的數據通信——PHP
與XML技術 301
20.1 理解XML概念 302
20.2 XML語法基礎 303
20.2.1 XML文檔組成和聲明 303
20.2.2 XML元素介紹 304
20.2.3 處理指令實體引用 306
20.2.4 XML命名空間 307
20.2.5 XML DTD 308
20.2.6 使用CDATA標簽 309
20.3 將XML文檔轉換為HTML加以
輸出 309
20.4 在PHP中創建XML文檔 310
20.5 使用SimpleXML擴展 310
20.5.1 創建SimpleXMLElement
對象 310
20.5.2 訪問特定節點元素和屬性 312
20.5.3 添加XML元素和屬性 312
20.6 案例實戰——動態創建XML文檔 313
20.7 疑難解惑 314
第21章 異步通信更高效——PHP與
Ajax技術 315
21.1 Ajax概述 316
21.1.1 什么是Ajax 316
21.1.2 Ajax的工作過程 319
21.1.3 Ajax的關鍵元素 319
21.1.4 CSS與Ajax 320
21.2 Ajax的核心技術 320
21.2.1 全面剖析XMLHttpRequest
對象 320
21.2.2 發出Ajax請求 322
21.2.3 處理服務器響應 324
21.3 案例實戰1——應用Ajax技術檢查
用戶名 325
21.4 案例實戰2——應用Ajax技術實現
投票功能 328
21.5 疑難解惑 331
第22章 增強PHP的功能——PHP
與jQuery技術 333
22.1 jQuery概述 334
22.1.1 jQuery能做什么 334
22.1.2 jQuery的特點 334
22.1.3 jQuery的技術優勢 335
22.2 下載并配置jQuery 337
22.2.1 下載jQuery 337
22.2.2 配置jQuery 339
22.3 我的第一個jQuery程序 339
22.3.1 開發前的一些準備工作 339
22.3.2 具體的程序開發 340
22.4 jQuery選擇器 340
22.4.1 jQuery的工廠函數 340
22.4.2 常見選擇器 341
22.5 jQuery控制頁面 343
22.6 jQuery的事件處理 344
22.6.1 頁面加載響應事件 344
22.6.2 事件捕獲與事件冒泡 345
22.7 jQuery的動畫效果 346
22.8 案例實戰——PHP與jQuery技術的
應用 347
22.9 疑難解惑 349
第23章 靈活而強大的框架——
ZendFrame-work框架 351
23.1 什么是Zend Framework框架 352
23.2 Zend Framework的目錄結構 352
23.3 Zend Framework的安裝與測試 353
23.3.1 實例1——Zend Framework的
安裝 353
23.3.2 實例2——創建一個新的Zend
Framework應用 353
23.4 PHP與Zend Framework的基本
操作 356
23.4.1 實例3——在Zend Framework
應用中創建控制層文件 356
23.4.2 實例4——在Zend Framework的
控制層文件中添加一個action 357
23.4.3 實例5——在Zend Framework
中創建布局(layout) 358
23.4.4 實例6——在Zend Framework
中的數據庫操作 359
23.4.5 實例7——在Zend Framework
中創建表單 360
23.5 疑難解惑 362
第4篇 項目 實 戰
第24章 項目實訓1——開發驗證碼
系統 365
24.1 系統分析 366
24.1.1 學習目標 366
24.1.2 需求分析 366
24.1.3 系統文檔 366
24.2 系統的代碼實現 367
24.2.1 系統主界面 367
24.2.2 生成并輸入驗證碼功能 368
24.2.3 驗證碼控制器 369
24.3 系統測試 371
第25章 項目實訓2——開發個人博客
系統 373
25.1 系統的需求分析 374
25.1.1 學習目標 374
25.1.2 需求分析 374
25.1.3 系統文檔 374
25.2 數據庫分析 375
25.2.1 分析數據庫 375
25.2.2 創建數據表 375
25.3 個人博客系統的代碼實現 376
25.3.1 博客數據模型的文件 376
25.3.2 個人博客系統的主頁面 380
25.3.3 個人博客新建和編輯頁面 382
25.3.4 個人博客刪除頁面 384
25.4 系統測試 385
第26章 項目實訓3——開發用戶權限
系統 387
26.1 必備知識 388
26.2 系統的需求分析 389
26.2.1 學習目標 389
26.2.2 需求分析 389
26.2.3 系統文檔 389
26.3 數據庫分析 390
26.3.1 分析數據庫 390
26.3.2 創建數據表 391
26.4 用戶權限系統的代碼實現 393
26.4.1 系統入口文件 393
26.4.2 頁面控制器 393
26.4.3 用戶登錄頁面 395
26.4.4 數據模型的文件 397
26.4.5 用戶數據模型頁面 399
26.4.6 角色數據模型頁面 401
26.4.7 權限數據模型頁面 402
26.4.8 權限顯示頁面 403
26.5 系統測試 404
第27章 項目實訓4——開發社區市場
系統 407
27.1 必備知識 408
27.2 系統的需求分析 408
27.2.1 學習目標 408
27.2.2 需求分析 409
27.2.3 系統文檔 409
27.3 還原數據庫 410
27.4 社區市場系統的代碼實現 411
27.4.1 系統入口文件 411
27.4.2 項目配置文件 411
27.4.3 物品與需求展示控制器 414
27.4.4 用戶后臺控制器 434
27.4.5 數據模型的文件 448
27.5 系統測試 450