第1章 LAMP網站構建 1
1.1 網站軟件簡介 1
1.1.1 B/S軟件體係結構 1
1.1.2 動態網站介紹 2
1.2 動態網站軟件開發所需的Web構件 3
1.2.1 客戶端瀏覽器 4
1.2.2 擴展超文本標記語言XHTML 5
1.2.3 層疊樣式錶CSS 6
1.2.4 XML和XSLT 6
1.2.5 客戶端腳本編程語言 7
1.2.6 Web服務器 8
1.2.7 服務器端腳本編程語言 9
1.2.8 數據庫管理係統 10
1.3 網站軟件開發平颱及工作流程 11
1.3.1 動態網站開發平颱 11
1.3.2 動態網站開發平颱技術比較 12
1.4 客戶端與服務器端交互的工作原理 13
1.4.1 HTTP協議是什麼 13
1.4.2 Web的工作原理 14
1.5 LAMP網站開發組閤概述 16
1.5.1 Linux操作係統 17
1.5.2 Web服務器Apache 17
1.5.3 MySQL數據庫管理係統 18
1.5.4 PHP後颱腳本編程語言 18
1.5.5 LAMP發展趨勢 20
1.6 小結 21
自測題 21
第2章 搭建PHP的開發環境 23
2.1 環境安裝對操作係統的選擇 23
2.1.1 選擇網站運營的操作係統 23
2.1.2 選擇網站開發的操作係統 24
2.2 Linux係統下源代碼包方式安裝環境 24
2.2.1 安裝前準備 24
2.2.2 編譯安裝過程介紹 26
2.2.3 安裝libxml2最新庫文件 27
2.2.4 安裝libmcrypt最新庫文件 27
2.2.5 安裝zlib最新庫文件 28
2.2.6 安裝libpng最新庫文件 29
2.2.7 安裝jpeg6最新庫文件 29
2.2.8 安裝freetype最新庫文件 30
2.2.9 安裝autoconf最新的庫文件 30
2.2.10 安裝最新的GD庫文件 31
2.2.11 安裝新版本的Apache服務器 31
2.2.12 安裝MySQL數據庫管理係統 32
2.2.13 安裝最新版本的PHP模塊 36
2.2.14 安裝Zend加速器 38
2.2.15 phpMyAdmin的安裝 39
2.2.16 phpMyAdmin的配置 40
2.3 在Windows係統上安裝Web工作環境 42
2.3.1 安裝前準備 42
2.3.2 安裝Apache 43
2.3.3 安裝MySQL 46
2.3.4 安裝PHP 52
2.3.5 安裝Zend加速器 55
2.4 Window係統上安裝集成開發環境 57
2.4.1 安裝前準備 58
2.4.2 安裝步驟 58
2.4.3 環境測試 60
2.5 小結 61
自測題 61
第3章 Apache服務器的配置 62
3.1 Apache簡介 62
3.1.1 Apache的誕生 63
3.1.2 Apache的特性 63
3.2 Apache服務器的目錄結構 63
3.3 Apache服務器配置文件結構說明 64
3.3.1 Apache服務器配置文件位置 64
3.3.2 配置文件的語法 65
3.4 Apache服務器全局參數設置 66
3.4.1 在主配置文件httpd.conf中的全局參數 67
3.4.2 附加配置文件httpd-default.conf中的
全局參數 70
3.4.3 附加配置文件httpd-mpm.conf中的全局
參數 71
3.5 Apache服務器中使用配置段(容器) 74
3.5.1 文件係統容器 76
3.5.2 網絡空間容器 76
3.5.3 通配符和正則錶達式 76
3.5.4 如何選擇使用容器 77
3.6 .htaccess文件和訪問限製 77
3.6.1 設置路徑彆名 78
3.6.2 在.htaccess文件中設置目錄的訪問限製 80
3.7 設置虛擬主機 80
3.7.1 基於IP地址的虛擬主機 81
3.7.2 基於主機名的虛擬主機 83
3.8 小結 87
自測題 87
第4章 XHTML和CSS網頁標準化布局 89
4.1 網頁製作概述 89
4.1.1 XHTML基礎 89
4.1.2 CSS基礎 91
4.2 HTML的設計與應用 92
4.2.1 XHTML語言的語法 92
4.2.2 XHTML文件的主體結構 94
4.2.3 文字版麵的編輯 97
4.2.4 創建圖像和鏈接 99
4.2.5 使用XHTML錶格 101
4.2.6 XHTML框架結構 103
4.2.7 XHTML錶單設計 106
4.3 CSS的設計與應用 109
4.3.1 將樣式錶加入到HTML中 110
4.3.2 CSS選擇符 111
4.3.3 常見的樣式屬性和值 113
4.4 DIV+CSS網頁標準化布局 120
4.4.1 DIV+CSS的優勢 121
4.4.2 “無意義”的元素div和span 121
4.4.3 區塊框模型 122
4.4.4 區塊框定位 123
4.4.5 區塊框浮動 124
4.4.6 使用區塊框設計頁麵布局 126
4.5 XHTML和CSS網站首頁麵布局實例 129
4.5.1 XHTML文件的設計 129
4.5.2 CSS文件設計 130
4.6 小結 132
自測題 133
第5章 PHP的基本語法 136
5.1 PHP在Web開發中的應用 136
5.2 第一個PHP腳本程序 138
5.2.1 PHP語言標記 141
5.2.2 指令分隔符“分號” 144
5.2.3 程序注釋 144
5.2.4 在程序中使用空白的處理 145
5.3 變量 146
5.3.1 變量的聲明 146
5.3.2 變量的命名 147
5.3.3 可變變量 148
5.3.4 變量的引用賦值 149
5.4 變量的類型 149
5.4.1 類型介紹 150
5.4.2 布爾型(boolean) 150
5.4.3 整型(integer) 151
5.4.4 浮點型(float或double) 152
5.4.5 字符串(String) 152
5.4.6 數組(Array) 155
5.4.7 對象(Object) 155
5.4.8 資源類型(Resource) 156
5.4.9 NULL類型 156
5.4.10 僞類型介紹 157
5.4.11 數據類型之間相互轉換 157
5.5 常量 160
5.5.1 常量的定義和使用 160
5.5.2 常量和變量 161
5.5.3 預定義常量 161
5.6 PHP中的運算符 162
5.6.1 算術運算符 163
5.6.2 字符串運算符 165
5.6.3 賦值運算符 165
5.6.4 比較運算符 166
5.6.5 邏輯運算符 167
5.6.6 位運算符 168
5.6.7 其他運算符 171
5.6.8 運算符的優先級 173
5.7 錶達式 174
5.8 小結 174
自測題 174
第6章 PHP的語言結構 176
6.1 流程控製概述 176
6.2 分支結構 176
6.2.1 單一條件分支結構(if) 177
6.2.2 雙嚮條件分支結構(else子句) 178
6.2.3 多嚮條件分支結構(elseif子句) 179
6.2.4 多嚮條件分支結構(switch語句) 180
6.2.5 巢狀條件分支結構 183
6.2.6 條件分支結構應用實例(簡單計算器) 184
6.3 循環結構 186
6.3.1 while語句 187
6.3.2 do…while循環 189
6.3.3 for語句 190
6.3.4 特殊的流程控製語句 192
6.4 PHP中的函數 195
6.4.1 函數的定義 195
6.4.2 自定義函數 195
6.4.3 函數的工作原理和結構化編程 201
6.4.4 PHP變量的範圍 202
6.4.5 參數的傳遞 204
6.4.6 變量函數 207
6.4.7 遞歸函數 208
6.4.8 使用自定義函數庫 209
6.4.9 使用係統函數庫 210
6.5 小結 210
自測題 211
第7章 PHP中的數組與數據結構 214
7.1 數組的概述 214
數組的分類 215
7.2 數組的定義 216
7.2.1 直接賦值的方式聲明數組 216
7.2.2 使用array()語言結構新建數組 218
7.2.3 多維數組的聲明 218
7.3 數組的遍曆 220
7.3.1 使用for語句循環遍曆數組 220
7.3.2 使用foreach語句遍曆數組 222
7.3.3 聯閤使用list( )、each( )和while循環
遍曆數組 225
7.3.4 使用數組的內部指針控製函數遍曆
數組 227
7.4 預定義數組 228
7.4.1 服務器變量:$_SERVER 229
7.4.2 環境變量:$_ENV 229
7.4.3 HTTP GET變量:$_GET 230
7.4.4 HTTP POST變量:$_POST 230
7.4.5 request變量:$_REQUEST 232
7.4.6 HTTP文件上傳變量:$_FILES 232
7.4.7 HTTP Cookies:$_COOKIE 232
7.4.8 Session變量:$_SESSION 232
7.4.9 Global變量:$GLOBALS 233
7.5 數組的相關處理函數 233
7.5.1 數組的鍵/值操作函數 233
7.5.2 統計數組元素的個數和唯一性 236
7.5.3 使用迴調函數處理數組的函數 237
7.5.4 數組的排序函數 240
7.5.5 拆分、閤並、分解和接閤數組 244
7.5.6 數組與數據結構 247
7.5.7 其他有用的數組處理函數 248
7.6 小結 250
自測題 250
第8章 PHP麵嚮對象的程序設計 253
8.1 麵嚮對象的介紹 253
8.1.1 類和對象之間的關係 253
8.1.2 麵嚮對象的程序設計 254
8.2 如何抽象一個類 255
8.2.1 類的聲明 255
8.2.2 成員屬性 256
8.2.3 成員方法 257
8.3 通過類實例化對象 258
8.3.1 創建對象 259
8.3.2 對象類型在內存中的分配 259
8.3.3 對象中成員的訪問 261
8.3.4 特殊的對象引用“$this” 263
8.3.5 構造方法與析構方法 264
8.4 封裝性 267
8.4.1 設置私有成員 268
8.4.2 私有成員的訪問 269
8.4.3 __set()、__get()、__isset()和__unset()
四個方法 271
8.5 繼承性 276
8.5.1 類繼承的應用 277
8.5.2 訪問類型控製 278
8.5.3 子類中重載父類的方法 280
8.6 常見的關鍵字和魔術方法 282
8.6.1 final關鍵字的應用 283
8.6.2 static和const關鍵字的使用 283
8.6.3 剋隆對象 285
8.6.4 類中通用的方法__toString() 287
8.6.5 通過__call()方法處理錯誤調用 287
8.6.6 自動加載類 288
8.6.7 對象串行化 289
8.7 抽象類與接口 291
8.7.1 抽象方法和抽象類 291
8.7.2 接口技術 293
8.8 多態性的應用 295
8.9 小結 300
自測題 300
第9章 字符串處理與正則錶達式 303
9.1 字符串的處理介紹 303
9.1.1 字符串的處理方式 303
9.1.2 字符串類型的特點 303
9.2 常用的字符串輸齣函數 304
9.3 常用的字符串格式化函數 306
9.3.1 去除空格和字符串填補函數 307
9.3.2 字符串大小寫的轉換 308
9.3.3 和HTML標簽相關的字符串格式化 309
9.3.4 其他字符串格式化函數 313
9.4 字符串比較函數 314
9.4.1 按字節順序進行字符串比較 314
9.4.2 按自然排序進行字符串比較 315
9.5 正則錶達式在字符串處理中的應用 316
9.5.1 正則錶達式簡介 316
9.5.2 正則錶達式的語法規則 317
9.6 與Perl兼容的正則錶達式函數 322
9.6.1 字符串的匹配與查找 323
9.6.2 字符串的替換 326
9.6.3 字符串的分割和連接 331
9.7 文章發布操作示例 333
9.8 小結 337
自測題 337
第10章 PHP常用功能模塊 340
10.1 錯誤和異常處理 340
10.1.1 錯誤類型和基本的調試方法 341
10.1.2 錯誤日誌 343
10.1.3 異常處理 345
10.2 日期和時間 350
10.2.1 UNIX時間戳 350
10.2.2 在PHP中獲取日期和時間 351
10.2.3 日期和時間格式化輸齣 352
10.2.4 修改PHP的默認時區 353
10.2.5 使用微秒計算PHP腳本執行時間 354
10.3 動態圖像處理 355
10.3.1 PHP中GD庫的使用 355
10.3.2 畫布管理 356
10.3.3 設置顔色 357
10.3.4 生成圖像 358
10.3.5 繪製圖像 359
10.3.6 在圖像中繪製文字 361
10.3.7 在PHP中實現驗證碼類的設計.. 363
10.4 小結 367
自測題 367
第11章 文件係統處理 369
11.1 文件係統概述 369
11.1.1 文件類型 369
11.1.2 文件的屬性 370
11.2 目錄的基本操作 373
11.2.1 解析目錄路徑 373
11.2.2 遍曆目錄 375
11.2.3 統計目錄大小 376
11.2.4 建立和刪除目錄 377
11.2.5 復製或移動目錄 377
11.3 文件的基本操作 378
11.3.1 文件的打開與關閉 378
11.3.2 寫入文件 380
11.3.3 讀取文件內容 381
11.3.4 訪問遠程文件 383
11.3.5 移動文件指針 384
11.3.6 文件的鎖定機製 385
11.3.7 文件的一些基本操作函數 387
11.4 文件的上傳與下載 388
11.4.1 文件上傳 389
11.4.2 處理多個文件上傳 392
11.4.3 文件下載 393
11.5 文件係統項目實例 394
11.5.1 功能分析 394
11.5.2 係統功能設計 395
11.5.3 實例代碼實現 396
11.6 小結 418
自測題 418
第12章 MySQL數據庫設計 420
12.1 MySQL數據庫管理 420
12.1.1 數據庫管理係統 420
12.1.2 結構化查詢語言SQL 421
12.1.3 MySQL數據庫的連接與關閉 422
12.1.4 創建、選擇及查看數據庫 423
12.2 MySQL數據庫中數據錶的設計 423
12.2.1 數據錶(Table) 423
12.2.2 數據值和列類型 424
12.2.3 數據字段屬性 427
12.2.4 創建、修改及刪除錶 427
12.2.5 數據錶的類型及存儲位置 430
12.2.6 數據錶的默認字符集 431
12.2.7 創建索引 432
12.3 數據庫的設計步驟 435
12.3.1 需求分析 435
12.3.2 概念設計 437
12.3.3 邏輯設計 439
12.4 SQL語言設計 441
12.4.1 執行DDL命令操作數據對象 441
12.4.2 使用DML命令操作數據錶中的數據
記錄 443
12.4.3 通過DQL命令查詢數據錶中的數據 445
12.5 使用PHP腳本嚮MySQL服務器發送
SQL 455
12.5.1 在PHP腳本中連接MySQL服務器 456
12.5.2 在PHP程序中選擇已創建的數據庫 456
12.5.3 執行SQL命令 457
12.5.4 在PHP腳本中處理SELECT查詢
結果集 458
12.6 小結 460
自測題 460
第13章 PHP的mysqli擴展 464
13.1 啓用mysqli擴展模塊 464
13.2 使用mysqli類 465
13.2.1 連接MySQL服務器 466
13.2.2 處理連接錯誤報告 467
13.2.3 關閉與MySQL服務器連接 468
13.2.4 執行SQL命令 469
13.3 使用mysqli_result類 469
13.3.1 創建結果集對象 470
13.3.2 迴收查詢內存 470
13.3.3 從結果集中解析數據 471
13.3.4 從結果集中獲取數據列的信息 474
13.3.5 一次執行多條SQL命令 475
13.4 使用mysqli_stmt類 476
13.4.1 獲取預處理語句對象 477
13.4.2 綁定參數 477
13.4.3 執行準備好的語句 478
13.4.4 迴收資源 478
13.4.5 簡單的示例分析 478
13.4.6 使用預處理語句處理SELECT查詢
結果 479
13.5 數據庫事務 481
13.5.1 事務處理 481
13.5.2 構建事務應用程序 482
13.6 MVC模式實現商品管理係統 483
13.6.1 MVC設計模式 483
13.6.2 商品管理係統的設計與實現 485
13.7 小結 494
自測題 494
第14章 數據庫抽象層PDO 497
14.1 PDO所支持的數據庫 497
14.2 PDO的安裝 498
14.3 創建PDO對象 499
14.3.1 以多種方式調用構造方法 500
14.3.2 PDO對象中的成員方法 502
14.4 使用PDO對象 502
14.4.1 調整PDO的行為屬性 503
14.4.2 PDO處理PHP程序和數據庫之間的
數據類型轉換 503
14.4.3 PDO的錯誤處理模式 504
14.4.4 使用PDO執行SQL語句 504
14.5 PDO對預處理語句的支持 506
14.5.1 瞭解PDOStatement對象 507
14.5.2 準備語句 507
14.5.3 綁定參數 508
14.5.4 執行準備好的查詢 509
14.5.5 獲取數據 510
14.5.6 大數據對象的存取 513
14.6 PDO的事務處理 514
14.7 小結 515
自測題 515
第15章 會話控製 517
15.1 為什麼要使用會話控製 517
15.2 會話跟蹤的方式 518
15.3 Cookie的應用 518
15.3.1 Cookie概述 519
15.3.2 嚮客戶端電腦中設置Cookie 519
15.3.3 在PHP腳本中讀取Cookie的資料內容 521
15.3.4 數組形態的Cookie應用 521
15.3.5 刪除Cookie 522
15.3.6 基於Cookie的用戶登錄模塊 522
15.4 Session的應用 524
15.4.1 Session概述 524
15.4.2 配置Session 525
15.4.3 Session的聲明與使用 526
15.4.4 注冊一個會話變量和讀取Session 526
15.4.5 注銷變量與銷毀Session 527
15.4.6 傳遞Session ID 528
15.5 一個簡單的郵件係統 530
15.5.1 為郵件係統準備數據 531
15.5.2 編碼實現郵件係統 531
15.5.3 郵件係統執行說明 534
15.6 小結 535
自測題 535
第16章 PHP的模闆技術Smarty 537
16.1 什麼是模闆引擎 537
16.2 編寫自己的模闆引擎 538
16.2.1 創建自己的模闆引擎類 538
16.2.2 使用自已的模闆引擎 540
16.2.3 自定義模闆的使用示例分析 542
16.3 選擇Smarty模闆引擎 545
16.4 安裝Smarty及初使化配置 546
16.4.1 安裝Smarty 546
16.4.2 初使化Smarty類庫的默認設置 546
16.4.3 第一個Smarty的簡單示例 548
16.5 Smarty在應用程序邏輯層的使用步驟 550
16.6 Smarty模闆中的程序邏輯 551
16.6.1 模闆中的注釋 551
16.6.2 模闆中變量的聲明 552
16.6.3 在模闆中輸齣從PHP分配的變量 552
16.6.4 模闆中變量的數學計算 554
16.6.5 在模闆中使用{$smarty}保留變量 554
16.6.6 變量調解器 555
16.6.7 模闆的控製結構 557
16.6.8 在模闆中包含子模闆 563
16.7 為Smarty模闆創建配置文件 563
16.7.1 配置文件語法格式 563
16.7.2 加載配置文件 564
16.7.3 引用配置文件中的變量 565
16.8 Smarty處理頁麵緩存 566
16.8.1 在Smarty中控製緩存 567
16.8.2 每個頁麵多個緩存 568
16.8.3 為緩存實例消除處理開銷 568
16.8.4 清除緩存 569
16.8.5 關閉局部緩存 570
16.9 應用Smarty實現分頁示例 571
16.9.1 準備工作 571
16.9.2 設計數據庫操作類 572
16.9.3 設計分頁操作類 573
16.9.4 PHP的程序邏輯層 575
16.9.5 Smarty模闆的錶現層 576
16.10 小結 577
自測題 577
第17章 內容管理係統(CMS) 579
17.1 Web軟件開發流程概述 579
17.1.1 Web開發團隊的成員 579
17.1.2 Web軟件開發流程 580
17.1.3 項目開發規範 582
17.2 需求分析 584
17.2.1 CMS簡介 584
17.2.2 用戶行為分析 584
17.2.3 係統目標 585
17.2.4 係統特點 586
17.3 係統功能預覽 586
17.3.1 CMS係統安裝 586
17.3.2 登錄管理平颱 589
17.3.3 常規設置管理 590
17.3.4 友情鏈接管理 591
17.3.5 圖片管理 592
17.3.6 欄目管理 595
17.3.7 文章管理 596
17.3.8 用戶管理 597
17.3.9 網站首頁 598
17.3.10 文章列錶頁麵 599
17.3.11 文章內容頁麵 600
17.4 數據庫設計 601
17.4.1 數據庫需求分析 601
17.4.2 數據錶關係 605
17.5 係統架構 605
17.5.1 係統體係結構 605
17.5.2 管理平颱的文件結構 607
17.5.3 網站前颱模闆風格的文件結構 608
17.6 常用的功能模塊開發 610
17.6.1 係統安裝模塊設計 610
17.6.2 管理平颱(後颱)的模塊設計 616
17.6.3 無限分類模塊設計 619
17.6.4 網站首頁麵的設計 624
17.7 小結 625
附錄A PHP配置文件詳解 627
· · · · · · (
收起)