第1章 PHP入門 1
1.1 PHP概況 1
1.1.1 PHP的優勢 1
1.1.2 PHP的應用領域 2
1.1.3 HTML內嵌式的腳本語言 2
1.2 PHP腳本程序工作流程 3
1.2.1 WEB瀏覽器 3
1.2.2 HTML簡介 3
1.2.3 PHP預處理器 3
1.2.4 WEB服務器 3
1.2.5 數據庫服務器 3
1.2.6 PHP程序的工作流程 4
1.3 PHP服務器構建 5
1.3.1 服務器安裝前準備 5
1.3.2 服務器安裝 6
1.3.3 PHP服務器啟動與停止 8
1.3.4 **個PHP程序 9
1.3.5 PHP服務器配置 10
習題 14
第2章 PHP基礎 15
2.1 PHP代碼基本語法 15
2.1.1 PHP開始標記與結束標記 15
2.1.2 PHP注釋 17
2.1.3 PHP語句及語句塊 17
2.2 PHP程序的組成 18
2.2.1 關于PHP數據 19
2.2.2 PHP數據類型 19
2.2.3 瀏覽器端的數據采集 23
2.2.4 PHP程序的數據采集 24
2.2.5 PHP數據處理 25
2.2.6 PHP數據的輸出 26
2.3 編碼規范 28
2.3.1 書寫規范 28
2.3.2 命名規范 29
2.3.3 為代碼添加注釋 30
習題 30
第3章 PHP表達式 31
3.1 常量 31
3.1.1 自定義常量 31
3.1.2 常量的內存分配 32
3.1.3 預定義常量 33
3.2 變量 33
3.2.1 變量基本概念 33
3.2.2 變量的內存分配 34
3.2.3 變量賦值方式 35
3.2.4 可變變量 37
3.3 有關變量或常量狀態的函數 37
3.3.1 數據類型查看函數 37
3.3.2 檢查常量或變量是否定義函數 38
3.3.3 取消變量定義unset()函數 39
3.3.4 檢查變量是否為“空” 40
3.3.5 數據類型檢查函數 42
3.4 PHP運算符 43
3.4.1 算術運算符 43
3.4.2 遞增/遞減運算符 43
3.4.3 賦值運算符 44
3.4.4 比較運算符 45
3.4.5 邏輯運算符 46
3.4.6 字符串連接運算符 47
3.4.7 錯誤抑制運算符 47
3.4.8 條件運算符 47
3.4.9 類型運算符 48
3.4.10 執行運算符 48
3.4.11 位運算符 48
3.4.12 運算符優先級 49
3.5 數據類型的轉換 49
3.5.1 類型自動轉換 50
3.5.2 強制類型轉換 52
習題 54
第4章 PHP流程控制語句 58
4.1 條件控制結構 58
4.1.1 if語句 58
4.1.2 if…else語句 58
4.1.3 switch語句 60
4.2 循環結構 62
4.2.1 while循環語句 62
4.2.2 do…while循環語句 63
4.2.3 for循環語句 63
4.2.4 循環結構應用 64
4.3 程序跳轉和終止語句 65
4.3.1 continue語句 65
4.3.2 break語句 65
4.3.3 終止PHP程序運行 66
習題 66
第5章 PHP數組 68
5.1 數組的基本概念 68
5.1.1 為什么引入數組 68
5.1.2 數組的分類 69
5.2 一維數組的創建 69
5.2.1 直接將變量聲明為數組元素 69
5.2.2 使用array()語言結構創建數組 70
5.2.3 創建數組的注意事項 71
5.2.4 數組元素“值”的訪問 72
5.3 多維數組 74
5.3.1 二維數組的創建 74
5.3.2 二維數組元素“值”的訪問 76
5.4 數組處理函數及應用 77
5.4.1 快速創建數組的函數 77
5.4.2 數組統計函數 79
5.4.3 數組指針函數 81
5.4.4 數組和變量間的轉換函數 86
5.4.5 數組遍歷語言結構 88
5.4.6 數組檢索函數 91
5.4.7 數組排序函數 93
5.4.8 數組與數據結構 96
5.4.9 數組集合運算函數 97
習題 99
第6章 PHP的數據采集 103
6.1 瀏覽器端數據的提交方式 103
6.1.1 GET提交方式 103
6.1.2 POST提交方式 104
6.1.3 GET和POST混合提交方式 105
6.1.4 兩種提交方式的比較 106
6.2 相對路徑和絕對路徑 106
6.2.1 絕對路徑 106
6.2.2 相對路徑 107
6.2.3 相對路徑其他概念 107
6.3 使用FORM表單實現瀏覽器端的數據采集 108
6.3.1 表單標簽 108
6.3.2 表單控件 108
6.3.3 在表單控件中使用數組 112
6.3.4 表單按鈕 113
6.3.5 FORM表單綜合應用 114
6.4 使用$_GET和$_POST“采集”表單數據 116
6.5 上傳文件的“數據采集” 117
6.5.1 與上傳相關的配置 117
6.5.2 PHP文件上傳流程 118
6.5.3 預定義變量$_FILES 119
6.5.4 PHP文件上傳的實現 120
6.6 WEB服務器端其他數據采集方法 121
6.6.1 預定義變量$_REQUEST 121
6.6.2 預定義變量$_SERVER 122
習題 123
第7章 自定義函數 124
7.1 PHP文件間的引用 124
7.1.1 include語言結構 124
7.1.2 require與include語言結構的比較 125
7.1.3 include_once和require_once語言結構 126
7.2 函數概述 126
7.2.1 函數的概念 126
7.2.2 函數的分類 127
7.3 自定義函數 127
7.3.1 自定義函數的定義 127
7.3.2 自定義函數的聲明和調用 129
7.3.3 自定義函數的參數賦值 129
7.3.4 變量的作用域和global關鍵字 133
7.3.5 變量的生存周期和static關鍵字 135
7.3.6 變量函數 137
7.4 自定義函數綜合示例 137
7.5 return語言結構 138
習題 140
第8章 MySQL數據庫 143
8.1 數據庫概述 143
8.1.1 數據庫 143
8.1.2 關系數據庫管理系統(RDBMS) 144
8.1.3 結構化查詢語言(SQL) 144
8.2 數據庫的設計 144
8.2.1 E-R模型 144
8.2.2 主鍵(Primary Key) 146
8.2.3 實體間的關系與外鍵(Foreign Key) 147
8.2.4 約束(Constraint) 148
8.3 MySQL簡介 149
8.3.1 MySQL服務器的啟動 150
8.3.2 連接MySQL服務器 150
8.3.3 MyISAM和InnoDB存儲引擎 151
8.4 字符集 152
8.4.1 字符集簡介 152
8.4.2 MySQL字符集 152
8.4.3 MySQL中的字符集轉換過程 153
8.4.4 MySQL字符集的設置 154
8.4.5 SQL腳本文件 156
8.5 MySQL數據庫管理 156
8.5.1 創建數據庫 157
8.5.2 選擇當前操作的數據庫 157
8.5.3 顯示數據庫結構 157
8.5.4 刪除數據庫 157
8.6 數據庫表的管理 158
8.6.1 數據類型 158
8.6.2 MySQL中的附加屬性 159
8.6.3 創建數據庫表 159
8.6.4 顯示數據庫表結構 161
8.6.5 刪除數據庫表 162
8.7 表記錄的更新操作 162
8.7.1 表記錄的添加 162
8.7.2 表記錄的修改 164
8.7.3 表記錄的刪除 165
8.8 表記錄的查詢操作 165
8.8.1 指定字段列表及列別名 165
8.8.2 使用謂詞限制記錄的行數 166
8.8.3 使用from子句指定多個數據源 166
8.8.4 使用where子句過濾記錄 168
8.8.5 使用order by子句對記錄排序 170
8.8.6 使用聚合函數返回匯總值 170
8.8.7 使用group by子句對記錄分組統計 171
8.8.8 使用having子句提取符合條件的分組 171
8.9 MySQL特殊字符序列 171
習題 172
第9章 PHP與MySQL數據庫 176
9.1 PHP中常用的MySQL操作函數 176
9.1.1 連接MySQL服務器 176
9.1.2 設置數據庫字符集 177
9.1.3 關閉MySQL服務器連接 177
9.1.4 選擇當前操作的數據庫 177
9.1.5 發送SQL語句或MySQL命令 178
9.1.6 遍歷結果集中的數據 180
9.1.7 MySQL服務器連接與關閉*佳時機 182
9.1.8 MySQL服務器連接與關閉函數的制作 183
9.2 PHP中其他MySQL操作函數 183
9.2.1 數據庫操作函數 184
9.2.2 數據庫表操作函數 184
9.2.3 選擇當前操作的數據庫并發送SQL語句 185
9.2.4 表字段操作函數 185
9.2.5 其他常用函數 186
9.3 用戶注冊系統的實現 188
9.3.1 用戶注冊系統文件組織結構 188
9.3.2 用戶注冊界面的實現 188
9.3.3 數據庫的實現 189
9.3.4 制作用戶注冊系統所需的函數 190
9.3.5 用戶注冊功能的實現 190
9.3.6 用戶登錄頁面的實現 193
9.3.7 用戶登錄功能的簡單實現 193
9.4 SQL注入 194
習題 195
第10章 新聞發布系統的開發 197
10.1 新聞發布系統開發流程 197
10.1.1 MIS的開發流程 197
10.1.2 新聞發布系統的開發流程 197
10.2 新聞發布系統的系統規劃 197
10.2.1 新聞發布系統的目標 198
10.2.2 新聞發布系統的可行性分析 198
10.2.3 新聞發布系統的項目進度表 198
10.2.4 新聞發布系統的人員分工 198
10.3 新聞發布系統的系統分析 198
10.3.1 新聞發布系統的功能需求 199
10.3.2 新聞發布系統的技術需求 200
10.3.3 新聞發布系統中使用的模型 201
10.3.4 新聞發布系統的E-R模型 201
10.3.5 新聞發布系統的數據流程圖 202
10.3.6 數據字典(Data Dictionary) 205
10.4 新聞發布系統的系統設計 206
10.4.1 系統流程圖 206
10.4.2 程序流程圖 207
10.4.3 數據庫物理設計 208
10.4.4 圖形用戶界面設計 209
10.5 新聞發布系統系統實施 209
10.5.1 文件組織結構 209
10.5.2 數據庫的實施 210
10.5.3 新聞管理和評論管理功能的實施 211
10.6 分頁原理及實現 221
10.6.1 分頁原理 221
10.6.2 PHP分頁的*簡單實現 222
10.6.3 帶有“分頁導航條”分頁的實現 223
10.6.4 分頁函數的制作 224
10.7 新聞發布系統軟件測試 226
10.8 新聞發布系統系統支持 227
習題 227
第11章 PHP會話控制 228
11.1 頁面間的參數傳遞 228
11.1.1 重定向的概念 228
11.1.2 使用JavaScript實現重定向 229
11.1.3 使用PHP實現重定向 229
11.2 會話控制 230
11.2.1 會話控制基本概念 230
11.2.2 會話控制的實現 230
11.3 Cookie會話技術 230
11.3.1 瀏覽器的Cookie設置 230
11.3.2 Cookie的工作原理 230
11.3.3 Cookie分類 232
11.3.4 PHP使用Cookie的步驟 232
11.3.5 創建Cookie 234
11.3.6 預定義變量$_COOKIE 235
11.3.7 刪除瀏覽器端的Cookie 235
11.3.8 新聞發布系統用戶管理功能的實現(一) 236
11.3.9 Cookie數組 238
11.4 Session會話技術 239
11.4.1 Session工作原理 239
11.4.2 Session和Cookie的區別 240
11.4.3 PHP使用Session的步驟 240
11.4.4 Session在php.ini文件中的配置 241
11.4.5 開啟Session 242
11.4.6 Session ID、Session name和SID 242
11.4.7 預定義變量$_SESSION 245
11.4.8 刪除和銷毀Session 245
11.4.9 Session的綜合應用 246
11.4.10 新聞發布系統用戶管理功能的實現(二) 248
11.4.11 新聞發布系統權限控制的實現 249
11.4.12 Session數組 251
11.5 header()函數的使用 253
11.5.1 頁面重定向 253
11.5.2 創建Cookie 254
11.5.3 服務器響應內容的控制 254
11.5.4 瀏覽器緩存的遠程控制 258
11.5.5 常用的瀏覽器緩存控制函數 262
11.5.6 完善新聞發布系統文件下載功能 263
習題 265
第12章 字符串處理 267
12.1 字符串的指定方法 267
12.1.1 使用單引號指定字符串 267
12.1.2 使用雙引號指定字符串 267
12.1.3 使用定界符指定字符串 269
12.1.4 字符串中的字符處理 269
12.2 字符串處理函數 270
12.2.1 字符串修剪函數 270
12.2.2 字符串長度函數 278
12.2.3 子字符串操作函數 279
12.2.4 字符串比較函數 283
12.2.5 字符串連接和分割函數 285
12.2.6 字符串替換函數 285
12.2.7 URL處理函數 286
12.2.8 其他常用的字符串函數 291
12.3 新聞發布系統中的字符串處理函數的應用 292
12.3.1 刪除模糊查詢中關鍵字兩邊的空格 292
12.3.2 修改文件下載功能的代碼 292
12.3.3 修改發表評論功能的代碼 293
12.3.4 優化新聞列表顯示功能的代碼 293
12.3.5 模糊查詢時關鍵字以加粗傾斜格式顯示 294
12.3.6 優化分頁函數代碼 294
習題 296
第13章 新聞發布系統的頁面美工 300
13.1 JavaScript腳本語言 300
13.2 FCKeditor在線編輯器 301
13.2.1 FCKeditor使用前的準備工作 301
13.2.2 FCKeditor類的成員變量和成員方法 302
13.2.3 FCKeditor的高級配置 302
13.2.4 FCKeditor在新聞發布系統中的應用 304
13.2.5 FCKeditor的文件管理 306
13.2.6 FCKeditor瘦身 308
13.3 新聞發布系統頁面布局的實現 308
13.3.1 DIV+CSS概述 308
13.3.2 界面布局圖 308
13.3.3 使用DIV實現頁面布局 309
13.3.4 準備圖片素材 310
13.3.5 CSS熱身 311
13.3.6 header層的實現 314
13.3.7 pagebody層的實現 316
13.3.8 footer層的實現 316
13.4 新聞發布系統靜態和動態頁面的嵌入 317
13.4.1 將用戶管理功能嵌入到login層 317
13.4.2 修改menu層代碼 318
13.4.3 將主要功能嵌入到mainfunction層 319
13.4.4 sidebar層和mainbody層的高度自適應功能 324
13.4.5 防止圖片太寬撐破mainbody層 326
習題 326