本書采用項目化內容組織方式,通過一系列精心設計的項目案例,逐步引導讀者從PHP編程入門走向精通。具體項目包括啟程探索PHP世界、智能BMI計算與健身運動推薦系統(tǒng)、匯率計算器、學生成績計算器、文本內容過濾器、用戶注冊平臺、問卷統(tǒng)計工具、購物車系統(tǒng)、學生信息管理系統(tǒng)。項目內容全面涵蓋PHP語法基礎、流程控制、函數(shù)、文件和目錄操作、前后端交互等知識,旨在通過實際項目加深讀者對PHP編程技術的理解,提高應用能力。
本書在深入講解PHP編程技術的同時,特別強調了網(wǎng)絡應用安全措施的重要性,旨在幫助讀者構建功能強大且安全可靠的Web應用。
本書適合作為普通高等學校、職業(yè)院校計算機相關專業(yè)的教材,同時也適合作為PHP愛好者及相關技術人員的自學參考書。
1、注重實踐:書中將提供豐富的實踐項目,使讀者在學習過程中能夠動手實踐,提高實際操作能力。
2、結合安全:在講解PHP編程的基礎上,引入信息安全的相關知識,讓讀者了解并掌握安全防護技巧。
3、理論與實踐相結合:在介紹PHP編程和安全知識的同時,提供相應的理論支持,使讀者能夠更好地理解和運用所學知識。
4、案例教學:通過分析實際案例,讓讀者了解并掌握PHP編程和安全實踐在實際應用中的具體運用。
5、面向應用:本書將面向實際應用,讓讀者在學習過程中能夠更好地應對實際工作中的挑戰(zhàn)。
臧金梅,山東信息職業(yè)技術學院教師,擁有15年專業(yè)教學經驗,主要研究方向為Web前端開發(fā)、計算機網(wǎng)絡等。參與編寫了5本高職規(guī)劃教材,1本為十四五職業(yè)教育國家規(guī)劃教材,參與建設了1門省級精品課程、2門省級精品資源共享課程、2門省級在線精品課程、1門一流核心課程(線下)。主持和參與各級課題十余項,發(fā)表多篇學術論文,獲省級職業(yè)教育成果獎二等獎一項。曾獲山東省第七屆超星杯高校青年教師教學比賽二等獎,建行杯山東省互聯(lián)網(wǎng) 大學生創(chuàng)新創(chuàng)業(yè)大賽金獎1項、銅獎1項。
目 錄
模塊1 PHP基礎
項目1
啟程探索PHP世界PHP編程入門 2
知識儲備 3
1.1 PHP簡介 3
1.1.1 什么是PHP 3
1.1.2 PHP的發(fā)展歷史 3
1.1.3 PHP的語言特性 4
1.1.4 PHP的工作原理 5
1.2 PHP開發(fā)環(huán)境與工具 5
1.2.1 PHP開發(fā)環(huán)境 5
1.2.2 PHP集成開發(fā)環(huán)境 6
1.2.3 PHP開發(fā)工具 7
【素養(yǎng)提升】工具是為思維服務的 8
1.2.4 Visual Studio Code的安裝
配置 8
【素養(yǎng)提升】智能編程助手不是
萬能的 10
1.3 PHP的簡單語法 11
1.3.1 PHP的標記方式 11
1.3.2 PHP的注釋方式 12
1.3.3 PHP的數(shù)據(jù)輸出方式 12
1.3.4 字符串連接運算符 13
1.3.5 換行符的使用 13
【能力進階】PHP編程書寫規(guī)范 14
項目分析 14
項目實施 14
任務1-1 搭建PHP開發(fā)環(huán)境 14
任務1-2 創(chuàng)建PHP文件 15
任務1-3 編寫PHP代碼 15
項目實訓輸出個人信息 17
項目小結 17
應用安全拓展 17
鞏固練習 18
項目2
智能BMI計算與健身運動推薦
系統(tǒng)語法基礎 19
知識儲備 20
2.1 變量和常量 20
2.1.1 標識符 20
2.1.2 關鍵字 20
2.1.3 變量 21
【案例實踐2-1】輸出商品信息 23
【能力進階】編程命名規(guī)范 24
2.1.4 常量 24
【案例實踐2-2】輸出商品折扣
信息 25
2.2 標量數(shù)據(jù)類型 26
2.2.1 布爾型 26
2.2.2 整型 27
2.2.3 浮點型 27
2.2.4 字符串型 27
2.2.5 數(shù)據(jù)類型的檢測 30
2.3 運算符 31
2.3.1 運算符的分類 31
【能力進階】三目運算符嵌套 32
2.3.2 算術運算符 32
【案例實踐2-3】計算商品折扣
價格 33
2.3.3 賦值運算符 34
2.3.4 比較運算符 35
2.3.5 邏輯運算符 36
2.3.6 運算符的優(yōu)先級 37
【案例實踐2-4】計算商品盈利 37
2.4 表達式 38
2.5 數(shù)據(jù)類型的轉換 39
2.5.1 自動類型轉換 39
2.5.2 強制類型轉換 40
項目分析 41
項目實施 41
任務2-1 計算BMI 41
任務2-2 實現(xiàn)健身運動推薦 42
項目實訓圖書信息的定義及管理 43
項目小結 43
應用安全拓展 44
鞏固練習 46
項目3
匯率計算器流程控制 47
知識儲備 48
3.1 流程控制簡述 48
3.2 分支結構 48
3.2.1 單分支結構 48
3.2.2 雙分支結構 50
3.2.3 分支結構的嵌套應用 50
【案例實踐3-1】兒童旅行費折扣
問題 51
3.2.4 多分支結構if...elseif...else
語句 52
【案例實踐3-2】分時問候 54
【能力進階】深入理解分支結構中else
語句的含義 54
3.2.5 多分支結構switch
語句 56
【案例實踐3-3】課余活動反饋 58
3.2.6 switch語句和if語句結合的
結構 59
3.3 循環(huán)結構 59
3.3.1 for循環(huán)結構 59
【案例實踐3-4】實現(xiàn)1~10的奇偶數(shù)
判斷 60
3.3.2 while循環(huán)結構 61
3.3.3 do…while循環(huán)結構 61
【素養(yǎng)提升】有趣的while和do…while
循環(huán)結構 62
3.3.4 循環(huán)嵌套 62
【案例實踐3-5】實現(xiàn)九九乘法表的
輸出 63
【素養(yǎng)提升】循環(huán)中的智慧:人生的
重復與成長 64
3.4 跳轉語句 64
3.4.1 break語句 64
3.4.2 continue語句 65
3.5 異常處理 65
3.5.1 錯誤類型和級別 65
3.5.2 異常處理方式 66
3.6 文件包含語句 67
3.6.1 include語句和require
語句 67
3.6.2 include_once語句和
require_once語句 68
項目分析 69
項目實施 69
任務3-1 一對一匯率計算 69
任務3-2 一對多匯率計算 71
項目實訓輸出金字塔圖形 72
項目小結 72
應用安全拓展 73
鞏固練習 74
項目4
學生成績計算器PHP
函數(shù) 76
知識儲備 77
4.1 初識函數(shù) 77
4.1.1 函數(shù)的概念 77
4.1.2 函數(shù)的優(yōu)勢 77
4.1.3 函數(shù)的分類 78
4.2 自定義函數(shù) 78
4.2.1 函數(shù)的定義 79
【案例實踐4-1】使用函數(shù)創(chuàng)建
表格 79
【素養(yǎng)提升】函數(shù)使用規(guī)范 80
4.2.2 函數(shù)的參數(shù) 80
4.2.3 函數(shù)的調用 82
【案例實踐4-2】精確判斷特定年月的
天數(shù) 84
4.2.4 變量的作用域 85
【能力進階】匿名函數(shù) 86
4.3 處理GET請求和預定義
變量$_GET 87
4.4 預定義函數(shù) 87
4.4.1 變量函數(shù) 87
【案例實踐4-3】數(shù)據(jù)驗證與類型
處理 89
4.4.2 數(shù)學函數(shù) 90
【案例實踐4-4】數(shù)學運算工具箱 90
4.4.3 時間和日期函數(shù) 92
【案例實踐4-5】計算度過的時間 93
【素養(yǎng)提升】自主獲取信息 94
項目分析 95
項目實施 95
任務4-1 構建成績輸入與驗證
界面 95
任務4-2 計算加權總分 95
任務4-3 評估成績等級 96
任務4-4 計算學生成績 96
項目實訓日期差計算器 97
項目小結 97
應用安全拓展 98
鞏固練習 99
項目5
文本內容過濾器數(shù)據(jù)
處理 101
知識儲備 102
5.1 數(shù)組 102
5.1.1 初識數(shù)組 102
5.1.2 數(shù)組的創(chuàng)建和初始化 103
5.1.3 數(shù)組的遍歷 104
【案例實踐5-1】計算學生平均分 106
5.1.4 常用的數(shù)組函數(shù) 106
【案例實踐5-2】獲取學生分數(shù)的
各種統(tǒng)計信息 107
【案例實踐5-3】使用指針操作
數(shù)組 109
5.2 字符串 113
5.2.1 字符串的輸出 113
5.2.2 常用的字符串操作函數(shù) 113
【能力進階】其他截取函數(shù) 114
【能力進階】其他查找函數(shù) 114
【能力進階】其他去除空白函數(shù) 116
【案例實踐5-4】通過文件路徑獲取
文件基本信息 116
【案例實踐5-5】格式化表單提交的數(shù)據(jù) 117
【案例實踐5-6】隱私保護:格式化
用戶提交的手機號 119
【素養(yǎng)提升】培養(yǎng)隱私保護意識,構建
和諧數(shù)字社會 119
5.2.3 字符串與數(shù)組 120
【案例實踐5-7】判斷IP地址
格式 121
項目分析 122
項目實施 122
任務5-1 定義敏感詞庫 122
任務5-2 實現(xiàn)內容過濾邏輯 122
任務5-3 測試并展示過濾效果 123
項目實訓敏感詞過濾與檢測 123
項目小結 123
應用安全拓展 124
鞏固練習 125
模塊2 PHP進階
項目6
用戶注冊平臺前后端數(shù)據(jù)
交互 128
知識儲備 129
6.1 表單基礎與數(shù)據(jù)交互 129
6.1.1 創(chuàng)建表單 129
6.1.2 添加表單控件 129
6.1.3 提交表單數(shù)據(jù) 131
6.1.4 獲取表單提交的數(shù)據(jù) 132
【案例實踐6-1】實現(xiàn)簡單的用戶
登錄和驗證 134
【能力進階】$_SERVER超全局
變量 135
【能力進階】判斷表單是否被
提交 135
【能力進階】深入理解GET與
POST 136
6.1.5 處理表單數(shù)組數(shù)據(jù) 136
【案例實踐6-2】學生課外活動選擇
表單 137
6.1.6 查詢字符串與URL參數(shù)
傳遞 138
6.1.7 使用查詢字符串實現(xiàn)前后端
數(shù)據(jù)交互 139
【案例實踐6-3】動態(tài)展示新聞
列表 139
【能力進階】對GET請求與查詢
字符串的理解 140
6.2 HTTP基礎 141
6.2.1 HTTP/HTTPS簡介 141
6.2.2 HTTP Headers的組成 142
6.2.3 基本信息 142
6.2.4 請求報文 144
【案例實踐6-4】查看請求報文 146
6.2.5 響應報文 147
【能力進階】自定義響應頭 148
6.3 Cookie和Session技術 149
6.3.1 Cookie技術 149
【案例實踐6-5】 實現(xiàn)用戶自動
登錄 152
6.3.2 Session技術 153
【案例實踐6-6】 通過Session
驗證登錄信息 155
6.3.3 Cookie和Session的
區(qū)別 157
【素養(yǎng)提升】PHP中的前后端數(shù)據(jù)
交互與用戶隱私保護 158
6.4 正則表達式 158
6.4.1 正則表達式簡介 158
6.4.2 正則表達式的組成 158
6.4.3 正則表達式的用法 158
6.4.4 正則表達式在PHP中的
應用 161
【案例實踐6-7】提取電子郵件
地址 163
項目分析 164
項目實施 164
任務6-1 實現(xiàn)用戶注冊界面 164
任務6-2 實現(xiàn)用戶數(shù)據(jù)有效性
檢查 165
項目實訓用戶登錄與登出 166
項目小結 167
應用安全拓展 168
鞏固練習 170
項目7
問卷統(tǒng)計工具文件和目錄
操作 171
知識儲備 172
7.1 目錄操作 172
7.1.1 目錄基本操作 172
【案例實踐7-1】使用scandir()函數(shù)
遍歷指定目錄 174
7.1.2 目錄與路徑解析 174
【案例實踐7-2】解析路徑基本
信息 175
7.1.3 目錄句柄 176
【案例實踐7-3】使用目錄句柄函數(shù)
遍歷指定目錄 177
7.2 文件操作 178
7.2.1 文件基本操作 178
7.2.2 文件讀寫操作 180
7.2.3 文件的上傳 183
【案例實踐7-4】實現(xiàn)單個文件
上傳 185
【能力進階】多文件上傳技巧 186
【素養(yǎng)提升】精確操作文件和目錄 187
項目分析 187
項目實施 187
任務7-1 實現(xiàn)問卷統(tǒng)計工具
界面 187
任務7-2 設計統(tǒng)計問卷選項 188
項目實訓上傳個人簡歷和照片 191
項目小結 191
應用安全拓展 192
鞏固練習 193
項目8
購物車系統(tǒng)面向對象程序
設計 195
知識儲備 196
8.1 面向對象 196
8.1.1 面向過程和面向對象的
對比 196
8.1.2 面向對象程序設計的優(yōu)勢 196
8.1.3 面向對象的核心概念 197
8.2 類和對象 197
8.2.1 類的定義 198
8.2.2 訪問控制修飾符 198
8.2.3 類的實例化 199
8.2.4 訪問類的成員 200
【能力進階】為何在類方法中使用return
語句而非echo語句 200
【案例實踐8-1】類的實例化及類
成員的訪問 201
8.2.5 對象的比較 202
8.3 魔術方法 203
8.3.1 常見的魔術方法 203
8.3.2 構造方法 203
8.3.3 析構方法 204
【案例實踐8-2】構造方法和析構方法
的應用 205
8.4 類常量和靜態(tài)成員 206
8.4.1 類常量 206
8.4.2 靜態(tài)成員 207
【能力進階】類常量和靜態(tài)屬性的
應用場景 208
【能力進階】self和static
關鍵字 208
8.5 面向對象的特性 208
8.5.1 封裝 208
8.5.2 繼承 211
【能力進階】認識parent關鍵字 212
【能力進階】認識final關鍵字 212
8.5.3 多態(tài) 213
【案例實踐8-3】實現(xiàn)學校運動員參賽
得獎統(tǒng)計 214
8.6 抽象類和接口 216
8.6.1 抽象類 216
8.6.2 接口 217
【案例實踐8-4】實現(xiàn)常見交通工具的
應用 218
【素養(yǎng)提升】從面向對象程序設計到職
業(yè)素養(yǎng):技術提升與團隊協(xié)作的
雙向進階 219
項目分析 220
項目實施 220
任務8-1 定義商品類及其子類 220
任務8-2 定義購物車類 222
任務8-3 實現(xiàn)前端界面 223
任務8-4 實現(xiàn)后端邏輯 225
項目實訓常見圖形的周長和面積
計算器 226
項目小結 227
應用安全拓展 227
鞏固練習 228
項目9
學生信息管理系統(tǒng)使用PHP操作MySQL數(shù)據(jù)庫 230
知識儲備 231
9.1 MySQL概述 231
9.1.1 MySQL簡介 231
9.1.2 MySQL的特點 231
9.1.3 安裝MySQL 232
9.1.4 啟動MySQL 232
9.1.5 安裝MySQL可視化工具 232
9.2 MySQL的基本操作 233
9.2.1 MySQL數(shù)據(jù)庫操作 233
9.2.2 MySQL數(shù)據(jù)表操作 234
9.2.3 MySQL數(shù)據(jù)操作 235
9.3 PHP的數(shù)據(jù)庫擴展 235
9.3.1 MySQLi擴展 235
9.3.2 PDO擴展 236
9.3.3 其他數(shù)據(jù)庫擴展 236
9.4 使用PHP操作MySQL
數(shù)據(jù)庫 236
9.4.1 MySQLi擴展的用法 236
9.4.2 MySQLi擴展的核心函數(shù) 236
9.4.3 連接MySQL數(shù)據(jù)庫 237
【能力進階】封裝數(shù)據(jù)庫連接
代碼 238
9.4.4 選擇MySQL數(shù)據(jù)庫 238
9.4.5 執(zhí)行SQL語句 238
【案例實踐9-1】實現(xiàn)學生注冊
功能 239
9.4.6 預處理操作 240
【案例實踐9-2】添加預處理實現(xiàn)學生
注冊功能 242
9.4.7 處理結果集 243
【案例實踐9-3】解決用戶名沖突
問題 244
【案例實踐9-4】實現(xiàn)學生登錄
功能 246
9.4.8 釋放結果集 247
9.4.9 斷開數(shù)據(jù)庫連接 247
【素養(yǎng)提升】數(shù)據(jù)安全意識的培養(yǎng)與
加強 248
項目分析 248
項目實施 248
任務9-1 設計數(shù)據(jù)庫 248
任務9-2 設計數(shù)據(jù)連接 249
任務9-3 設計登錄頁面 249
任務9-4 設置操作權限 250
任務9-5 設計注冊頁面 251
任務9-6 添加數(shù)據(jù) 253
任務9-7 瀏覽數(shù)據(jù) 254
任務9-8 編輯數(shù)據(jù) 255
任務9-9 刪除數(shù)據(jù) 258
任務9-10 查詢數(shù)據(jù) 259
項目實訓圖書管理系統(tǒng) 260
項目小結 262
應用安全拓展 262
鞏固練習 263