導航:首頁 > 編程語言 > php第一個程序

php第一個程序

發布時間:2024-03-31 05:50:49

『壹』 php的發展史

PHP原始為Personal Home Page的縮寫,已經正式更名為 "PHP: Hypertext Preprocessor"。注意不是「Hypertext Preprocessor」的縮寫,這種將名稱放到定義中的寫法被稱作遞歸縮寫。PHP於1994年由Rasmus Lerdorf創建,剛剛開始是Rasmus Lerdorf 為了要維護個人網頁而製作的一個簡單的用Perl語言編寫的程序。這些工具程序用來顯示 Rasmus Lerdorf 的個人履歷,以及統計網頁流量。後來又用C語言重新編寫,包括可以訪問資料庫。他將這些程序和一些表單直譯器整合起來,稱為 PHP/FI。PHP/FI 可以和資料庫連接,產生簡單的動態網頁程序。
在1995年以Personal Home Page Tools (PHP Tools) 開始對外發表第一個版本,Lerdorf寫了一些介紹此程序的文檔。並且發布了PHP1.0!在這的版本中,提供了訪客留言本、訪客計數器等簡單的功能。以後越來越多的網站使用了PHP,並且強烈要求增加一些特性。比如循環語句和數組變數等等;在新的成員加入開發行列之後,Rasmus Lerdorf 在1995年6月8日將 PHP/FI 公開發布,希望可以透過社群來加速程序開發與尋找錯誤。這個發布的版本命名為 PHP 2,已經有 PHP 的一些雛型,像是類似 Perl 的變數命名方式、表單處理功能、以及嵌入到 HTML 中執行的能力。程序語法上也類似 Perl,有較多的限制,不過更簡單、更有彈性。PHP/FI加入了對MySQL的支持,從此建立了PHP在動態網頁開發上的地位。到了1996年底,有15000個網站使用 PHP/FI。

ISAPI篩選器
在1997年,任職於 Technion IIT公司的兩個以色列程序設計師:Zeev Surask
i 和 Andi Gutmans,重寫了 PHP 的剖析器,成為 PHP 3 的基礎。而 PHP 也在這個時候改稱為PHP:Hypertext Preprocessor.[5]。經過幾個月測試,開發團隊在1997年11月發布了 PHP/FI 2。隨後就開始 PHP 3 的開放測試,最後在1998年6月正式發布 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 發布後開始改寫PHP 的核心,這個在1999年發布的剖析器稱為 Zend Engine[7],他們也在以色列的 Ramat Gan 成立了 Zend Technologies 來管理 PHP 的開發。
在2000年5月22日,以Zend Engine 1.0為基礎的PHP 4正式發布,2004年7月13日則發布了PHP 5,PHP 5則使用了第二代的Zend Engine[5]。PHP包含了許多新特色,像是強化的面向對象功能、引入PDO(PHP Data Objects,一個存取資料庫的延伸函數庫)、以及許多效能上的增強。PHP 4已經不會繼續

PHP
更新,以鼓勵用戶轉移到PHP 5。
2008年PHP 5成為了PHP唯一的有在開發的PHP版本。將來的PHP 5.3將會加入Late static binding和一些其他的功能強化。PHP 6 的開發也正在進行中,主要的改進有移除register_globals、magic quotes 和 Safe mode的功能。
PHP最新穩定版本:5.3.21(2013.1.17)
PHP最新發布版本:5.5.1(2013.7.18)修復了20個bug及其一些優化。
2013年6月20日,PHP開發團隊自豪地宣布立即推出PHP 5.5.0。此版本包含了大量的新功能和bug修復。需要開發者特別注意的一點是不再支持 Windows XP 和 2003 系統。

『貳』 php工作流程

PHP是運行與伺服器端的腳本語言,實現了資料庫與網頁之間的數據交互。一個完整的PHP網站系統由以下幾部分組成。
操作系統
網路中的 伺服器也是一台計算機,因此需要操作系統。PHP有著良好的跨平台性,支持windows和linux等操作系統
web伺服器
當一台計算機中安裝操作系統後,還需要安裝web伺服器才能進行http訪問。常見的web伺服器軟體有Apache、IIS、Nginx等
資料庫
用於網站數據的存儲和管理。PHP支持多種資料庫,包括MySQL、sql server,oracle。db2
PHP軟體
用於解析PHP腳本文件、訪問資料庫等,是運行PHP代碼所必須的軟體。
瀏覽器
是瀏覽網頁的客戶端。由於PHP腳本是在伺服器端運行的,因此通過瀏覽器看到的是經過PHP處理後的html結果。。Zend引擎:Zend整體用純C實現,是PHP的內核部分,他將PHP代碼翻譯(詞法、語法解析等一系列編譯過程)為可執行opcode的處理並實現相應的處理方法、實現了基本的數據結構(如:hashtable、OO)、內存分配機制及管理、提供了相應的api方法供外部調用,是一切的核心,所有的外圍功能均圍繞Zend實現。

2、Extensions:圍繞著Zend引擎,extensions通過組件式的方式提供各種基礎服務,我們常見的各種內置函數(array系列)、標准庫等都是通過extension來實現,用戶也可以根據需要實現自己的extension的典型應用)。

3、Sapi:Sapi全稱Server Application Programming Interface,也就是服務端應用編程介面,Sapi通過一系列鉤子函數,使得PHP可以和外圍交互數據,這是PHP非常優雅和成功的設計,通過sapi成功的將PHP本身和上層應用解耦隔離,PHP可以不再考慮如何針對不同應用進行兼容,而應用本身也可以針對自己的特點實現不同的處理方式。

4、上層應用:這就是我們平時編寫的PHP程序,通過不同的spai方式得到各種各樣的應用模式,如何通過webserver實現web應用、在命令行下已腳本方式運行等等。

『叄』 php鏄浠涔堬紵

Php錛屾槸鑻辨枃瓚呯駭鏂囨湰棰勫勭悊璇璦Hyprtext Preprocessor鐨勭緝鍐欍 鏄涓縐岺TML鍐呭祵寮忕殑璇璦錛屾槸涓縐嶅湪鏈嶅姟鍣ㄧ鎵ц岀殑宓屽叆HTML鏂囨。鐨勮剼鏈璇璦錛岃璦鐨勯庢牸鏈夌被浼間簬C璇璦銆傝騫挎硾榪愮敤銆

PHP 鐙鐗圭殑璇娉曟販鍚堜簡 C銆丣ava銆丳erl 浠ュ強 PHP 鑷鍒涙柊鐨勮娉曘傚畠鍙浠ユ瘮CGI鎴栬匬erl鏇村揩閫熺殑鎵ц屽姩鎬佺綉欏點傜敤PHP鍋氬嚭鐨勫姩鎬侀〉闈涓庡叾浠栫殑緙栫▼璇璦鐩告瘮錛孭HP鏄灝嗙▼搴忓祵鍏ュ埌HTML鏂囨。涓鍘繪墽琛岋紝鎵ц屾晥鐜囨瘮瀹屽叏鐢熸垚HTML鏍囪扮殑CGI瑕侀珮璁稿氾紱PHP榪樺彲浠ユ墽琛岀紪璇戝悗浠g爜錛岀紪璇戝彲浠ヨ揪鍒板姞瀵嗗拰浼樺寲浠g爜榪愯岋紝浣誇唬鐮佽繍琛屾洿蹇銆侾HP鍏鋒湁闈炲父寮哄ぇ鐨勫姛鑳斤紝鎵鏈夌殑CGI鐨勫姛鑳絇HP閮借兘瀹炵幇錛岃屼笖鏀鎸佸嚑涔庢墍鏈夋祦琛岀殑鏁版嵁搴撲互鍙婃搷浣滅郴緇熴

『肆』 PHP學習手冊的目 錄

第一篇 基礎篇
第1章 了解PHP 18
1.1 什麼是PHP 19
1.2 選擇PHP的理由 19
1.3 如何學好編程 22
1.4 准備PHP的開發條件 24
1.4.1 下載PHP及相關軟體 24
1.4.2 代碼編輯工具 24
1.4.3 下載PHP用戶手冊 26
1.5 本章小結 26
第2章 准備開發PHP的條件 27
2.1 AppServ—Windows版PHP集成化安裝包 28
2.1.1 用AppServ搭建PHP開發環境 28
2.1.2 測試AppServ是否安裝成功 30
2.2 XAMPP—Linux版PHP集成化安裝包 31
2.2.1 用XAMPP搭建PHP開發環境 32
2.2.2 在Linux操作系統下啟動、停止XAMPP 33
2.2.3 設置Linux版XAMPP中MySQL資料庫root用戶的密碼 33
2.2.4 在Linux操作系統下編寫第一個PHP程序 33
2.3 PHP開發環境的關鍵配置信息 34
2.3.1 Apache伺服器的基本配置 34
2.3.2 PHP.INI文件的基本配置 35
2.4 解決PHP的常見配置問題 36
2.4.1 解決Apache伺服器埠沖突 36
2.4.2 更改Apache伺服器
默認存儲的文件路徑 36
2.4.3 在PHP.INI文件中更改上傳文件的大小 37
2.4.4 增加PHP擴展模塊 37
2.4.5 檢測PHP是否支持MySQL資料庫 38
2.5 Dreamweaver開發工具 38
2.5.1 情景應用一——Dreamweaver中編碼格式的選擇 38
2.5.2 情景應用二——Dreamweaver創建表格 39
2.5.3 情景應用三——Dreamweaver創建表單 43
2.5.4 情景應用四——Dreamweaver創建站點 45
2.5.5 情景應用五——Dreamweaver創建第一個PHP程序 46
2.6 本章小結 47
第3章 了解Web頁面的設計 48
3.1 XHTML基礎 49
3.1.1 XHTML語言的語法 49
3.1.2 XHTML文件的結構 51
3.1.3 編輯文字版面 53
3.1.4 插入圖像與鏈接 55
3.1.5 編寫XHTML表格 57
3.1.6 設計XHTML表單 58
3.1.7 情景應用一——編寫用戶注冊信息頁 61
3.1.8 情景應用二:文件域上傳文件 62
3.2 CSS樣式應用 63
3.2.1 將CSS樣式嵌入到HTML中 63
3.2.2 CSS選擇符 65
3.2.3 常見的CSS樣式屬性 67
3.2.4 情景應用——打造經典的導航欄 72
3.3 設計頁面布局 74
3.3.1 <div>和<span>標記 74
3.3.2 區塊模型 74
3.3.3 區塊浮動 75
3.3.4 情景應用——設置一行兩列浮動布局 77
3.4 實戰練習 78
3.4.1 CSS+DIV設計網站首頁 78
3.4.2 DIV標簽設計論壇後台管理頁面 79
3.5 本章小結 81
第4章 PHP開發基礎 82
4.1 PHP的工作原理 83
4.2 學習運用代碼注釋 83
4.2.1 使用PHP注釋 84
4.2.2 使用HTML注釋 84
4.2.3 有效使用注釋 85
4.3 PHP的常量應用 85
4.3.1 聲明和使用常量 85
4.3.2 預定義常量 87
4.4 PHP的變數應用 88
4.4.1 理解變數 88
4.4.2 聲明變數 88
4.4.3 變數作用域 89
4.4.4 可變變數 91
4.5 PHP的數據類型 92
4.5.1 標量數據類型 92
4.5.2 復合數據類型 96
4.5.3 特殊數據類型 97
4.5.4 轉換數據類型 98
4.5.5 檢測數據類型 100
4.6 PHP的運算符 101
4.6.1 算術運算符 101
4.6.2 字元串運算符 102
4.6.3 賦值運算符 102
4.6.4 位運算符 103
4.6.5 遞增或遞減運算符 103
4.6.6 邏輯運算符 104
4.6.7 比較運算符 105
4.6.8 三元運算符 105
4.6.9 運算符的使用規則 106
4.7 PHP的自定義函數 107
4.7.1 定義和調用函數 108
4.7.2 在函數間傳遞參數 109
4.7.3 函數的返回值 110
4.8 實戰練習 111
4.8.1 網站中最新動態模塊的中文字元串截取 111
4.8.2 論壇發布內容模塊中對內容的格式化輸出 112
4.9 本章小結 113
第5章 PHP流程式控制制語句 115
5.1 程序三種控制結構 116
5.1.1 順序結構 116
5.1.2 選擇(分支)結構 116
5.1.3 循環結構 116
5.2 條件控制語句 117
5.2.1 if條件控制語句 117
5.2.2 switch多分支語句 119
5.2.3 情景應用一——if語句判斷美女徵婚條件 121
5.2.4 情景應用二——switch網頁框架 122
5.3 循環控制語句 123
5.3.1 while循環語句 124
5.3.2 do...while循環語句 124
5.3.3 for循環語句 125
5.3.4 foreach循環語句 127
5.3.5 情景應用一——while語句循環讀取資料庫中數據 128
5.3.6 情景應用二——for循環語句開發一個乘法口訣表 129
5.4 跳轉語句 130
5.4.1 break跳轉語句 130
5.4.2 continue跳轉語句 131
5.4.3 return跳轉語句 132
5.5 包含語句 133
5.5.1 include()語句 133
5.5.2 require()語句 134
5.5.3 include_once()語句 135
5.5.4 require_once()語句 135
5.5.5 include()語句和require()語句的區別 136
5.5.6 include_once()語句和require_once()語句的區別 138
5.6 實戰練習 138
5.6.1 刪除資料庫中指定的數據表 138
5.6.2 for循環語句實現多圖片上傳 139
5.7 本章小結 140
第6章 字元串操作 141
6.1 初識字元串 142
6.2 轉義、還原字元串 142
6.3 截取字元串 143
6.4 分割、合成字元串 145
6.5 替換字元串 146
6.5.1 str_ireplace()函數 146
6.5.2 substr_replace()函數 148
6.6 檢索字元串 148
6.6.1 strstr()函數 148
6.6.2 substr_count()函數 149
6.7 去掉字元串首尾空格和特殊字元 150
6.7.1 ltrim()函數 150
6.7.2 rtrim()函數 151
6.7.3 trim()函數 152
6.8 字元串與HTML轉換 152
6.9 情景應用 154
6.9.1 超長文本的分頁輸出 154
6.9.2 查詢關鍵字描紅 155
6.9.3 購物車中數據的讀取 156
6.10 實戰練習 157
6.10.1 PHP 5新型字元串輸出XML數據信息 157
6.10.2 圖像驗證碼的相關操作 158
6.11 本章小結 159
第7章 正則表達式 160
7.1 什麼是正則表達式 161
7.2 正則表達式的語法規則 162
7.2.1 行定位符(^和$) 162
7.2.2 單詞定界符(、B) 162
7.2.3 字元類([ ]) 163
7.2.4 選擇字元(|) 163
7.2.5 連字元(-) 163
7.2.6 排除字元([^]) 164
7.2.7 限定符(? * + {n,m}) 164
7.2.8 點號字元(.) 164
7.2.9 轉義字元() 165
7.2.10 反斜線() 165
7.2.11 括弧字元(()) 166
7.2.12 情景應用一——整合實用的正則表達式 166
7.2.13 情景應用二——調用正則表達式驗證中文 168
7.3 PCRE兼容正則表達式函數 169
7.3.1 字元串的匹配與查找 169
7.3.2 情景應用一——應用正則表達式匹配電話號碼格式 170
7.3.3 字元串的替換 172
7.3.4 情景應用二——應用正則表達式實現UBB使用幫助 173
7.3.5 字元串的分割 173
7.4 實戰練習 174
7.4.1 正則表達式驗證用戶
7.4.1 注冊信息的合理性 174
7.4.2 正則表達式驗證提交的
7.4.1 購買數量是否是正整數 176
7.5 本章小結 177
第8章 初探數組 178
8.1 數組概述 179
8.2 數組類型 179
8.3 聲明數組 180
8.3.1 用戶創建數組 180
8.3.2 函數創建數組 181
8.3.3 創建二維數組 181
8.4 遍歷、輸出數組 182
8.4.1 遍歷數組 183
8.4.2 輸出數組元素 184
8.5 PHP的數組函數 185
8.5.1 統計數組元素個數 185
8.5.2 向數組中添加元素 185
8.5.3 獲取數組中最後一個元素 186
8.5.4 刪除數組中重復元素 186
8.5.5 獲取數組中指定元素的鍵名 186
8.5.6 字元串與數組的轉換 187
8.5.7 情景應用——讀取網上調查中的數據 188
8.6 PHP的全局數組 189
8.6.1 $_SERVER[ ]全局數組 189
8.6.2 $_GET[ ]和$_POST[ ]全局數組 190
8.6.3 $_COOKIE全局數組 190
8.6.4 $_ENV[ ]全局數組 191
8.6.5 $_REQUEST[ ]全局數組 191
8.6.6 $_SESSION[ ]全局數組 191
8.6.7 $_FILES[ ]全局數組 191
8.6.8 情景應用——$_FILES[ ]全局數組在文件上傳中的應用 191
8.7 實戰練習 193
8.7.1 生成在線考試題 193
8.7.2 通過獲取客戶端IP地址限制投票次數 193
8.8 本章小結 195
第9章 日期與時間 196
9.1 PHP的時間觀念 197
9.1.1 在PHP.INI文件中設置時區 197
9.1.2 通過date_default_timezone_set函數設置時區 197
9.2 UNIX時間戳 198
9.2.1 獲取任意日期、時間的時間戳 198
9.2.2 獲取當前時間戳 199
9.2.3 日期、時間轉換為UNIX時間戳 199
9.3 日期和時間處理 201
9.3.1 格式化日期和時間 201
9.3.2 獲取日期和時間信息 202
9.3.3 檢驗日期和時間的有效性 203
9.4 情景應用 204
9.4.1 獲取系統當前時間和時間戳 204
9.4.2 比較兩個時間的大小 204
9.4.3 倒計時 205
9.5 實戰練習 205
9.5.1 計算程序的運行時間 205
9.5.2 網頁鬧鍾 206
9.6 本章小結 207
第二篇 核心篇
第10章 文件和目錄處理技術 210
10.1 基本的文件處理技術 211
10.1.1 打開一個文件 211
10.1.2 讀取文件內容 214
10.1.3 向文件中寫入數據 218
10.1.4 關閉文件指針 220
10.2 目錄操作技術 220
10.2.1 打開指定目錄 220
10.2.2 讀取目錄結構 221
10.2.3 關閉目錄指針 222
10.3 文件的上傳技術 223
10.3.1 開啟文件上傳功能 223
10.3.2 全局變數$_FILES應用 224
10.3.3 將上傳文件移動到指定目錄 225
10.3.4 文件下載技術 226
10.4 情景應用 227
10.4.1 通過文本文件統計網站訪問量 227
10.4.2 規范化的文件上傳 229
10.5 實戰練習 231
10.5.1 從文本文件中讀取注冊服務條款 231
10.5.2 規范化的多文件上傳 232
10.6 本章小結 233
第11章 圖形圖像處理技術 234
11.1 了解GD2函數庫 235
11.2 設置GD2函數庫 235
11.3 學習常用的圖像處理技術 235
11.3.1 創建畫布 236
11.3.2 顏色處理 237
11.3.3 繪制文字 237
11.3.4 輸出圖像 239
11.3.5 銷毀圖像 240
11.3.6 情景應用一——在照片上書寫文字 240
11.3.7 情景應用二——GD2函數生成圖像驗證碼 241
11.4 運用Jpgraph類庫繪制圖像 242
11.4.1 Jpgraph類庫簡介 242
11.4.2 Jpgraph的安裝 242
11.4.3 情景應用一——柱狀圖展示2010年第一季度編程詞典銷量 243
11.4.4 情景應用二——折線圖分析2010年公司銷售額 245
11.4.5 情景應用三——多餅形圖分析2010年圖書銷量 246
11.5 實戰練習 248
11.5.1 GD2函數生成帶有干擾線的圖像驗證碼 248
11.5.2 Jpgraph創建折線圖分析圖書銷售走勢 249
11.5.3 Jpgraph創建3D餅形圖展示部門業績比較 250
11.6 本章小結 251
第12章 Cookie和會話控制 252
12.1 會話的操作 253
12.1.1 創建會話 253
12.1.2 配置PHP的會話 255
12.2 會話的高級應用 259
12.2.1 SESSION臨時文件 259
12.2.2 SESSION緩存 259
12.2.3 SESSION資料庫存儲 261
12.3 Cookie的操作 263
12.3.1 設置Cookie 264
12.3.2 訪問Cookie 265
12.3.3 刪除Cookie 266
12.4 情景應用 267
12.4.1 登錄驗證 267
12.4.2 Cookie自動登錄 269
12.5 實戰練習 270
12.5.1 防止頁面刷新 270
12.5.2 控制客戶端Cookie 271
12.6 本章小結 272
第13章 面向對象 273
13.1 一切皆是對象 274
13.1.1 什麼是類 274
13.1.2 對象的由來 274
13.1.3 面向對象的特點 275
13.2 類的聲明 275
13.2.1 類的定義 275
13.2.2 成員屬性 276
13.2.3 成員方法 277
13.3 類的實例化 277
13.3.1 創建對象 278
13.3.2 訪問類中成員 278
13.3.3 特殊的訪問方法——「$this」和「::」 279
13.3.4 構造方法和析構方法 280
13.4 面向對象的封裝特性 281
13.4.1 public(公共成員) 282
13.4.2 private(私有成員) 282
13.4.3 protected(保護成員) 283
13.5 面向對象的繼承特性 283
13.5.1 類的繼承——extends關鍵字 283
13.5.2 類的繼承——parent::關鍵字 284
13.5.3 覆蓋父類方法 285
13.6 抽象類和介面 286
13.6.1 抽象類 286
13.6.2 介面 287
13.7 面向對象的多態性 289
13.7.1 通過繼承實現多態 289
13.7.2 通過介面實現多態 290
13.8 面向對象的關鍵字 290
13.8.1 final關鍵字 291
13.8.2 static關鍵字——聲明靜態類成員 291
13.8.3 clone關鍵字——克隆對象 292
13.8.4 對象比較 293
13.8.5 instanceof關鍵字——對象類型檢測 293
13.9 面向對象的魔術方法 293
13.9.1 _set()和_get()方法 294
13.9.2 _isset()和_unset()方法 294
13.9.3 _call()方法 294
12.9.4 _toString()方法 295
13.9.5 _autoload()方法 295
13.9.6 情景應用一——封裝一個資料庫連接類 296
13.9.7 情景應用二——封裝一個資料庫操作類 297
13.10 實戰練習 298
13.10.1 分頁類 299
13.10.2 萬用表格 300
13.11 本章小結 301
第14章 MySQL資料庫設計 302
14.1 MySQL概述 303
14.1.1 MySQL的特點 303
14.1.2 SQL和MySQL 303
14.2 MySQL伺服器的啟動和關閉 304
14.2.1 啟動MySQL伺服器 304
14.2.2 連接MySQL伺服器 305
14.2.3 關閉MySQL伺服器 305
14.3 操作MySQL資料庫 306
14.3.1 創建新資料庫 306
14.3.2 選擇指定資料庫 306
14.3.3 刪除指定資料庫 306
14.4 操作MySQL數據表 307
14.4.1 創建一個表 307
14.4.2 查看數據表結構 308
14.4.3 修改數據表結構 309
14.4.4 重命名數據表 310
14.4.5 刪除指定數據表 310
14.5 操作MySQL數據 311
14.5.1 向數據表中添加數據(INSERT) 311
14.5.2 更新數據表中數據(UPDATE) 312
14.5.3 刪除數據表中數據(DELETE) 312
14.5.4 查詢數據表中數據 313
14.5.5 情景應用一——數據排序 316
14.5.6 情景應用二——limit控制輸出數據的開始位置和記錄數 316
14.6 MySQL數據類型 316
14.6.1 數字類型 317
14.6.2 字元串類型 317
14.6.3 日期和時間數據類型 319
14.7 用phpMyAdmin管理MySQL資料庫 319
14.7.1 管理資料庫 319
14.7.2 管理數據表 320
14.7.3 管理數據記錄 322
14.7.4 導入/導出數據 324
14.8 實戰練習 325
14.8.1 批量添加記錄(LOAD DATA和MYSQLIMPORT) 325
14.8.2 在phpMyAdmin中重置MySQL伺服器登錄密碼 326
14.9 本章小結 326
第15章 資料庫編程技術 327
15.1 PHP操作MySQL資料庫的步驟 328
15.2 PHP操作MySQL資料庫的方法 329
15.2.1 mysql_connect()函數連接MySQL伺服器 329
15.2.2 mysql_select_db()函數選擇MySQL資料庫 330
15.2.3 mysql_query()函數執行SQL語句 330
15.2.4 mysql_fetch_array()函數將結果集返回到數組中 331
15.2.5 mysql_fetch_row()函數從結果集中獲取一行作為枚舉數組 333
15.2.6 mysql_num_rows()函數獲取查詢結果集中的記錄數 333
15.3 管理MySQL資料庫中的數據 334
15.3.1 向資料庫中添加數據 334
15.3.2 編輯資料庫數據 335
15.3.3 從資料庫中刪除數據 336
15.3.4 批量數據操作 336
15.4 情景應用 337
15.4.1 通用查詢 337
15.4.2 分組統計 338
15.4.3 對查詢結果分頁顯示 339
15.4.4 站內搜索 340
15.5 實戰練習 341
15.5.1 對查詢結果進行跳轉分頁顯示 341
15.5.2 高級查詢 341
15.6 本章小結 342
第三篇 高級篇
第16章 PDO資料庫抽象層 346
16.1 什麼是PDO 347
16.1.1 PDO概述 347
16.1.2 PDO特點 347
16.1.3 安裝PDO 347
16.2 PDO連接資料庫 348
16.2.1 PDO構造函數 348
16.2.2 情景應用一——連接MySQL資料庫 348
16.2.3 情景應用二——連接MS SQL Server資料庫 349
16.2.4 情景應用三——連接Oracle資料庫 350
16.3 PDO中執行SQL語句 350
16.3.1 exec()方法 351
16.3.2 query()方法 351
16.3.3 預處理語句——prepare()和execute() 352
16.3.4 情景應用一——通過PDO向資料庫中添加數據 353
16.3.5 情景應用二——通過PDO更新資料庫中數據 354
16.4 PDO中獲取結果集 355
16.4.1 fetch()方法 355
16.4.2 fetchAll()方法 357
16.4.3 fetchColumn()方法 358
16.5 PDO中捕獲SQL語句中的錯誤 359
16.5.1 使用默認模式——PDO::ERRMODE_SILENT 359
16.5.2 使用警告模式——PDO::ERRMODE_WARNING 360
16.5.3 使用異常模式——PDO::ERRMODE_EXCEPTION 361
16.6 PDO中錯誤處理 362
16.6.1 errorCode()方法 362
16.6.2 errorInfo()方法 363
16.7 PDO中事務處理 364
16.8 PDO中存儲過程 366
16.9 實戰練習 367
16.9.1 PDO讀取MS SQL Server資料庫中數據 367
16.9.2 PDO讀取Oracle資料庫中數據 368
16.10 本章小結 369
第17章 ADODB資料庫抽象層 370
17.1 ADODB概述 371
17.1.1 ADODB的優點與缺點 371
17.1.2 ADODB的安裝與操作流程 371
17.2 連接資料庫系統和資料庫 372
17.2.1 連接資料庫系統——ADONewConnection()函數 372
17.2.2 資料庫持久化連接——PConnect()函數 372
17.2.3 資料庫非持久化連接——Connect()函數 372
17.2.4 情景應用一——ADODB連接MySQL資料庫 373
17.2.5 情景應用二——ADODB連接Access資料庫 374
17.2.6 情景應用三——ADODB連接MS SQL Server資料庫 374
17.2.7 情景應用四——ADODB連接Oracle資料庫 375
17.3 通過公共變數控制數據的存取方式 376
17.4 ADODB執行SQL語句 377
17.4.1 執行SQL語句——execute()函數 377
17.4.2 控制SELECT查詢語句的起始位置——SelectLimit()函數 378
17.4.3 添加、更新數據——GetInsertSQL()、GetUpdateSQL()函數 379
17.4.4 操作SQL語句的其他方法 380
17.5 ADODB控制結果集 380
17.5.1 控制指針的方法 381
17.5.2 控制結果集內容的方法 382
17.5.3 日期格式和數據類型的轉換 383
17.6 ADODB中的分頁 384
17.6.1 ADODB分頁函數 384
17.6.2 一個小巧的分頁函數——ADODB_Pager()函數 385
17.7 ADODB中的錯誤處理 386
17.7.1 ADODB中的錯誤處理函數 386
17.7.2 ADODB中自定義的錯誤處理機制 387
17.7.3 情景應用——通過日誌文件存儲錯誤信息 388
17.8 ADODB中的事務處理 389
17.9 實戰練習 390
17.9.1 封裝ADODB連接資料庫類 390
17.9.2 封裝ADODB操作資料庫類 391
17.9.3 封裝ADODB分頁類 392
17.9.4 通過事務處理機制保證數據轉換的順利完成 393
17.10 本章小結 395
第18章 PHP的字元編碼 396
18.1 了解網頁字元編碼 397
18.1.1 ASCII 字元集 397
18.1.2 ISO 8859 字元集 397
18.1.3 GB2312與GBK編碼 398
18.1.4 Unicode字元集 398
18.1.5 UTF-8編碼 398
18.2 PHP網頁的字元編碼 399
18.2.1 設置編碼格式 399
18.2.2 轉換編碼格式 400
18.2.3 檢測字元串的編碼 402
18.3 PHP開發中的亂碼問題 403
18.3.1 解決頁面中的亂碼問題 403
18.3.2 資料庫中的字元集編碼問題 405
18.3.3 避免截取中文字元串時出現亂碼 406
18.4 PHP區域化設置 407
18.4.1 PHP網頁的區域化 407
18.4.2 使用setlocale()函數設置區域化 408
18.5 實戰練習 409
18.5.1 避免截取超長文本時出現亂碼 409
18.5.2 了解PHP編碼規則 410
18.5.3 了解PHP編碼風格 410
18.6 本章小結 412
第19章 程序調試與錯誤處理 413
19.1 基本調試策略 414
19.2 常見錯誤分析 414
19.2.1 語法錯誤 414
19.2.2 定義錯誤 417
19.2.3 邏輯錯誤 418
19.2.4 運行錯誤 419
19.2.5 環境錯誤 421
19.3 PHP.INI中的錯誤處理機制 422
19.3.1 控制錯誤顯示及顯示方式 423
19.3.2 控制錯誤的級別 423
19.4 程序調試方法 424
19.4.1 應用DIE語句調試 424
19.4.2 應用mysql_error()語句輸出錯誤信息 425
19.4.3 應用try{}catch{}M語句拋出並捕獲異常 425
19.5 錯誤處理技巧 427
19.5.1 隱藏錯誤 427
19.5.2 自定義錯誤頁面 427
19.5.3 延長伺服器執行時間——處理超時錯誤 428
19.6 情景應用 429
19.6.1 如何分析、解決PHP與MySQL連接錯誤 429
19.6.2 解決資料庫亂碼問題 431
19.7 實戰練習 432
19.7.1 封裝屬於自己的異常處理類 432
19.7.2 使用錯誤處理器記錄日誌 433
19.8 本章小結 434
第20章 Smarty模板技術 435
20.1 走進Smarty模板引擎 436
20.1.1 Smarty模板引擎下載 437
20.1.2 Smarty模板引擎安裝 437
20.1.3 Smarty模板引擎配置 437
20.1.4 情景應用一——走進Smarty模板引擎 439
20.1.5 情景應用二——封裝Smarty模板的配置方法 440
20.2 Smarty模板設計——靜態頁處理 442
20.2.1 基本語法(注釋、函數和屬性) 442
20.2.2 Smarty模板設計變數 443
20.2.3 變數調節器 444
20.2.4 情景應用一——Smarty模板中日期、時間的格式化輸出 445
20.2.5 情景應用二——通過組合修改器分隔多個變數調節器 445
20.2.6 內建函數(動態文件、模板文件的包含和流程式控制制語句) 446
20.2.7 情景應用三——Smarty模板創建網頁框架 448
20.2.8 情景應用四——section語句循環輸出資料庫中的數據 450
20.2.9 自定義函數 451
20.2.10 配置文件 454
20.3 Smarty程序設計——動態文件操作 455
20.3.1 SMARTY_PATH常量 455
20.3.2 Smarty程序設計變數 455
20.3.3 Smarty方法 456
20.3.4 Smarty緩存 456
20.3.5 情景應用——開啟網站注冊頁面的緩存 458
20.4 實戰練習 460
20.4.1 Smarty+ADODB完成數據的分頁輸出 460
20.4.2 Smarty中通過truncate方法截取字元串 461
20.4.3 用Register_Function方法注冊模板函數 462
20.4.4 Smarty模板中的關鍵字描紅 464
20.5 本章小結 464
第四篇 實戰篇
第21章 企業網站開發模板 466
21.1 明日企業網概述 467
21.2 開發背景 467
21.3 需求分析 467
21.4 功能結構 468
21.5 資料庫設計 469
21.5.1 資料庫概念設計 469
21.5.2 創建資料庫及數據表 470
21.6 技術攻關 471
21.6.1 Smarty模板 471
21.6.2 最簡單的網頁框架 473
21.6.3 ADODB類庫 473
21.6.4 封裝分頁類 474
21.7 首頁設計 475
21.7.1 首頁概述 475
21.7.2 首頁技術分析 476
21.7.3 首頁的實現過程 476
21.8 產品展示設計 478
21.8.1 產品展示概述 478
21.8.2 產品展示技術分析 478
21.8.3 產品展示實現過程 479
21.9 後台管理系統設計 480
21.9.1 後台管理系統概述 481
21.9.2 後台管理系統技術分析 481
21.9.3 後台管理系統實現過程 482
21.10 程序調試與錯誤處理 486
21.10.1 SQL語句的返回機制 486
21.10.2 錯誤處理 487
21.11 開發總結 488
附錄 專業術語表 489

『伍』 求一點PHP對TXT文件和文章的操作教程

PHP教程.安裝PHP
安裝PHP
本章將按下列步驟編譯安裝以下軟體:
* Apache v.1.3.4 -- 世界上最流行的Web伺服器。
* gcc v.2.8.1 -- 來源於GNU的C和C++編譯器。
* MySQL v.3.22.16b-gamma -- 世界范圍內許多人使用的資料庫。
* PHP v.3.0.11 -- 本書所主要介紹的軟體。從http://www.php.net(或此站點的鏡象站點)直接下載可以得到較新的版本。本章的其它步驟仍然適用。
* expact -- 用於讀取和處理XML文檔的函數庫。
* phplib -- 用於進行會話管理的PHP函數庫。
* libiodbc -- 主要用於存取在非UNIX計算機中資料庫的ODBC函數庫。
* MyODBC -- PHP、iODBC和MySQL之間的函數庫。
即便如此,本章也並不是介紹編譯應用程序所需要的那些指令,而只是簡單的進行描述。總之,本書的重點是介紹PHP語言,而不是C語言。每一個應用程序的編譯對我來說都十分清楚,希望每個讀者也能沒有困難的進行編譯。假如你確實碰到了一些問題,可以在某個IRC頻道中有禮貌的詢問,或者可以嘗試使用新聞組(可以從http://www.dejanews.com訪問)得到幫助來解決問題。然而,最好的幫助還是來自http://www.php.net 上的PHP郵件列表。
在開始編譯過程之前,讓我們先討論一下如何從錯誤中恢復。在得到有關錯誤的幫助以後,可以採用以下的命令重新初始化源碼目錄:
* rm config.cache--幾乎所有的Linux應用程序都使用configure命令來檢查自己的系統,以尋找有關如何剪裁編譯過程的信息。檢查的結果將存貯在一個名為config.cache的文件中。如果移走此文件,將迫使配置程序從頭開始重新檢查系統。
* make distclean--所有的用C語言編寫的Linux應用程序都是用make程序編譯的。make程序會尋找每一個源文件,以確認是需要編譯還是已經編譯過的。make distclean命令可以「重置」所有的源程序,以便能重新編譯它們。
* make clean--有的應用程序不支持make distclean命令,而用make clean命令來代替。make clean命令「重置」所有的源程序,以便能重新編譯它們。
即使要安裝的一些應用程序不支持以上的每個命令,但是試一下這些命令也不會有什麼害處。

注意:Red Hat v5.2使用glibc庫。如果用戶從互聯網中下載或更新在本章中安裝的程序時,必須知道glibc的信息。使用者可以使用rpm -q glibc命令來查出已經安裝的glibc庫的版本號。在作者的系統中,使用rpm -q glibc命令將顯示glibc-2.0.7.29。

2.1 基本概念
也許讀者以前從沒有編譯過Linux應用程序,在這里介紹一些基本概念,以便在出現問題時有可能診斷出問題所在。
tar
tar,即tape archiver,它可以把幾個文件組合成一個文件,並可以選擇是否進行壓縮。這個命令過去通常用來進行備份,以便使數據存儲在磁帶中。當tar文件被壓縮時,它們有一個.gz的後綴;當tar文件沒有壓縮時,它們有一個.tar的後綴。
gcc
gcc 是GNU的C編譯器。它的工作是把人可以看懂的源代碼文件編譯成機器可以讀懂的目標文件。C源文件通常有.c的後綴名,目標文件通常有.o的後綴名。如果編譯工作不能正常進行,就是碰到了一個編譯期的錯誤,或者說:語法錯誤。在大多數情況下,不徹底的編譯通常是編譯器找不到一個或幾個包含文件而產生的。包含文件都有一個.h的擴展名,通常用來定義不同的系統信息,以及將多個不同的.c文件所共有的信息收集在一起。
make
make是一個常用的工具程序,是用來幫助進行編譯的。它的工作是用來只編譯那些還沒有編譯過的源文件。編譯.c文件將生成一個.o文件,如果.c文件比.o文件更新,也就是說到上次編譯之前,源文件被編輯過,那麼make將會重新編譯.c文件。make指令一般是尋找一個Makefile文件,在這個文件中包含有一個或多個能執行的目標,例如,make clean會告訴make執行清除目標。
ld
ld是GNU的鏈接程序。它的工作是把所有的目標文件和庫鏈接起來,創建一個單一的可執行文件。幸運的是,基本上不用手工運行這個程序,因為Makefile將會考慮到所有的編譯細節。
ldconfig
ldconfig會為在多個庫目錄(在/etc/ld.so.conf中指定)中尋找共享庫。共享庫常被多個的應用程序使用,它們的文件名中的某個地方有.so,例如,libqt.so.1.42是一個共享庫。在編譯完畢之後,有可能需要在/etc/ld.so.conf文件中增加一個目錄,並且運行ldconfig -v命令。
./configure
configure將會在計算機中尋找一些關鍵信息,例如,安裝的是哪一種C編譯器,包含文件在哪裡等等。然後,configure將會按照所用的計算機配置重新修改Makefile文件。應該使用./configure來在當前目錄下運行程序,以避免偶然運行$PATH環境變數中的目錄下的其他程序。
符號連接
符號連接允許使用者可以為一個已經現有的文件指定另一個不同的名字。例如,使用者有可能想把一個名為libqt.so.1.42的文件稱為libqt.so.1。符號連接基本上可以使用戶把一個文件復制到另一個不同的目錄下面,但事實上並沒有真正復制此文件。第二個文件實例只是簡單地指向第一個文件實例。使用符號連接至少可以有兩點好處,第一點是符號連接可以節省硬碟空間,少到只有16位元組;第二點有一點微妙,讓我們先看一下一個名為libqt.so.1且指向libqt.so.1.42的符號連接。如果需要升級到libqt.so.1.88,該怎麼辦呢?用戶只要簡單地改變符號連接,使libqt.so.1指向libqt.so.1.88,而非libqt.so.1.42即可。這意味著涉及到libqt.so.1的程序將自動地使用這個庫的新版本。按照慣例,符號連接常用於完整的發布版本號。換句話說,libqt.so.1.88和libqt.so.2.32應該有兩個不同的動態連接(分別為libqt.so.1和libqt.so.2)。
2.2 編譯前的准備工作
以下步驟將為系統做好編譯前的准備工作。
1. mkdir /usr/local/src -- 我選用/usr/local樹作為所安裝應用程序的根目錄。其他人可能選用/usr/opt、/opt或/var目錄。為了更方便的按照本章中的指令操作,請選用/usr/local目錄作為根目錄。當編譯完成以後,用戶可以把這些文件復制到不同的目錄中。

注意:為了能完成本章中的其它步驟,使用者必須具備root許可權。

2. cd /usr/local/src--轉到源文件目錄下。
3. 下載以下文件(可以從http://www.mtolive.com/phpbook站點下載),或者從本書隨機附帶的光碟中,復制這些文件到/usr/local/src目錄下:
. apache_1.3.4.tar.gz
. gcc-2.8.1.tar.gz
. mysql-3.22.16b-gamma.tar.gz
. php-3.0.11.tar.gz
. expat.tar.gz
. phplib.tar.gz
. libiodb-2.50.3
. myodbc-2.50.24-src
4. 使用tar命令解壓縮以上文件。tar的x選項為解開選項,v選項將在屏幕上顯示文檔中解出來的文件名,z選項為解壓縮選項,f選項用於在命令行中指定.tar文件名。
tar xvzf apache_1.3.4.tar.gz
tar xvzf gcc-2.8.1.tar.gz
tar xvzf mysql-3.22.16b-gamma.tar.gz
tar xvzf php-3.0.11.tar.gz
tar xvzf expat.tar.gz
tar xvzf phplib.tar.gz
5. gcc -v
確定系統中現有gcc的版本。如果你的系統不是v2.7.2.3,在下面的操作步驟中採用你的gcc版本號替換v.2.7.2.3。
6. cp `which gcc` /usr/bin/gcc-2.7.2.3
如果需要,把現有的gcc備份,以便以後使用。Linux的另一個優點是可以很容易在目錄下存儲一個程序的多個版本。
7. httpd -v
確定系統中的Apache的版本號。如果你的系統中的Apache不是v1.3.4,在下面的操作步驟中使用你的版本號替換v1.3.4。
8. mv `which httpd` /usr/sbin/httpd-1.3.4
如果需要,把現有的Apache備份,以便以後使用。

2.3 編譯C編譯器gcc
使用者應該安裝、編譯程序的第一個程序就是C編譯器。隨Red Hat v5.2附帶的C編譯器是gcc v2.7.2.3,由於它的版本比較低,以至於不能正確的編譯PHP。然而gcc v.2.7.3可以用來編譯版本較高的gcc v2.8.1。
編譯新版本的gcc需要執行:
1. cd /usr/local/src/gcc-2.8.1
轉到gcc的頂級目錄下。
2. ./configure -prefix=/usr/local/gcc
運行配置程序,強制安裝程序在後面的安裝過程中使用/usr/local/gcc作為gcc的安裝目錄。
3. make bootstrap LANGUAGES="c c++" BOOT_CFLAGS="-g -02"
編譯新的C和C++編譯器。
4. make install LANGUAGES="c c++" BOOT_CFLAGS="-g -02"
安裝新的C和C++編譯器。
5. mv /usr/local/gcc/bin/gcc /usr/local/gcc/bin/gcc-2.8.1
把新的gcc編譯器重新命名,使它的名字中含有版本號。
6. ln -s \
/usr/local/gcc/bin/gcc-2.8.1 \
/usr/bin/gcc-
給新編譯過的gcc可執行文件創建一個符號連接/usr/bin/gcc。
7. gcc -v
顯示gcc的版本號。如果編譯和安裝都正常的話,將顯示v.2.8.1。

2.3 編譯MySQL
現在來編譯MySQL。在編譯工作完成之後,就可以使用MySQL的應用程序來測試安裝。
1. cd /usr/src/mysql-3.22.16a-gamma
轉到MySQL的頂級目錄下。
2. ./configure --prefix=/usr/local/mysql
運行配置程序,強制安裝程序在後面的安裝過程中使用/usr/local/mysql作為MySQL的安裝目錄。
3. make
編譯MySQL。
4. make install
安裝MySQL。
5. echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
將MySQL庫所在的目錄添加進配置文件中。這樣,當Linux啟動或者執行ldconfig命令時,將會在該配置文件中的目錄里搜索庫文件。
6. ldconfig -v | grep libmysqlclient
ldconfig命令能讀取/etc/ld.so.conf文件中列出的目錄,並對在那些目錄里找到的庫文件進行緩沖。grep命令在ldconfig命令的大量輸出結果中查找MySQL庫文件,並限定文本以類似下面方式進行顯示:
libmysqlclient.so.6 => libmysqlclient.so.6.0.0.
7. echo "/usr/local/mysql/bin/safe_mysqld > /dev/null &" >> /etc/rc.d/rc.local
將MySQL啟動指令添加到/etc/rc.d/rc.local文件中,這樣每次啟動Linux後就會自動運行MySQL。
8. ./scripts/mysql_install_db
初始化資料庫。
9. /usr/local/mysql/bin/safe_mysqld > /dev/null &
啟動MySQL伺服器作為後台程序,為了測試安裝,MySQL伺服器必須啟動。
10. ln -s \
/usr/local/mysql/bin/mysql \
/usr/bin/mysql
我比較喜歡在/usr/bin目錄下為安裝目錄建立符號鏈接。這一方法減少了PATH環境變數中的目錄數量,還可以將不希望其他人運行的MySQL工具程序隱藏起來,(例如,mysqladmin命令)。另一方法是將命令PATH="$PATH:/usr/local/mysql/bin"放在/etc/profile文件中。以上兩種方法都很可以採用。
11. ln -s\
/usr/local/mysql/bin/mysqlshow \
/usr/bin/mysqlshow
該指令是讓一般用戶都可以運行mysqlshow命令。

2.4 測試MySQL
在繼續Apache和PHP編譯之前,首先來測試MySQL的安裝是否成功。正式發布的MySQL帶有許多有用的工具,這里我們只使用mysql和mysqlshow命令來進行測試。(如果對資料庫不熟悉,請不用擔心,諸如用戶、表、記錄等資料庫的概念將在第六章「資料庫和SQL」中加以介紹。)
mysqladmin的作用是建立和刪除資料庫、檢查SQL的狀態,以及其他一些用途。首先,通過檢查版本號以確認是否已經正確安裝了MySQL:

>PATH="usr/local/mysql/bin:$PATH"
>mysqladmin version
Ver 7.8 Distrib 3.22.16a-gamma, for pc-linux-gun on i686 TCX Datakonsult AB, by Monty
Server version 3.22.16a-gamma
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 2 hours 30 min 39 sec

Threads: 1 Questions: 7 Slow queries: 0
Opens: 6 Flush tables: 1 Open tables: 2

可以用以下命令觀看mysqladmin的所有功能.

mysqladmin --help | less

也許mysqlshow是更讓人激動的工具,它能夠列出資料庫、表和欄位名,如下所示:

清單2.1 mysqlshow--顯示資料庫,表和欄位名清單

Page 18(第13行)-19(倒數第10行) , 清單 2.1

最後要介紹的MySQL工具是mysql,這個程序將深入到MySQL的中心,並且可以使你可以立刻在Linux命令行提示下執行SQL語句。在shell模式下運行mysql。

Page 19(倒數第5行)-20(倒數第5行)

小心:設置密碼要使用password()函數。如果需要進一步了解,請查閱MySQL文檔。

小心:在系統進入正常工作模式的時候,請選用一個比「password」更好的root密碼。

2.5 編譯iODBC和MyODBC
iODBC是一個實現開放性資料庫互連(Open Database connectivity)協議的函數庫。它主要用於連接運行於Microsoft Windows的資料庫引擎。
1. cd /usr/local/src/libiodbc-2.50.3
轉到iODBC目錄。
2. ./configure \
--prefix=/usr/local/iodbc \
--with-iodbc-inidir=/usr/local/etc
運行配置程序,並強制設置iODBC為安裝到目錄/usr/local/iodbc下。此外,應確認odbc的初始化文件為/etc/odbc.ini。
3. make
4. make install
把庫文件復制到目錄/usr/local/iodbc/lib下,並且把包含文件復制到目錄/usr/local/iodbc/include下。
5. cd /usr/local/src/myodbc-2.50.24
轉到MyODBC目錄下。
6. ./configure \
--prefix=/usr/local/myodbc \
--with-mysql-sources=/usr/local/mysql-3.22.16a-gamma \
--with-odbc-ini=/etc/odbc.ini \
--with-iodbc=/usr/local/iodbc
運行MyODBC配置程序。
7. make
8. make install
把庫復制到目錄/usr/local/myodbc/lib下。
2.6 編譯PHP
編譯PHP比編譯以前的應用程序更復雜,這是因為編譯PHP事實上是expat、Apache和PHP的組合。編譯的結果將生成一個帶有PHP的Apache版本。為了要編譯PHP,可以採用以下步驟:
1. cd /usr/local/src/expat
轉到expat目錄。
2. make
編譯expat源文件。
3. 把以下命令加到Makefile文件中,必須保證在輸入ar和ralib之前使用的是Tab鍵。
libexpat.a: $(OBJS)
ar -rc $@ $(OBJS)
ranlib $@
4. make libexpat.a
把expat目標文件組合成庫文件。
5. mv libexpat.a /usr/local/lib
PHP配置文件在/usr/local/lib目錄下尋找libexpat.a文件。把libexpat.a文件移到PHP配置文件已知的目錄下,可以為以後的操作減少麻煩。
6. cd /usr/local/src/php-3.0.11
轉到PHP的頂級目錄下。
7. mkdir /usr/local/include/xml
確認/usr/local/include/xml目錄是存在的。
8. ln -s \
/usr/local/src/expat/xmltok/xmltok.h \
/usr/local/include/xml/xmltok.h
當能創建符號連接時,為什麼還要復制呢?
9. ln -s \
/usr/local/src/expat/xmlparse.h \
/usr/local/include/xml/xmlparse.h
這是PHP為了能夠正確地被編譯所需要的另一個包含文件。
10. cd /usr/local/src/apache_1.3.4
轉到Apache的頂級目錄下。
11. ./configure -prefix=/usr/local/apache
運行配置程序,強制設置Apache安裝目錄為/usr/local/apache。
12. cd /usr/local/src/php-3.0.11
轉到PHP的頂級目錄下。
13. ./configure \
--with-apache=../apache_1.3.4 \
--with-iodbc=/usr/local/iodbc \
--with-mysql=/usr/local/mysql \
--with-xml
運行配置程序,並且告訴配置程序支持Apache、MySQL和XML。
14. make
編譯PHP源文件。
15. make install
安裝已編譯的文件。PHP庫文件會被放在Apache的模塊目錄下,這樣可以在編譯Apache時能找到它們。
16. cd /usr/local/src/apache_1.3.4
轉到Apache的頂級目錄下。
17. ./configure \
--prefix=/usr/local/apache \
--active-mole=src/moles/php3/libphp3.a
再一次配置Apache,這次告訴Apache要載入PHP模塊。
18. make
編譯Apache源文件。
19. make install
安裝已編譯的文件。
20. mv \
/usr/local/apache/bin/httpd \
/usr/local/apache/bin/httpd-1.3.4
重新命名新創建的httpd可執行文件,這樣就能夠安裝多種版本。
21. ln -s \
/usr/local/apache/bin/httpd-1.3.4 \
/usr/sbin/httpd
建立一個指向新的可執行文件的符號鏈接。
22. httpd -v
證實可以訪問新的可執行文件。該命令的執行結果將顯示版本1.3.4,而且建立日期也應該正確無誤。
23. 編輯/usr/local/apache/conf/http.conf文件,搜索AddType並確認下列行未加註釋。
AddType application/x-httpd-php3 .phtml
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps
24. 接著編輯/usr/local/apache/conf/http.conf文件,搜索DirectoryIndex並將index.php3放在行尾。
25. 創建一個名為/usr/local/local/php3.ini的文件,該文件應包含如下的命令行:
include_path=.:/usr/local/apache/php/
auto_prepend_file=/usr/local/apache/php/prepend.php3
track_vars = on
magic_quotes_gpc = on
sendmail_path /usr/sbin/sendmail -t
26. ln -s \
/usr/local/src/php-3.0.11/doc/manual.html \
/usr/local/src/php-3.0.11/doc/index.html
建立一個符號鏈接,這樣絕大多數Web瀏覽器就會正確地自動顯示PHP文件起始頁。
27. ln -s \
/usr/local/src/php-3.0.11/doc \
/usr/local/apache/htdocs/phpdocs
建立一個符號鏈接,這樣就可以通過http://localhost/phpdocs/, 來訪問PHP文檔。
28. 創建一個叫做/usr/local/apache/htdocs/robots.txt的文件,這樣就可避免搜索引擎為PHPLIB,phpMyAdmin和PHP文件建立索引,新創建的文件應包括如下設置行:
#robots.txt for (hostname)
User-agent *
Disallow: /phpdocs/
Disallow: /php/
Disallow:/phpMyAdmin/

2.7 安裝PHPLIB
在閱讀第15章「處理並發的訪問」之前,應先安裝PHPLIB,可以按照下列步驟進行安裝:
1. 以root用戶或其他任何可以在/usr/local/apache目錄下寫文件的用戶注冊。
2. cd /usr/local/apache/
在開始下載文件之前,進入到Web伺服器的頂級目錄下。
3. 從如下Web網址下載最新版本的文件,注意gz後綴的文件名,以免它的文件名phplib.tar.gz被改動。
http://phplib.shonline.de/
4. tar xv2f phplib.tar.gz
解壓縮PHPLIB模塊。
5. 編輯/usr/local/lib/php3.ini文件,應包括下列設置內容:

include_path=.:/usr/local/apache/phplib-6.1/php
auto_prepend_file = /usr/local/apache/phplib-
6.1/php/prepend.php3
track_vars = on
magic_quotes_gpc = on
sendmail_path /usr/sbin/sendmail -t

6. 建立一個名為poe_sessions的mysql資料庫。我一般使用phpMyAdmin,如果願意,也可以使用SQL命令創建資料庫。
7. cd /usr/local/apache/phplib-6.1/stuff
進入建表目錄下。
8. mysql php_book --user=root --password <
create_database.mysql
創建PHPLIB所需要的資料庫表。
9. 使用以下值在mysql資料庫表中增加一條新記錄:

host: %
password: <-- no password.
select_priv: Yes
insert_priv: Yes
update_priv: Yes
delete_priv: Yes
for users named "kris","user01",and "user02".

注意:也可以使用如下SQL語句:

INSERT INTO
user
(
Host
,User
,Password
,Select_priv
,Insert_priv
,Update_priv
,Delete_priv
)
VALUES (
'%'
, 'kris'
, ''
, 'Y', 'Y', 'Y', 'Y'
)

10. 使用以下值在mysql資料庫的db表中增加一條新記錄:

host: %
db: poe_sessions
select_priv: Yes
insert_priv: Yes
update_priv: Yes
delete_priv: Yes
for users named "kris","user01",and "user03".

注意:也可以使用如下SQL程序。

INSERT INTO
db
(
Host
,Db
,User
,Select_priv
,Insert_priv
,Update_priv
,Delete_priv
)
VALUES (
'%'
, 'poe_sessions '
, 'kris'
, 'Y', 'Y', 'Y', 'Y'
)

11. /usr/local/mysql/bin/mysqladmin -u root -p reload
重新裝載MySQL許可權表。
12. 在php_book資料庫中創建兩個PHPLIB已認證的用戶(user01和user02),可以使用如下SQL語句:

INSERT INTO
auto_user
(
uid
,username
,password
,perms
) VALUES (
''
,'user01'
,'test'
,'admin'
)

INSERT INTO
auth_user
(
uid
,username
,password
,perms
) VALUES (
''
,'user02'
,'test'
,'admin'
)

13. mv\ /use/local/apache/phplib-6.1/pages \
/use/local/apach/htdocs
將演示子目錄置於Web伺服器的根目錄下,這樣就可以用瀏覽器訪問它。
14. 編輯文本文件/usr/local/apache/htdocs/robots.txt,使它包括如下內容:

Disallow: /phplib/

15. 使用Web瀏覽器訪問http://localhost/phplib/。將會看到如圖2.1所示頁面。

Page 29 圖2.1

圖2.1 重新裝載兩次以後出現的PHPLIB演示頁面

2.8 測試Linux環境下的ODBC
對所裝軟體進行基本測試是很重要的,特別是需要手工編輯配置文件時。如下的測試可確保你的MySQL驅動程序運行正常,並且編譯的iODBC庫文件也是正確無誤的。
1. 使用清單2.1所列的內容,建立一個名為/usr/local/etc/odbc.ini的文件。

清單 2.2 /usr/local/etc/odbc.ini- 系統ODBC 配置文件
;
;odbc.ini
;

[ODBC Data Sources]
mysql = mysql

[php_book]
driver = /usr/local/myodbc/lib/libmyodbc.so
host = localhost
database = mysql
user = root

2. cd /usr/local/src/libiodbc-2.50.3/samples
3. ./odbctest
運行ODBC測試程序。
4. DSN=mysql;PWD=password
告訴測試程序要訪問的數據源。
5. select host,user from user
在提示符下執行一個SQL語句,如果有回應,說明iODBC和MySQL已經可以使用了。
現在,在計算機中已經安裝好了ODBC,由於它的安裝步驟不太清晰而且文檔又很少,所以本章中講述了其安裝和測試指令,然而鑒於ODBC主要是一項Microsoft技術,且很少在Linux中用到,所以這里是本書中最後一次有關介紹。
2.9 總結:
本章講述了如何獲取PHP,及在計算機中進行安裝所需要的步驟,編譯了內建PHP的特定版本Apache 伺服器。同時,還安裝了將在第15章「中場四:處理並發訪問」中用所到的PHPLIB。

『陸』 php學習有什麼要求

HP 學習目錄

├─PHP視頻教程 1 LAMP網站構建

│ ├─PHP教程 1.1.1 新版視頻形式介紹
│ ├─PHP教程 1.1.2 BS結構軟體類型介紹
│ ├─PHP教程 1.1.3 現在是Web2.0的時代
│ ├─PHP教程 1.1.4 Web開發標准
│ ├─PHP教程 1.1.5 認識腳本語言
│ ├─PHP教程 1.2.1 動態網站開發所需的web構件1
│ ├─PHP教程 1.2.2 動態網站開發所需的web構件2
│ ├─PHP教程 1.2.3 動態網站開發所需的web構件3
│ ├─PHP教程 1.3.1 Web的工作原理
│ ├─PHP教程 1.3.2 Web工作原理之url解析
│ ├─PHP教程 1.3.3 Web工作原理之動態網站解析
│ ├─PHP教程 1.4.1 介紹了三種主流的Web應用平台
│ ├─PHP教程 1.4.2 主要三種Web平台進行對比
│ └─PHP教程 1.5.1 介紹LAMP網站開發組合概述及發展趨勢

├─PHP視頻教程 2 從搭建你的PHP開發環境開始

│ ├─PHP教程 2.1.1 PHP的幾種運行環境
│ ├─PHP教程 2.2.1 安裝PHP的運行環境
│ └─PHP教程 2.2.2 PHP運行環境的介紹

├─PHP視頻教程 3 PHP基本語法

│ ├─PHP教程 3.1.1 PHP的功能介紹
│ ├─PHP教程 3.2.1 第一個PHP程序
│ ├─PHP教程 3.3.1 PHP語言標記及指令分隔符「分號」
│ ├─PHP教程 3.3.2 PHP程序注釋及空白的使用
│ ├─PHP教程 3.4.1 PHP變數在計算機內存中的存儲方式
│ ├─PHP教程 3.4.2 PHP變數的聲明及變數的命名
│ ├─PHP教程 3.4.3 PHP可變變數
│ ├─PHP教程 3.4.4 PHP引用變數1
│ ├─PHP教程 3.4.5 PHP引用變數2
│ ├─PHP教程 3.5.1 PHP變數類型的介紹
│ ├─PHP教程 3.5.2 PHP布爾類型(boolean)
│ ├─PHP教程 3.5.3 PHP整型(integer)和浮點型(float或double)
│ ├─PHP教程 3.5.4 PHP字元串的聲明及定義
│ ├─PHP教程 3.5.5 PHP字元串中單雙引號的區別
│ ├─PHP教程 3.5.6 PHP字元串的定界符聲明
│ ├─PHP教程 3.5.7 PHP變數的其它數據類型
│ ├─PHP教程 3.6.1 PHP數據類型轉換及強制類型轉換
│ ├─PHP教程 3.6.2 PHP數據類型轉換之自動類型轉換
│ ├─PHP教程 3.7.1 PHP常量的介紹
│ ├─PHP教程 3.7.2 PHP常量的聲明和使用
│ ├─PHP教程 3.7.3 預定義常量
│ ├─PHP教程 3.8.1 PHP中的運算符號有哪些
│ ├─PHP教程 3.8.2 PHP算術運算符
│ ├─PHP教程 3.8.3 PHP自加自減運算
│ ├─PHP教程 3.8.4 PHP自加自減運算需要注意的地方
│ ├─PHP教程 3.8.5 PHP賦值運算符
│ ├─PHP教程 3.8.6 PHP比較運算符
│ ├─PHP教程 3.8.7 PHP邏輯運算符
│ ├─PHP教程 3.8.8 PHP邏輯運算符的特性(短路)
│ ├─PHP教程 3.8.9 PHP中的位運算符1
│ ├─PHP教程 3.8.10 PHP中的位運算符2
│ ├─PHP教程 3.8.11 PHP中的位運算符3
│ ├─PHP教程 3.8.12 PHP其他運算符
│ └─PHP教程 3.8.13 PHP運算符的優先順序和表達式

├─PHP視頻教程 4 PHP的流程式控制制結構

│ ├─PHP教程 4.1.1 PHP流程式控制制概述
│ ├─PHP教程 4.1.2 PHP分支結構
│ ├─PHP教程 4.2.1 PHP單一條件分支結構和雙向條件分支結構
│ ├─PHP教程 4.2.2 58PHP多向條件分支結構(elseif子句)
│ ├─PHP教程 4.2.3 PHP多向條件分支(switch語句)1
│ ├─PHP教程 4.2.4 PHP多向條件分支(switch語句)2
│ ├─PHP教程 4.2.5 PHP巢狀分支結構
│ ├─PHP教程 4.2.6 PHP實例(簡單計算器)1
│ ├─PHP教程 4.2.7 PHP實例(簡單計算器)2
│ ├─PHP教程 4.2.8 PHP實例(簡單計算器)3
│ ├─PHP教程 4.2.9 PHP實例(簡單計算器)4
│ ├─PHP教程 4.3.1 PHP循環結構的介紹
│ ├─PHP教程 4.3.2 PHP循環結構while語句
│ ├─PHP教程 4.3.3 PHP循環結構while的應用
│ ├─PHP教程 4.3.4 PHP循環結構do-while語句
│ ├─PHP教程 4.3.5 PHP循環結構for語句
│ ├─PHP教程 4.3.6 PHP循環結構for語句的應用
│ ├─PHP教程 4.3.7 特殊流程式控制制語句
│ └─PHP教程 4.3.8 PHP流程式控制制語句goto

├─PHP視頻教程 5 PHP的函數應用

│ ├─PHP教程 5.1.1 PHP函數的定義和應用
│ ├─PHP教程 5.2.1 PHP自定義函數的語法格式
│ ├─PHP教程 5.2.2 PHP自定義函數中的參數
│ ├─PHP教程 5.2.3 PHP自定義函數中的返回值(return)
│ ├─PHP教程 5.3.1 PHP局部變數
│ ├─PHP教程 5.3.2 PHP全局變數
│ ├─PHP教程 5.3.3 PHP靜態變數
│ ├─PHP教程 5.4.1 PHP常規參數的函數
│ ├─PHP教程 5.4.2 PHP引用參數的函數
│ ├─PHP教程 5.4.3 PHP默認參數的函數
│ ├─PHP教程 5.4.4 PHP可變個數參數的函數
│ ├─PHP教程 5.4.5 PHP變數函數
│ ├─PHP教程 5.4.6 PHP回調函數
│ ├─PHP教程 5.4.7 PHP製作回調函數1
│ ├─PHP教程 5.4.8 PHP製作回調函數2
│ ├─PHP教程 5.4.9 PHP製作回調函數3
│ ├─PHP教程 5.4.10 PHP系統函數
│ ├─PHP教程 5.5.1 PHP遞歸函數
│ ├─PHP教程 5.6.1 PHP載入自定義的函數庫
│ ├─PHP教程 5.7.1 PHP5.3的新特性匿名函數
│ ├─PHP教程 5.8.1 PHP閉包函數(closures)的概念
│ └─PHP教程 5.8.2 PHP閉包函數(closures)的特性

├─PHP視頻教程 6 PHP中的數組與數據結構

│ ├─PHP教程 6.1.1 PHP數組的概述
│ ├─PHP教程 6.1.2 PHP數組的基本概念及分類
│ ├─PHP教程 6.2.1 PHP數組聲明的特性
│ ├─PHP教程 6.2.2 PHP索引和關聯數組及需要注意的細節
│ ├─PHP教程 6.2.3 PHP使用array()聲明數組
│ ├─PHP教程 6.2.4 PHP刪除數組中的值應用實例(猴子選大王)
│ ├─PHP教程 6.2.5 PHP二維數組
│ ├─PHP教程 6.2.6 PHP多維數組
│ ├─PHP教程 6.3.1 使用for循環遍歷數組
│ ├─PHP教程 6.3.2 使用foreach語句遍歷數組
│ ├─PHP教程 6.3.3 使用foreach語句遍歷數組的應用
│ ├─PHP教程 6.3.4 list()函數的語法結構
│ ├─PHP教程 6.3.5 each()函數的特性
│ ├─PHP教程 6.3.6 使用list( )、each( )和while循環遍歷數組
│ ├─PHP教程 6.3.7 使用數組的內部指針控制函數遍歷數組
│ ├─PHP教程 6.4.1 PHP超全局數組(預定義變數)概述
│ ├─PHP教程 6.4.2 伺服器變數$_SERVER和環境變數$_ENV
│ ├─PHP教程 6.4.3 PHP超全局數組介紹1
│ ├─PHP教程 6.4.4 PHP超全局數組介紹2
│ ├─PHP教程 6.5.1 PHP常用數組函數的分類
│ ├─PHP教程 6.5.2 PHP數組中和鍵值搜索相關的函數1
│ ├─PHP教程 6.5.3 PHP數組中和鍵值搜索相關的函數2
│ ├─PHP教程 6.5.4 PHP數組中和鍵值搜索相關的函數3
│ ├─PHP教程 6.5.5 PHP數組中統計數組元素的個數與唯一性的函數
│ ├─PHP教程 6.5.6 PHP使用回調函數處理數組的函數array_filter()
│ ├─PHP教程 6.5.7 PHP使用回調函數處理數組的函數array_walk()
│ ├─PHP教程 6.5.8 PHP使用回調函數處理數組的函數array_map()
│ ├─PHP教程 6.5.9 PHP中的冒泡(起泡)排序演算法
│ ├─PHP教程 6.5.10 PHP二分法進行快速排序的原理
│ ├─PHP教程 6.5.11 使用PHP程序進一步理解快速排序法
│ ├─PHP教程 6.5.12 PHP數組的排序函數1
│ ├─PHP教程 6.5.13 PHP數組的排序函數2
│ ├─PHP教程 6.5.14 PHP數組的排序函數3
│ ├─PHP教程 6.5.15 PHP多維數組的排序函數
│ ├─PHP教程 6.5.16 PHP拆分、合並、分解與結合數組函數1
│ ├─PHP教程 6.5.17 PHP拆分、合並、分解與結合數組函數2
│ ├─PHP教程 6.5.18 PHP數組與數據結構的函數
│ └─PHP教程 6.5.19 PHP其他有用的數組處理函數

─PHP視頻教程 7 PHP面向對象的程序設計

├─PHP教程 7.1.1 PHP面向對象之面向過程詳解
├─PHP教程 7.1.2 PHP面向對象之面向對象編程思想詳解
├─PHP教程 7.1.3 PHP面向對象的重要優勢及案例分析
├─PHP教程 7.1.4 PHP類和對象之間的關系
├─PHP教程 7.2.1 PHP如何抽象一個類
├─PHP教程 7.2.2 PHP類中的成員屬性和成員方法
├─PHP教程 7.3.1 PHP實例化對象
├─PHP教程 7.3.2 PHP畫圖理解對象在內存中的形式
├─PHP教程 7.3.3 特殊的對象引用」$this」
├─PHP教程 7.3.4 PHP構造方法
├─PHP教程 7.3.5 PHP析構方法
├─PHP教程 7.4.1 復習前面的面向對象知識
├─PHP教程 7.5.1 PHP面向對象封裝性1
├─PHP教程 7.5.2 PHP面向對象封裝性2](http://www.jianshu.com/p/2713d9252da4)
├─PHP教程 7.5.3 PHP面向對象封裝性之魔術方法1
├─PHP教程 7.5.4 PHP面向對象封裝性之魔術方法2
├─PHP教程 7.6.1 PHP類的繼承
├─PHP教程 7.6.2 PHP類的訪問類型控制
├─PHP教程 7.6.3 PHP繼承中的重載(覆蓋)
├─PHP教程 7.7.1 PHP常見的關鍵字
├─PHP教程 7.7.2 static關鍵字的使用1
├─PHP教程 7.7.3 static關鍵字的使用2
├─PHP教程 7.7.4 單態(單例、單件)設計模式
├─PHP教程 7.7.5 const關鍵字
├─PHP教程 7.7.6 魔術方法__toString()
├─PHP教程 7.7.7 魔術方法__clone()
├─PHP教程 7.7.8 魔術方法__call()
├─PHP教程 7.7.9 對象串列化(序列化)1
├─PHP教程 7.7.10 對象串列化(序列化)2
├─PHP教程 7.7.11 PHP數組的串列化(JSON格式)
├─PHP教程 7.7.12 魔術方法__set_state()
├─PHP教程 7.7.13 PHP 5.3以後新增的魔術方法
├─PHP教程 7.7.14 自動載入類__autoload()
├─PHP教程 7.8.1 PHP抽象方法和抽象類1
├─PHP教程 7.8.2 PHP抽象方法和抽象類2
├─PHP教程 7.8.3 PHP面向對象介面技術
├─PHP教程 7.8.4 PHP介面應用的一些細節
├─PHP教程 7.8.5 PHP面象對象的特性多態
├─PHP教程 7.9.1 PHP多態的應用實例
├─PHP教程 7.10.1 PHP圖形計算器需求分析
├─PHP教程 7.10.2 PHP圖形計算器功能設計
├─PHP教程 7.10.3 PHP圖形計算器主程序的實現
├─PHP教程 7.10.4 PHP圖形計算器主程序的步驟及代碼
├─PHP教程 7.10.5 PHP圖形計算器主程序完成檢驗
├─PHP教程 7.11.1 與類有關的魔術常量和函數
├─PHP教程 7.12.1 PHP命名空間的概述
├─PHP教程 7.12.2 PHP定義子命名空間
├─PHP教程 7.12.3 PHP在同一文件中定義多個命名空間
├─PHP教程 7.12.4 PHP命名空間和動態語言特徵
└─PHP教程 7.12.5 PHP使用命名空間:別名導入

├─PHP視頻教程 8 PHP字元串處理

│ ├─PHP教程 8.1.1 字元串的處理方式1
│ ├─PHP教程 8.1.2 字元串的處理方式2
│ ├─PHP教程 8.2.1 常用的字元串輸出函數1
│ ├─PHP教程 8.2.2 常用的字元串輸出函數2
│ ├─PHP教程 8.3.1 去除空格和字元串填補及大小寫轉換函數
│ ├─PHP教程 8.3.2 和HTML標簽相關的字元串格式化函數
│ ├─PHP教程 8.3.3 字元串格式化函數
│ ├─PHP教程 8.4.1 字元串比較函數
│ ├─PHP教程 8.5.1 字元串面試題1
│ ├─PHP教程 8.5.2 字元串面試題2
│ └─PHP教程 8.5.3 字元串面試題3

├─PHP視頻教程 9 PHP正則表達式

│ ├─PHP教程 9.1.1 選擇PHP正則表達式的處理函數庫
│ ├─PHP教程 9.2.1 正則表達式語法介紹1
│ ├─PHP教程 9.2.2 正則表達式語法介紹2
│ ├─PHP教程 9.2.3 正則表達式中的原子1
│ ├─PHP教程 9.2.4 正則表達式中的原子2
│ ├─PHP教程 9.2.5 正則表達式中的元字元1
│ ├─PHP教程 9.2.6 正則表達式中的元字元2
│ ├─PHP教程 9.2.7 正則表達式中元字元中的小括弧
│ ├─PHP教程 9.2.8 模式修正符(單個字元)1
│ ├─PHP教程 9.2.9 模式修正符(單個字元)2
│ ├─PHP教程 9.3.1 字元串的匹配與查找之(strstr、strpos、substr)
│ ├─PHP教程 9.3.2 字元串的匹配與查找之(preg_match)
│ ├─PHP教程 9.3.3 字元串的匹配與查找之(preg_match_all與preg_grep)
│ ├─PHP教程 9.3.4 字元串的分割與連接(explode、implode join、preg_split)
│ ├─PHP教程 9.3.5 字元串的替換(str_replace)
│ ├─PHP教程 9.3.6 字元串的替換(preg_replace)1
│ ├─PHP教程 9.3.7 字元串的替換(preg_replace)2
│ ├─PHP教程 9.3.8 字元串中正則的其它函數
│ ├─PHP教程 9.2.10 如何自己編寫正則表達式(url)
│ └─PHP教程 9.2.11 編寫email正則表達式

├─PHP視頻教程 10 PHP的錯誤和異常處理

│ ├─PHP教程 10.1.1 錯誤報告及設置級別
│ ├─PHP教程 10.1.2 自定義PHP的錯誤報告處理方式
│ ├─PHP教程 10.1.3 設置錯誤日誌
│ ├─PHP教程 10.2.1 PHP異常處理1
│ ├─PHP教程 10.2.2 PHP異常處理2
│ ├─PHP教程 10.2.3 自定義異常類
│ └─PHP教程 10.2.4 捕獲多個異常

├─PHP視頻教程 11 PHP日期時間

│ ├─PHP教程 11.1.1 PHP中應用日期和時間1
│ ├─PHP教程 11.1.2 PHP中應用日期和時間2
│ └─PHP教程 11.1.3 PHP日歷核心程序編寫

├─PHP視頻教程 12 PHP文件系統處理

│ ├─PHP教程 12.1.1 文件系統概述
│ ├─PHP教程 12.1.2 文件的屬性
│ ├─PHP教程 12.2.1 解析目錄路徑
│ ├─PHP教程 12.2.2 遍歷目錄
│ ├─PHP教程 12.2.3 統計目錄中的個數和大小
│ ├─PHP教程 12.2.4 建立與刪除目錄
│ ├─PHP教程 12.2.5 復制、移動目錄
│ ├─PHP教程 12.3.1 文件的一些基本操作函數
│ ├─PHP教程 12.3.2 文件的打開與關閉
│ ├─PHP教程 12.3.3 文件的內容操作
│ ├─PHP教程 12.3.4 簡單留言版
│ ├─PHP教程 12.3.5 文件的鎖定機制
│ ├─PHP教程 12.4.1 文件上傳的設置
│ ├─PHP教程 12.4.2 文件上傳的處理
│ ├─PHP教程 12.4.3 處理多個文件上傳
│ ├─PHP教程 12.4.4 文件上傳類
│ └─PHP教程 12.4.5 文件下載

─PHP視頻教程 13 GD庫

│ ├─PHP教程 13.1.1 PHP中GD庫的使用
│ ├─PHP教程 13.1.2 使用GD庫畫圖
│ ├─PHP教程 13.1.3 繪制各種圖形
│ ├─PHP教程 13.1.4 畫時鍾
│ ├─PHP教程 13.2.1 設計驗證碼類
│ ├─PHP教程 13.2.2 驗證碼類的編寫1
│ ├─PHP教程 13.2.3 驗證碼類的編寫2
│ ├─PHP教程 13.2.4 驗證碼類完善
│ ├─PHP教程 13.3.1 圖片背景管理
│ ├─PHP教程 13.3.2 圖片的縮放和剪切
│ ├─PHP教程 13.3.3 添加圖片水印
│ ├─PHP教程 13.3.4 圖片的旋轉和翻轉
│ └─PHP教程 13.3.5 圖像處理類

├─PHP視頻教程 14 資料庫

│ ├─PHP教程 14.1.1 復習資料庫
│ ├─PHP教程 14.1.2 phpMyAdmin的使用
│ ├─PHP教程 14.1.3 php訪問MySQL
│ ├─PHP教程 14.1.4 在PHP腳本中操作MySQL資料庫1
│ ├─PHP教程 14.1.5 在PHP腳本中操作MySQL資料庫2
│ ├─PHP教程 14.1.6 在PHP腳本中操作MySQL資料庫3
│ ├─PHP教程 14.1.7 在PHP腳本中操作MySQL資料庫4
│ ├─PHP教程 14.2.1 分頁需求分析
│ ├─PHP教程 14.2.2 分頁類中分頁的編寫
│ ├─PHP教程 14.2.3 分頁類中列表頁的編寫
│ ├─PHP教程 14.2.4 分頁類的優化
│ ├─PHP教程 14.2.5 《細說PHP》分頁類的使用
│ ├─PHP教程 14.3.1 圖書管理需求分析
│ ├─PHP教程 14.3.2 添加圖書
│ ├─PHP教程 14.3.3 圖書列表
│ ├─PHP教程 14.3.4 修改圖書
│ ├─PHP教程 14.3.5 刪除圖書
│ ├─PHP教程 14.3.6 上傳圖書封面
│ ├─PHP教程 14.3.7 修改圖書封面
│ ├─PHP教程 14.3.8 圖書列表分頁
│ └─PHP教程 14.3.9 多搜索加分頁

├─PHP視頻教程 15 PDO

│ ├─PHP教程 15.1.1 資料庫抽象層PDO
│ ├─PHP教程 15.1.2 創建PDO對象
│ ├─PHP教程 15.1.3 PDO與連接有關的選項
│ ├─PHP教程 15.1.4 PDO的錯誤處理模式
│ ├─PHP教程 15.1.5 使用PDO執行SQL語句
│ ├─PHP教程 15.1.6 PDO事務處理
│ ├─PHP教程 15.2.1 PDO對預處理語句的支持
│ ├─PHP教程 15.2.2 使用PDO准備語句並執行語句1
│ ├─PHP教程 15.2.3 使用PDO准備語句並執行語句2
│ ├─PHP教程 15.2.4 PDO的預處理查詢1
│ ├─PHP教程 15.2.5 PDO的預處理查詢2
│ └─PHP教程 15.2.6 用PDO存取大數據對象

├─PHP視頻教程 16 memcache管理與應用

│ ├─PHP教程 16.1.1 memcache應用說明
│ ├─PHP教程 16.1.2 memcache工作原理
│ ├─PHP教程 16.1.3 memcache的安裝
│ ├─PHP教程 16.1.4 Memcache的常用命令操作
│ ├─PHP教程 16.1.5 php的memcache功能擴展模塊安裝
│ ├─PHP教程 16.1.6 PHP中操作memcache
│ ├─PHP教程 16.1.7 在PHP中設置分布式memcache存取1
│ └─PHP教程 16.1.8 在PHP中設置分布式memcache存取2

─PHP視頻教程 17 PHP會話控制

├─PHP教程 17.1.1 http協議和web本質1
├─PHP教程 17.1.2 http協議和web本質2
├─PHP教程 17.1.3 http協議和web本質3
├─PHP教程 17.2.1 會話控制概述
├─PHP教程 17.3.1 會話控制之Cookie概述
├─PHP教程 17.3.2 Cookie的操作
├─PHP教程 17.3.3 Cookie的應用1
├─PHP教程 17.3.4 Cookie的應用2
├─PHP教程 17.4.1 會話控制session的工作機制
├─PHP教程 17.4.2 session的應用
├─PHP教程 17.4.3 session的配置選項
├─PHP教程 17.4.4 sessoion自動垃圾回收機制
├─PHP教程 17.4.5 基於url傳遞session的id
├─PHP教程 17.4.6 郵件系統實例1
├─PHP教程 17.4.7 郵件系統實例2
├─PHP教程 17.5.1 自定義session的存儲機制
├─PHP教程 17.5.2 如何自定義session的處理方式1
├─PHP教程 17.5.3 如何自定義session的處理方式2
├─PHP教程 17.5.4 自定義session類
├─PHP教程 17.5.5 使用資料庫來存儲session信息1
├─PHP教程 17.5.6 使用資料庫來存儲session信息2
├─PHP教程 17.5.7 使用資料庫來存儲session信息3
└─PHP教程 17.5.8 使用memcache來存儲session

PHP視頻教程 18 PHP的模板引擎Smarty

├─PHP教程 18.1.1 什麼是模板引擎
├─PHP教程 18.2.1 自定義模板引擎類1
├─PHP教程 18.2.2 自定義模板引擎類2
├─PHP教程 18.2.3 使用自定義的模板引擎
├─PHP教程 18.3.1 選擇Smarty模板引擎
├─PHP教程 18.3.2 Smarty的安裝初使化示例1
├─PHP教程 18.3.3 Smarty的安裝初使化示例2
├─PHP教程 18.3.4 需要學習Smarty的哪兒些內容
├─PHP教程 18.4.1 模板中的變數應用
├─PHP教程 18.4.2 從配置文件讀取變數
├─PHP教程 18.4.3 在模板中使用保留變數
├─PHP教程 18.5.1 變數調節(修改)器
├─PHP教程 18.5.2 變數調節(修改)器和應用
├─PHP教程 18.5.3 使用registerPlugin來注冊變數調節器
├─PHP教程 18.5.4 使用插件來注冊變數調節器
├─PHP教程 18.5.5 smarty中的函數
├─PHP教程 18.5.6 smarty中的內置函數
├─PHP教程 18.6.1 smarty中自定義函數
├─PHP教程 18.6.2 smarty中自定義函數插件實例
├─PHP教程 18.7.1 smarty中內置函數的使用
├─PHP教程 18.7.2 smarty變數聲明
├─PHP教程 18.7.3 smarty流程式控制制
├─PHP教程 18.7.4 smarty中for、while循環
├─PHP教程 18.7.5 smarty中{function}標簽
├─PHP教程 18.7.6 smarty2中的foreach
├─PHP教程 18.7.7 smarty3中的foreach
├─PHP教程 18.7.8 smarty中的section
├─PHP教程 18.8.1 smarty模板繼承
├─PHP教程 18.9.1 頁面靜態化加分頁原理
└─PHP教程 18.9.2 在smarty中控制緩存

閱讀全文

與php第一個程序相關的資料

熱點內容
用紙做解壓玩具不用澆水 瀏覽:582
谷輪壓縮機序列號 瀏覽:734
牛頓插值法編程 瀏覽:364
php多用戶留言系統 瀏覽:727
安卓和蘋果如何切換流量 瀏覽:703
怎麼知道dns伺服器是多少 瀏覽:976
5995用什麼簡便演算法脫式計算 瀏覽:918
電腦上如何上小米雲伺服器地址 瀏覽:921
手機資料解壓密碼 瀏覽:444
44引腳貼片單片機有哪些 瀏覽:692
阿里程序員腦圖 瀏覽:189
廣東編程貓學習班 瀏覽:708
上海數控編程培訓學校 瀏覽:313
怎麼下載我的解壓神器 瀏覽:634
lib文件無用代碼會編譯嗎 瀏覽:28
我的世界嗨皮咳嗽伺服器怎麼下 瀏覽:1002
mvn命令順序 瀏覽:978
車貸還完多少時間解壓 瀏覽:965
java頁面開發 瀏覽:820
學編程的小發明 瀏覽:25