商品簡介
本書全面講述了PHP程序開發的相關基礎知識和詳細技術。全書共分12章,深入介紹PHP入門與開發環境的安裝和配置、PHP相關的基本語法、運算符和表達式、流程控制語句、PHP函數和數組、面向對象編程基礎、字符串操作、PHP與Web頁面交互、PHP會話控制,zui後給出兩個完整的開發實例。
全書內容豐富、結構合理、思路清晰、語言簡練流暢、案例翔實,共提供了227個實例。本書適合作為高等職業院校網站設計與製作、Web編程及其相關課程的教材,還可作為Web應用開發人員的參考用書。
名人推薦
通過結合不同難度的案例,全面介紹了PHP程序開發技術。
提供了227個實例,有助於提高讀者的實際應用能力。
配套教學視頻、教學課件、Word教案、教學計劃、課程標準等資源。
目次
第1章 PHP簡介 1
1.1 Web程序工作原理 1
1.2 PHP簡介 5
1.2.1 什麼是PHP 5
1.2.2 PHP可以做什麼 5
1.2.3 PHP的特點 5
1.2.4 PHP的優點 6
1.2.5 PHP常用編譯工具 6
1.3 PHP開發環境的搭建 7
1.3.1 分別安裝Apache+PHP+MySQL搭建PHP開發環境 7
實例1-1 Apache的安裝與測試 7
實例1-2 PHP的安裝與測試 10
實例1-3 MySQL的安裝 13
實例1-4 MySQL數據庫連接測試 18
實例1-5 更改網站的主目錄 20
1.3.2 PHP集成開發環境的搭建 22
實例1-6 PHP集成開發環境的安裝與測試 22
小結 26
習題 26
第2章 基本語法 27
2.1 PHP代碼標記 27
2.2 PHP文本注釋 28
2.3 PHP輸出函數 29
2.3.1 echo( )函數 29
2.3.2 print( )函數 29
2.3.3 printf( )函數 29
2.3.4 sprintf( )函數 30
2.4 PHP變量 31
2.4.1 變量的命名規則 31
2.4.2 變量的賦值 31
實例2-1 應用傳值賦值 31
實例2-2 應用引用賦值 32
2.4.3 變量的作用域 33
實例2-3 局部變量的使用 33
實例2-4 應用全局變量(在函數內部引用函數外部的參數) 33
實例2-5 應用全局變量(在函數外部引用函數內部的參數) 33
實例2-6 應用靜態變量 34
實例2-7 可變變量的使用 35
2.4.4 變量的數據類型 35
實例2-8 整型數據的用法 36
實例2-9 浮點型數據的用法 36
實例2-10 布爾型數據的用法 37
實例2-11 雙引號、單引號、定界符的使用 37
實例2-12 {}和. 在字符串中的使用 38
實例2-13 一個簡單PHP數組的應用實例 39
實例2-14 類和對象的應用實例 39
實例2-15 應用資源數據類型的實例 40
實例2-16 NULL數據類型的用法 40
2.4.5 變量類型的轉換 40
實例2-17 自動類型轉換 41
實例2-18 其他數據類型轉換為整型 42
實例2-19 浮點型數據向整型數據轉換 43
實例2-20 浮點型數據除法運算 43
實例2-21 將其他數據類型轉換為浮點型 44
實例2-22 將其他數據類型轉換為布爾型 45
實例2-23 將其他數據類型轉換為字符串 46
實例2-24 將其他數據類型轉換為數組 47
實例2-25 將其他數據類型轉換為對象 48
2.4.6 變量的常用函數 48
實例2-26 使用settype( )函數指定變量類型 49
實例2-27 使用intval( )函數、floatval( )函數、strval( )函數實現數據轉換 49
實例2-28 isset( )函數檢查變量是否存在 50
實例2-29 empty( )函數檢查變量值是否為空 50
實例2-30 使用判斷變量類型函數 51
實例2-31 使用gettype( )函數獲取變量類型 51
實例2-32 使用var_dump( )函數打印變量信息 52
實例2-33 使用 var_export( )函數輸出或返回字符串 52
實例2-34 使用unset( )函數銷毀變量 53
2.5 PHP常量 54
2.5.1 自定義常量 54
實例2-35 使用define( )函數定義常量 54
2.5.2 預定義常量 54
2.6 運算符 55
2.6.1 算術運算符 55
實例2-36 算術運算符的使用 55
2.6.2 遞增/遞減運算符 56
實例2-37 遞增/遞減運算符的使用 56
2.6.3 賦值運算符 56
實例2-38 賦值運算符的使用 57
2.6.4 比較運算符 57
實例2-39 比較運算符的使用 58
2.6.5 邏輯運算符 59
實例2-40 邏輯運算符的使用 59
2.6.6 位運算符 59
實例2-41 位運算符的使用 60
2.6.7 字符串運算符 61
實例2-42 字符串運算符的使用 61
2.6.8 數組運算符 61
實例2-43 數組運算符的應用 62
2.6.9 錯誤抑制運算符 62
實例2-44 錯誤抑制運算符的
使用 62
2.6.10 類型運算符 63
實例2-45 類型運算符的應用 63
2.6.11 執行運算符 63
實例2-46 執行運算符的應用 63
2.6.12 三元運算符 63
實例2-47 判斷運算符的應用 64
2.6.13 運算符的優先級 64
2.7 表達式 65
2.7.1 簡單表達式 65
實例2-48 簡單表達式應用 65
2.7.2 複雜表達式 65
實例2-49 複雜表達式 66
2.8 PHP流程控制語句 66
2.8.1 條件控制語句 66
實例2-50 if…else語句的使用 66
實例2-51 if...elseif... else語句的使用 67
實例2-52 switch語句的使用
(break語句比較) 68
2.8.2 PHP循環語句 68
實例2-53 while循環的使用 69
實例2-54 do...while循環的使用 69
實例2-55 for循環的使用 70
實例2-56 foreach循環的使用 70
2.8.3 跳出控制語句 71
實例2-57 break語句的使用 71
實例2-58 continue語句的使用 74
小結 74
習題 74
第3章 PHP函數 78
3.1 自定義函數 78
3.1.1 函數的語法 78
實例3-1 自定義函數的聲明 79
3.1.2 函數的參數 79
實例3-2 函數使用參數 79
實例3-3 在函數參數中指定默認值 79
實例3-4 函數接受多個參數 80
3.1.3 函數的返回值 80
實例3-5 函數的返回值 80
實例3-6 調用函數外部參數但不重新定義變量 80
實例3-7 調用函數外部參數後再重新定義變量 80
3.1.4 自定義函數使用實例 81
實例3-8 使用函數聲明輸出表格但沒有調用 81
實例3-9 使用函數聲明輸出表格並調用此函數 81
實例3-10 使用函數聲明輸出表格,在函數中添加參數並調用函數 82
實例3-11 使用函數聲明輸出表格,並用return語句返回該函數的執行結果 83
3.2 PHP檢測函數 84
3.2.1 function_exists( )函數 84
實例3-12 檢測用戶自定義函數 85
實例3-13 檢測系統內置函數(檢查系統是否開啟GD庫) 85
實例3-14 function_exists( )直接返回原函數值 85
3.2.2 isset( )檢測變量是否設置 86
實例3-15 isset( )檢測變量是否設置 86
3.2.3 empty( )檢測一個變量是否為空 86
實例3-16 empty( )檢測一個變量是否為空 87
3.2.4 empty( )與isset( )的比較 87
3.2.5 unsert() 銷毀變量 88
實例3-17 使用unset( )銷毀靜態變量 88
實例3-18 在函數中用unset( )傳一個全局變量,局部變量被銷毀 89
實例3-19 使用$GLOBALS數組形式實現unset( )銷毀函數中的全局變量 89
3.2.6 defined( )檢測常量是否被定義 90
實例3-20 defined( )檢測一個常量是否被定義 90
3.3 PHP字符串處理函數 90
3.3.1 PHP字符串處理簡介 90
3.3.2 PHP字符串輸出函數 91
實例3-21 echo( )輸出字符串 91
實例3-22 printf( )輸出字符串 92
3.3.3 PHP字符串去除函數 93
實例3-23 trim( )函數的使用 93
3.3.4 implode函數 94
實例3-24 連接符 ^ 的使用 94
3.3.5 PHP字符串分割函數 94
實例3-25 explode( )函數分割字符串 95
實例3-26 str_split( )函數將字符串分割為數組 96
3.3.6 PHP字符串獲取函數 97
實例3-27 substr( )函數獲取字符串 97
實例3-28 strstr( )函數查找字符串 97
實例3-29 strrchr( )函數查找字符串 98
3.3.7 PHP字符串替換函數 98
實例3-30 substr_replace( )函數替換字符串 99
實例3-31 使用str_replace( )函數替換字符串 99
3.3.8 PHP字符串計算函數 100
實例3-32 使用strlen( )函數計算字符串的長度 100
實例3-33 使用strpos( )函數定位字符串第一次出現的位置 100
實例3-34 使用strrpos( )函數定位字符串zui後一次出現的位置 101
3.3.9 PHP字符串XHTML格式化顯示函數 101
實例3-35 使用nl2br( )函數格式化字符串 101
實例3-36 使用htmlspecialchars( )函數格式化字符串 102
3.3.10 PHP字符串存儲函數 102
實例3-37 使用addslashes( )函數對特殊字符加上轉義字符 102
實例3-38 對get_magic_quotes_gpc( )進行檢測 103
實例3-39 使用stripslashes( )函數取消轉義字符 103
小結 103
習題 103
第4章 PHP數組 120
4.1 數組概述 108
4.1.1 數組的定義 108
4.1.2 數組的分類 108
4.2 數組的聲明 109
4.2.1 直接賦值的方式聲明數組 109
實例4-1 一維索引數組 109
實例4-2 關聯數組 110
4.2.2 使用array( )函數新建數組 110
實例4-3 使用array( )創建數組 110
4.2.3 多維數組的聲明 111
實例4-4 二維數組的聲明 111
實例4-5 array語法聲明二維數組 111
4.3 數組的遍歷 111
4.3.1 使用for循環遍歷數組 111
實例4-6 for循環遍歷索引數組 112
4.3.2 forEach循環遍歷數組 112
實例4-7 foreach循環遍歷數組 112
實例4-8 foreach解析數組 113
4.3.3 聯合使用list( )、each( )和while循環遍歷數組 115
實例4-9 使用list( )、each( )和while循環遍歷數組 115
4.3.4 使用數組的內部指針控制函數遍歷數組 115
實例4-10 使用key($array)得到當前指針的鍵名和鍵值 116
實例4-11 使用next($array)將數組指針向下移動一位 116
實例4-12 使用prev($array)將數組指針向上移動一位 117
實例4-13 使用reset($array)將數組指針移動到數組開始位置 118
實例4-14 使用end($array)將數組指針移動到數組末尾 118
實例4-15 使用current( )函數返回數組中當前指針所在位置的數組值 118
4.4 數組統計函數 119
實例4-16 使用count( )函數統計數組中元素的個數 119
實例4-17 使用array_count_values( )函數統計數組中所有值出現的次數 119
實例4-18 使用array_sum( )函數返回整數和 119
實例4-19 使用array_sum( )函數返回浮點數和 120
實例4-20 使用array_sum( )函數返回關聯數組中值的和 120
實例4-21 使用for循環計算1到100的和 120
實例4-22 使用max( )函數返回大值 120
實例4-23 使用min( )函數返回小值 121
4.5 數組和變量之間的轉換 121
實例4-24 使用extract( )函數定義
變量 121
實例4-25 使用compact( )函數建立
數組 122
4.6 數組檢索函數 122
實例4-26 使用array_keys( )函數獲取
數組的鍵名 122
實例4-27 使用array_values( )函數
返回值並建立數字索引 123
實例4-28 使用in_array( )函數檢測
某一個值是否存在 123
實例4-29 使用array_search( )函數
搜索某一個值 123
實例4-30 使用array_key_exists( )
函數檢查給定的鍵名、索引 124
實例4-31 使用array_unique( )函數
刪除重複元素 124
4.7 組排序函數 124
實例4-32 使用sort( )函數將數組
元素升序排列並變為新數組 125
實例4-33 使用asort( )函數排序並
保持原有鍵/值對的對應關係 125
實例4-34 使用ksort( )和krsort( )函數
進行升序/降序排序 125
實例4-35 使用natsort( )和natcasesort( )
函數自然排序法排序 126
實例4-36 使用shuffle( )函數進行
隨機排序 126
實例4-37 使用array_reverse( )函數
返回新數組 126
4.8 數組與數據結構 127
實例4-38 使用array_push( )函數
向數組末尾添加元素 127
實例4-39 使用array_pop( )函數彈出
數組zui後一個元素 127
實例4-40 使用array_shift( )函數刪除
數組第一個元素 127
實例4-41 使用array_unshift( )函數
在數組開始插入元素 128
4.9 數組集合類函數 128
實例4-42 使用array_merge( )函數
合併數組 128
實例4-43 使用array_diff( )函數計算
數組的差集 128
實例4-44 使用array_diff_assoc( )函數
檢查計算數組的差集 129
實例4-45 使用array_diff_key( )函數
比較鍵名計算數組差集 129
實例4-46 使用array_intersect( )函數
獲取數組的交集 129
實例4-47 使用array_intersect_assoc( )
函數比較兩個(或多個)數組的鍵名
和鍵值 130
實例4-48 使用array_intersect_key( )
函數比較兩個(或多個)數組的
鍵名 130
小結 131
習題 131
第5章 PHP面向對象編程 132
5.1 PHP類與對象 132
5.1.1 類 133
5.1.2 屬性 133
5.1.3 方法 133
5.1.4 類的應用 133
實例5-1 類的定義及應用 134
5.2 PHP類的繼承 134
實例5-2 使用extends關鍵字來定義
類的繼承 135
5.3 PHP構造方法_ _construct( ) 135
實例5-3 PHP構造方法_ _construct( ) 的
使用 136
5.4 PHP析構方法_ _destruct( ) 136
5.5 PHP final關鍵字 137
5.6 PHP類的接口 137
5.6.1 PHP接口 137
實例5-4 使用關鍵字interface定義接口,
並使用關鍵字implements實現接口中的
方法 138
5.6.2 實現多個接口 138
5.6.3 抽象類和接口的區別 139
5.7 PHP類的訪問控制與封裝 139
5.7.1 訪問控制 139
5.7.2 封裝 140
實例5-5 使用private關鍵字對屬性
和方法進行封裝 140
5.8 PHP自動加載類 140
實例5-6 使用_ _autoload( )方法自動
加載類 141
5.9 範圍解析操作符(::) 141
5.9.1 ::訪問靜態成員、方法實例 141
實例5-7 使用::訪問靜態成員、
方法 141
5.9.2 ::訪問父類覆蓋成員和方法的
實例 142
實例5-8 使用::訪問父類覆蓋成員
和方法 142
5.10 PHP類的靜態成員屬性與
靜態方法 143
5.10.1 靜態(static) 143
實例5-9 使用static聲明類成員
或方法 143
5.10.2 靜態屬性方法 144
5.11 PHP常量(const) 144
實例5-10 使用const關鍵字定義
常量 144
5.12 PHP特殊方法 145
5.12.1 __set( )方法 145
5.12.2 __get( )方法 145
實例5-11 使用__ get( )方法獲取
私有屬性值 145
5.12.3 __isset( )方法 146
5.12.4 __unset( )方法 146
5.13 PHP重載 146
實例5-12 PHP的重載 147
5.14 PHP重載方法 148
5.15 PHP抽象方法與抽象類 148
5.15.1 抽象方法 148
5.15.2 抽象類 149
實例5-13 使用abstract關鍵字定義
抽象類 149
5.16 PHP對象克隆 149
5.16.1 對象克隆關鍵字 149
實例5-14 使用關鍵字clone克隆
對象 150
5.16.2 __clone( )方法 150
實例5-15 使用__clone( )方法重寫
對象原本的屬性和方法 150
5.17 PHP 對象的存儲與傳輸 151
5.17.1 序列化對象 151
實例5-16 使用serialize( )函數序列化
一個對象 151
實例5-17 使用unserialize( )函數
反序列化一個被序列化的對象 152
5.17.2 對象註冊為session變量 152
實例5-18 使用session保存對象 153
實例5-19 讀取session 153
小結 153
習題 154
第6章 PHP與Web頁面交互 155
6.1 PHP超級全局變量 155
6.1.1 PHP $GLOBALS 155
實例6-1 $GLOBALS的使用 156
6.1.2 PHP $_SERVER 156
實例6-2 $_SERVER的使用 156
6.1.3 PHP $_REQUEST 158
實例6-3 $_REQUEST的使用 158
6.1.4 PHP $_POST 158
實例6-4 $_POST的使用 158
6.1.5 PHP $_GET 159
實例6-5 $_GET的使用 159
6.2 PHP表單和用戶輸入 160
6.2.1 PHP表單處理 160
實例6-6 PHP表單前端頁面 160
實例6-7 PHP表單獲取數據頁面 160
6.2.2 PHP獲取下拉菜單的數據 161
實例6-8 實現PHP下拉菜單單選 161
實例6-9 實現PHP下拉菜單多選 161
實例6-10 實現PHP單選按鈕 162
實例6-11 實現PHP複選框 163
6.2.3 表單驗證 163
實例6-12 PHP表單驗證 164
6.2.4 $_SERVER[""PHP_SELF""] 變量 168
6.2.5 htmlspecialchars( )方法 168
6.2.6 PHP表單注意事項 168
6.2.7 避免$_SERVER[""PHP_SELF""]
被利用 169
6.2.8 使用PHP驗證表單數據 169
實例6-13 通過test_input( )函數檢測
$_POST中的所有變量 169
6.2.9 PHP表單必需字段驗證 171
實例6-14 PHP表單必填字段判斷 172
6.2.10 PHP表單驗證郵件和URL 174
實例6-15 PHP驗證姓名name、郵件
地址E-mail和網址URL 175
6.2.11 PHP完整表單實例 177
實例6-16 PHP完整的表單驗證 178
6.2.12 PHP $_GET變量 181
6.2.13 PHP $_POST變量 181
6.2.14 PHP $_REQUEST變量 182
小結 182
習題 183
第7章 PHP的Cookie和Session技術 184
7.1 Cookie技術 184
7.1.1 PHP中Cookie的功能和用途 184
7.1.2 PHP中如何創建Cookie 185
7.1.3 PHP中如何讀取Cookie 186
實例7-1 使用$_COOKIE[]讀取
瀏覽器端的Cookie值 187
7.2 Session 187
7.2.1 Session簡介 187
7.2.2 PHP中如何啟動Session會話 189
7.2.3 PHP中如何註冊和讀取Session
會話 189
實例7-2 Session 註冊會話 190
實例7-3 讀取Session會話 190
實例7-4 Session使用完整示例 191
7.2.4 PHP中如何刪除和銷毀Session 192
7.3 用戶登錄案例 193
實例7-5 使用cookie和session實現
用戶登錄 193
小結 197
習題 197
第8章 PHP正則表達式 200
8.1 正則表達式簡介 200
8.1.1 簡單的匹配 200
8.1.2 元字符 201
8.2 PHP正則表達式語法 202
8.2.1 重複規則 202
8.2.2 分支 202
8.2.3 分組 202
8.2.4 貪婪與懶惰 203
8.2.5 模式修正符 203
8.3 正則表達式匹配 204
8.3.1 正則表達式在PHP中的應用 204
8.3.2 定界符 204
8.3.3 preg_match( )函數 204
實例8-1 preg_match( )函數 205
實例8-2 從一個URL中取得主機
域名 205
8.3.4 preg_match_all( )函數 205
實例8-3 使用preg_match_all( )函數
設置文字 206
8.3.5 正則匹配中文漢字 206
實例8-4 正則匹配中文漢字 206
8.4 PHP正則表達式替換 207
8.4.1 正則替換簡介 207
8.4.2 正則替換補充說明 207
實例8-5 使用preg_replace( )函數
添加“-”分割符號 208
實例8-6 使用數組 208
實例8-7 使用逆向引用 208
8.5 PHP正則表達式分割 209
8.5.1 preg_split( )函數 209
實例8-8 使用preg_split( )函數分割
字符串為數組 209
實例8-9 使用preg_split( )函數分割
字符串 209
實例8-10 使用preg_split( )函數分割
字符串返回字符串和偏移量 210
8.5.2 split( )函數 210
實例8-11 使用split( )函數分割數組 211
8.6 PHP常用正則表達式整理 211
8.6.1 表單驗證匹配 211
8.6.2 字符匹配 212
8.6.3 匹配數字 212
8.6.4 其他 212
小結 212
習題 213
第9章 MySQL數據庫 216
9.1 MySQL的基本使用 216
9.1.1 數據庫基礎知識 216
9.1.2 MySQL簡介 216
9.1.3 MySQL的基本操作 217
實例9-1 MySQL的基本操作 217
9.2 MySQL管理工具phpMyAdmin 223
9.2.1 phpMyAdmin的安裝與配置 224
9.2.2 phpMyAdmin的操作 225
實例9-2 phpMyAdmin刪除
數據庫 225
實例9-3 phpmyadmin創建一個
數據庫 227
實例9-4 phpmyadmin創建數據表 228
實例9-5 phpmyadmin向數據表插入
數據 229
實例9-6 phpmyadmin查詢數據表中的
數據 230
小結 230
習題 230
第10章 PHP操作數據庫 231
10.1 PHP操作MySQL數據庫 231
10.1.1 連接MySQL數據庫 231
實例10-1 如何在PHP腳本中進行
MySQL數據庫服務器的連接 232
實例10-2 在PHP腳本中如何安全地
連接MySQL數據庫服務器 232
10.1.2 斷開與MySQL的連接 233
實例10-3 在PHP腳本中關閉一個
由mysql_connect( )函數建立的數據庫
連接 233
10.1.3 選擇和使用MySQL數據庫 233
實例10-4 在PHP腳本中選擇MySQL
數據庫服務器上的數據庫 234
10.1.4 執行MySQL指令 234
實例10-5 在PHP腳本中執行SQL
語句 234
實例10-6 採用mysql_db_query( )函數
重寫實例10-5 235
10.1.5 分析結果集 235
實例10-7 在PHP腳本中獲取結果
集中的記錄數 235
實例10-8 在PHP腳本中顯示某一行
記錄 236
實例10-9 顯示msyql_query( )函數
所返回結果集中的所有信息 237
實例10-10 採用mysql_result( )函數
獲取結果集中的所有數據 238
實例10-11 在PHP中使用
mysql_fetch_array( )函數獲取結果
集中的數據 238
實例10-12 分頁顯示結果集中的
數據 239
10.2 管理MySQL數據庫中的數據 240
10.2.1 添加數據 240
實例10-13 用戶輸入數據的HTML
頁面 241
實例10-14 服務器在接收到用戶所提交的
數據後,使用mysql_query( )函數將用戶
所提交的數據添加至數據庫 241
10.2.2 更新數據 242
實例10-15 在頁面中瀏覽數據 242
實例10-16 根據ID號調用其信息
並顯示在HTML表單中 243
實例10-17 根據用戶提交表單中的
信息進行修改 245
10.2.3 刪除數據 246
實例10-18 用戶在選擇要刪除的
資料時彈出相應的窗口 246
實例10-19 採用mysql_query( )函數
執行刪除語句 248
小結 248
習題 249
第11章 PHP用戶註冊與登錄 250
11.1 需求分析 250
11.2 數據表設計 251
11.3 頁面組成 251
11.4 PHP用戶註冊 252
11.4.1 註冊頁面 252
11.4.2 數據庫連接 254
11.4.3 註冊後台處理 254
11.5 PHP用戶登錄與退出 255
11.5.1 登錄頁面 255
11.5.2 登錄處理 256
11.5.3 退出處理 257
11.6 用戶中心 257
小結 258
習題 258
第12章 PHP留言板製作 261
12.1 PHP留言板製作簡介 261
12.2 PHP留言板功能需求分析 262
12.3 PHP留言板頁面構成 262
12.4 PHP留言板數據庫表設計 264
12.5 PHP留言板留言信息讀取展示 264
12.6 PHP留言板留言表單及留言處理 267
12.6.1 留言表單 267
12.6.2 JavaScript檢測代碼 267
12.6.3 留言表單信息處理 268
12.7 PHP留言板後臺管理登錄 269
12.7.1 登錄表單 269
12.7.2 JavaScript檢測代碼 270
12.7.3 登錄密碼檢測 270
12.8 PHP留言板系統後臺管理 271
12.8.1 後臺管理功能分析 271
12.8.2 後臺管理主頁面admin.php 271
12.9 PHP留言板後臺管理回復
及刪除留言處理 273
12.9.1 留言回復 273
12.9.2 留言刪除 274
小結 274
習題 274
參考文獻 274