導航:首頁 > 編程語言 > PHP網路編程自學手冊

PHP網路編程自學手冊

發布時間:2023-05-23 14:56:55

❶ 如何從零學習php

最好先學一下HTML,再學PHP,比較容易入門。
我剛開始學PHP時,是買一本叫《PHP網路編程自學手冊》,大概自學了兩個月,就會了。這本書講得很詳細。
學PHP,還要安裝PHP環境,可以下載PHP綠色環境包,調試程序時,才知道錯在哪,或運行結果。還有,推薦一個開發工具phpDesigner,這個我自己也在用,是外國的軟體,不過有中文界面,很好用。

安裝包環境下載:http://www.jzwm.com/group/view/id-10917

❷ 如何自己在網上自學php

PHP自學之路——小白請看!

1.基礎部分:

HTML+CSS+DIV

學習方法:看手冊或看書,跟著寫代碼,這個階段不建議大家看視頻教程,因為這是最基礎的東西,不是很難掌握,看視頻確實有點浪費時間。學習周期的話,大概在10天左右,這10天指的是你熟練掌握了HTML+CSS+DIV,接下來該進入實戰了。

在網上找幾個網頁,自己做做,不用太多,但起碼得5-8個,而且兼容性要處理好,不用很高,起碼得照顧到IE8。全做做完之後,至少15天沒了。

好吧,休息兩天。回顧並總結一下自己學到的東西,同時看看javascript相關資料,對javascript有一個感性的認知。

嗯,不出意料的話,第一個月就這樣過去了。

2.jQuery部分:

說好的,javascript呢?你沒看錯,就是jQuery!

經濟充裕的話,買本書,不行的話就看手冊,依然跟著寫代碼。將jQuery融入到你前面做的網頁中去。試著寫一些簡單的特效,做點交互性的東西。如果寫不出,可以去網上下點簡單的源罩鎮碼,在看懂的前提下多練幾遍,並試著改點東西。

這樣一來一去,半個月就沒了吧?

確實,在沒有javascript的基礎下去學習jQuery是件不靠譜的事兒,不過記住一個目的:為了找工作。之所以讓大家直接學習jQuery也是為了能盡快做東西出來,主要精力放在PHP。

3.PHP部分:

終於迎來了咱們的主角。不過對於零編程經驗的童鞋來說,這個階段夠你喝一壺了。你會遇到很多很多的問題,而你能做的只有3件事:1.堅持,2寫代碼,3堅持寫代碼。冒著打廣告的嫌疑,在大家推薦大家看韓順平老師的視頻吧。如果看書的吧,沒什麼太好的書推薦給大家,我當時看的書籍是

《php和mysqlweb開發》第四版,整體感覺還可以,大家視自己情況而定。

PHP基礎部分掌握的差不都了?這應該是一兩個月之後的事情了。此時你會感覺到還缺點什麼,數據?應該學一下MySql資料庫了。

4.MySql部分:

如果大家前面看了韓順平老師的視頻,這沒雹時你的電腦上應該已經安裝好了MySql資料庫。如果沒有,自己裝一個。創建資料庫--創建表--增刪改查--索引--聯合查詢--主外鍵。。。這個階段不建議大家用phpmyadmin,老老實實地在黑窗口裡輸命令吧,這是你的基本功!

基礎的都學完之後,恭喜,你具備了找工作的基本要求。

5.回過頭來,復習前面所學的知識。

復習過後,開始做項目吧。給自己1~2月的獨立開發項目時間,等你找工作時就會發現:把時間花在項目上面是多麼劃算的一件事情枯悶帆!

嘗試著先從簡單的小項目做起,企業展示網站,BBS,OA系統里的小模塊,考勤系統什麼的,盡量做到每行代碼都出自你手。在項目中學著去理解面向對象,MVC,修改並完善自己的代碼,學會代碼重用。在一天天中你會感覺到成長與蛻變,享受這個過程。

6.報個班學習也可以。

❸ 如何使用PHP編程說明

PHP是一門高效的網路編程語言 由於它具有編寫靈活 運行快速等優點 迅速成為Web程序員的首選語言 前不久的一份權威調查表明 現在已經有 %的網站使用PHP作為主要的伺服器端編程語言

但是 要成為一名PHP編程高手卻並不容易 並不像很多人想像的那樣 只要能夠飛快地編寫幾條簡單的代碼去解決一個復雜的問題就是PHP編程高手了 真正的PHP高手還需要考慮更多的其它問題 以下三條准則是一名成熟的PHP程序員在編程中應該首先遵循的准則

懶惰是金

編寫漂亮的代碼

追求程序的速度 而不是編程的速度

一 懶惰是金

做一個懶惰的程序員嗎?這個想法太奇怪了!因為這個世界上最忙碌的人可能就是計算機程序員了 但正是因為程序員太忙了 所以才應該在編程時學會偷懶

對於一個程序員來說 懶惰的方法有兩種 其一 大膽使用現成的別人的程序代碼 把這些代碼融入到你自己的程序或者項目中去 其二是編寫一些有用的代碼建立一個函數庫 在將來編寫程序時可以順手拈來 省去了許多重復的勞動 自然就可以懶惰一點了

這兩種偷懶的方法都非常適合PHP程序員了

首先 PHP是在自由開放的環境中誕生和成長的一門語言 在世界各地 有成千上萬的程序員 他們一直在為PHP的完美而不斷奮斗 他們也願意和別人分享自己的聰明才智和自己編寫的代碼 你每天都可以從一些PHP網站 郵件列表 新聞組發現大量的優秀的程序代碼 這樣說 我並不是鼓勵你整天等著讓別人為你編寫代碼 但是你可以 站在偉人的肩膀上 充分發揚 拿來主義 聰明地應用別人的程序代碼可以節省你大量時間 其次 在PHP中 你可以方便地建立自己的函數庫 這樣可以在你以後編寫程序時省去很多麻煩

下面筆者為大家介紹幾個通用的函數 這些函數有的來自網上的一些開放源代碼的項目 有的精選自郵件列表 如果你能把它們加入到你自己的函數庫中 遲早你將會發現自己受益無窮

通用資料庫處理函數

和其它的CGI函數相比 PHP的優點之一是具有很強大的資料庫處理能力 但是 在PHP中 對於不同的資料庫都使用一些特定的函數來專門處理 缺少通用的資料庫處理函數 這大大降低了程序代碼的可移植性 這也為初學編程的朋友帶來了很多不便

在網上 許多程序員都通過封裝類解決了這個問題 他們編寫了統一的函數用來處理任何流行的資料庫——不管是在Linux世界深受歡迎的mysql_query($Query_String $this->Link_ID);ss_timing_stop();ss_log(INFO ss_timing_current() Secs - $Query_String);$this->Row = ;$this->Errno = mysql_errno();$this->Error = mysql_error();if ($halt_on_error && !$this->Query_ID) {$this->halt( Invalid SQL: $Query_String);}return $this->Query_ID; }

二 編寫漂亮的代碼

將後台程序與前端程序分開

在編寫PHP程序時 有些代碼是用來處理一些事務 例如操作資料庫 進行數學運算等 而另外的一些代碼則只是事務處理的結果顯示出來 例如一些使用echo 語句將結果以HTML的格式顯示在Web瀏覽器上的PHP代碼以及那些直接嵌入PHP程序的HTML代碼 首先我們應該清晰地區分這兩種代碼 把前者稱為後台程序 把後者稱為前端程序

因為PHP是一種嵌入式編程語言 也就是說 所有的PHP代碼都可以嵌入到HTML代碼之中 這為程序的編寫帶來了許多便利之處 但是 物極必反 如果在一段較長的程序中將PHP代碼和HTML代碼混合編寫 這將使程序雜亂無章 不利於程序的維護和閱讀 所以我們需要盡可能地將這些程序中混雜於HTML代碼中的PHP代碼移植出來 在專門的文件中將這些代碼封裝成函數 然後在HTML代碼中使用 include語句來包含這些文件 在適當的位置調用這些函數即可

這種做法一方面使HTML代碼和PHP代碼都簡單易讀 另一方面因為HTML代碼需要不斷更新 而這種分離的方法可以確保後台程序不會被破壞 同前端程序不同 後台程序更多追求的是穩定 結構化 極少更改 所以應該認真地設計和管理 其實 在設計台程序時 投入大量時間是值得的 現在栽樹 以後乘涼 在以後的設計工作中將可以輕松地使用現在編寫的後台程序

靈活使用包含文件

正如前面所說的那樣 後台程序應當安排在一系列的包含文件中 包含文件可以通過include語句在需要時動態裝入 也可以在php ini文件中通過使用auto_prepend_file指令預先自動裝入 如果使用後一種方法的話 雖然取得了一勞永逸的好處 但是也有一些缺點值得我們注意 下面的一段代碼向我們展示了解析一個龐大的包含文件需要一定的時間

require(timing inc); ss_timing_start(); include(test inc); ss_timing_stop(); echo ss_timing_current() ?>

在上面的代碼中 test inc是一個 行的包含文件 運行的結果顯示 解析這個包含文件花費了 秒鍾 對於一個大型網站來說 這個速度並不是可以忽略不記的

使用包含文件的另外一個缺點是 如果一個文件中的一個語句發生錯誤 將會使整個網站的PHP程序都無法運行 所以使用起來也及其小心

其實 對包含文件稍做處理 即可以使包含文件只在需要時進行解析 下面的代碼使abc inc文件只在程序需要時才作解析

if ( defined( __LIBA_INC) ) return; define( __LIBA_INC ); /* * 代碼 */ ?>

使用面向對象的編程方法

PHP 也是一種面向對象的語言 面向對象的編程方法是優秀的程序員們非常推崇的一種軟體設計方法 在PHP編程中可以充分發揮面向對象語言的優勢 對編程中的對象進行封裝 在前面的代碼中 我們使用了面向對象的方法 例如在管理資料庫時 我們將query()函數封裝進資料庫類中 這極大地方便了代碼的管理 增加了程序的可讀性

三 追求程序速度 而不是編程的速度

在網站建設中 程序運行速度和網頁下載速度都是關系成敗的重要因素 作為一名Web程序員 應該更加註意代碼的運行速度 下面介紹的幾種方法都在不同程度上提高了代碼的運行速度

使用內嵌的HTML代碼 而不是PHP的echo語句

因為PHP是一門嵌入式Web編程語言 可以將HTML代碼和PHP代碼相互嵌入 但是很多程序員擔心在HTML代碼中過多的使用 嵌入PHP代碼會多次調用PHP解釋器 從而降低了PHP代碼的運行速度 所以寧願使用PHP的echo語句來輸出HTML代碼 而不直接使用HTML代碼 但事實卻恰恰相反 每一個PHP頁面只調用一次PHP解釋器來解釋所有的PHP代碼 所以 只在需要時才嵌入PHP代碼 而大多數的時候直接使用HTML代碼輸入結果 不但不會降低程序的運行速度 而且因為減少了對echo語句的解析 往往可以提高代碼的運行速度

下面的一段代碼證明了我們的結論 在這段代碼中 我們使用了前面介紹的時間測試函數

使用str-replace而不是ereg-replace 習慣使用Perl進行編程的程序員更加願意使用ereg_replace完成字元串替換工作 因為在PHP中ereg_replace的用法和Perl中模式匹配的用法相近 但是 下面的這段代碼證明 使用str_replace 代替 ereg_replace將可以大大提高代碼的運行速度

測試str_replace和ereg_replace的運行速度

//這段代碼測試str_replace的運行速度 emphasis; ?> for ($i= ; $i< ; $i++) {str_replace(i> b> $string) } ?>

//這段代碼測試ereg_replace的運行速度 for ($i= ; $i< ; $i++) {ereg_replace(<([/]*)i> < b> $string) } ?> //列印結果

結論

使用str_replace的時間 - 使用ereg_pattern的時間 -

運行上面的代碼 得到的結果是

使用str_replace的時間 - 使用ereg_pattern的時間 -

從運行的結果我們可以看出使用str_replace替代ereg_replace作為字元串替換函數 極大地提高了代碼的運行速度

注意字元串的引用

PHP 和其它很多編程語言一樣 可以使用雙引號( )來引用字元串 也可以使用單引號() 但是在PHP中 如果使用雙引號來引用字元串 那麼PHP解析器將首先分析字元串中有沒有對變數的引用 有變數的話 將對變數進行替換 如果是單引號 則沒有如此復雜——直接將單引號包含起來的所有字元串直接顯示出來 顯然 在PHP編程中 如果使用單引號引用字元串變數要比使用雙引號快速一些

在資料庫中避免使用聯合操作

比起其它的Web編程語言來說 PHP的資料庫功能十分強大 但是在PHP中資料庫的運行仍然是一件十分費時費力的事情 所以 作為一個Web程序員 要盡量減少資料庫的查詢操作 同時應該為資料庫建立適當的索引 另一件值得注意的事情是在用PHP操作資料庫時 盡可能不使用多個數據表的聯合操作 盡管聯合操作可以增強資料庫的查詢功能 但是卻大大增加了伺服器的負擔

為了說明這個問題 我們可以看看下面的這個簡單的例子

我們在資料庫中創建了兩個數據表foo和big_foo 在數據表foo中 只有一個欄位 包含了從 - 之間的所有自然數 數據表big_foo同樣只有一個欄位 但包含了從 - 之間的全部自然數 所以 從大小上說 big_foo等於foo與它自身進行了聯合操作

$db->query( select * from foo ); secs $db->next_record(); secs $db->query( insert into foo values (NULL) ); secs $db->query( select * from foo as a foo as b ); secs $db->query( select * from foo as a foo as b where a id > b id ); secs $db->query( select * from foo as a foo as b where a id = b id ); secs $db->query( select * from big_foo ); secs

從上面操作結果我們可以發現 對於兩個有 條記錄的數據表進行聯合 其速度並不比對一個 條紀錄的大型數據表單獨進行操作快多少

注意include與require的區別

在PHP變成中 include()與require()的功能相同 但在用法上卻有一些不同 include()是有條件包含函數 而require()則是無條件包含函數 例如在下面的一個例子中 如果變數$somgthing為真 則將包含文件somefile

if($something){include( somefile ); }

但不管$something取何值 下面的代碼將把文件somefile包含進文件里

if($something){require( somefile ); }

下面的這個有趣的例子充分說明了這兩個函數之間的不同

$i = ; while ($i < ) {require( somefile $i );$i++; }

在這段代碼中 每一次循環的時候 程序都將把同一個文件包含進去 很顯然這不是程序員的初衷 從代碼中我們可以看出這段代碼希望在每次循環時 將不同的文件包含進來 如果要完成這個功能 必須求助函數include()

$i = ; while ($i < ) { include( somefile $i ); $i++; }

注意echo和print的區別

PHP中echo和print的功能也基本相同 但是兩者之間也有細微差別 在PHP代碼中可以把print作為一個普通函數來使用 例如執行下面的代碼後變數$res的值將為 $ret = print Hello World ;

lishixin/Article/program/PHP/201405/30767

❹ PHP網路編程自學手冊的介紹

《PHP網路編程自學手冊》是由作者鄒天思 潘凱華 劉中華編著,人民郵電出版社出版的一本書籍。本書從初學者角度出發,通過通俗易懂的語言和大量生動典型的實例,由淺入深、循序漸進地介紹PHP進行網路編程的常用技術和方法。

❺ 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新手如何入門

如果已經學會了一個php框架,再去學習其他php框架,那麼會很容易上手。
但是如果還沒有php框架基礎,想去學習php框架,往往是一頭霧水,不知道從哪裡下手,從我學習php框架的經驗,給大家分享
一下,如何快速的去學習並掌握一個框架。

一,選擇一個合適的php框架

在國內,使用zf,ci和tp框架的人比較多,新手可以從中選一個去學習,新手不建議一開始就去學習zf,功力還不夠深,學習zf會讓你更迷茫。如果php基礎實在太差,學習ci和tp都覺得有點難度,那麼建議去學習一下我做的框架--canphp框架(簡稱cp),cp=ci+tp的結晶,更為簡單,更容易理解。

二,選定一個php框架之後,如何去學習

第一步,把下載回來的框架壓縮解壓,然後把每個目錄和文件名,大致的瀏覽一遍。這樣可以大概看出,這個php框架中大致布局和具有哪些功能。

第二步,學習輸出hello
world,hello world很簡單,但是對於學習一門新的語言或框架,很重要。

第三步,學習理解單一入口和網址解析(即網址路由),單一入口,對於新手來說,可能有點不太好理解。

第四步,學習php框架的內置的模板操作,主要學習程序是怎麼賦值給模板,怎麼載入模板和常用的模板標簽

第五步,學習資料庫的添加,修改,刪除,查詢,學會簡單的資料庫操作。

第六步,學習php框架常用的函數和類庫,php框架中一般會帶一些常用的函數和類,可以稍微看一下,此時還沒有必要深入研究,等用到的時候再詳細的去看手冊和樣例。

第七步,下載基於此框架開源的項目系統下來學習,了解了php框架的執行流程,模板操作,和資料庫操作,下載一個開源的系統,下來去學習,學習別人的代碼,學得更快。

第八步,做項目學習,要熟練掌握一個的框架,需要大量的實踐,通過做項目,去深入學習。

第九步,閱讀框架代碼,了解其實現原理

第十步,到這一步,你已經學會了這個php框架。

❼ PHP入門基礎教程

PHP入門基礎教程大全

PHP於1994年由Rasmus Lerdorf創建,剛剛開始是Rasmus Lerdorf為了要維護個人網頁而製作的一個簡單的用Perl語言編寫的程序。這些工具程序用來顯示 Rasmus Lerdorf 的個人履歷,以及統計網頁流量。後來又用C語言重新編寫,包括可以訪問資料庫。他將這些程序和一些表單直譯器整合起來,稱為 PHP/FI。PHP/FI 可以和資料庫連接,產生簡單的動態網頁程序。為幫助大家入門學習php,我為大家分享PHP入門知識教程如下:

1、嵌入方法:

類似ASP的<%,PHP可以是<?php或者是<?,結束符號是?>,當然您也可以自己指定。

2、引用文件:

引用文件的方法有兩種:require 及 include。

require 的使用方法如 require("MyRequireFile.php"); 。這個函數通常放在 PHP 程序的最前面,PHP 程序在執行前,就會先讀入 require 所指定引入的文件,使它變成 PHP 程序網頁的一部份。常用的函數,亦可以這個方法將它引入網頁中。

include 使用方法如 include("MyIncludeFile.php"); 。這個函數一般是放在流程式控制制的處理部分中。PHP 程序網頁在讀到 include 的文件時,才將它讀進來。這種方式,可以把程序執行時的流程簡單化。

3、注釋方法:

<?php

echo "這是第一種例子。 " ; // 本例是 C++ 語法的注釋 (PHP的注釋跟C差不多!)

/* 本例採用多行的

注釋方式 */

echo "這是第二種例子。 " ;

echo "這是第三種例子。 " ; # 本例使用 UNIX Shell 語法注釋

?>

4、變數類型:

$mystring = "我是字元串" ;

$NewLine = "換行了 " ;

$int1 = 38 ;

$float1 = 1.732 ;

$float2 = 1.4E+2 ;

$MyArray1 = array( "子" , "丑" , "寅" , "卯" );

這里引出兩個問題,首先PHP變數以$開頭,第二PHP語句以;結尾,可能ASP程序員會不適應。這兩個遺漏也是程序上大多錯誤所在。

5、運算符號:

數**非法字眼已被屏蔽**算:

符號 意義

+ 加法運算

- 減法運算

* 乘法運算

/ 除法運算

% 取余數

++ 累加

-- 遞減

字元串運算:

運算符號只有一個,就是英文的句號。它可以將字元串連接起來,變成合並的新字元串。類似ASP中的&

<?

$a = "PHP 4" ;

$b = "功能強大" ;

echo $a.$b;

?>

這里也引出兩個問題,首先PHP中輸出語句是echo,第二類似ASP中的<%=變數%>,PHP中也可以<?=變數?>。

邏輯運算:

符號 意義

< 小於

> 大於

<= 小於或等於

>= 大於或等於

== 等於

!= 不等於

&& 而且 (And)

and 而且 (And)

或者 (Or)

or 或者 (Or)

xor 異或 (Xor)

! 不 (Not)

學習目的:掌握php的流程式控制制

1、if..else 循環有三種結構

第一種是只有用到 if 條件,當作單純的判斷。解釋成 "若發生了某事則怎樣處理"。語法如下:

if (expr) { statement }

其中的 expr 為判斷的條件,通常都是用邏輯運算符號當判斷的條件。而 statement 為符合條件的執行部分程序,若程序只有一行,可以省略大括弧 {}。

範例:本例省略大括弧。

<?php

if ($state==1)echo "哈哈" ;

?>

這里特別注意的是,判斷是否相等是==而不是=,ASP程序員可能常犯這個錯誤,= 是賦值。

範例:本例的執行部分有三行,不可省略大括弧。

<?php

if ($state==1) {

echo "哈哈 ;

echo "<br>" ;

}

?>

第兩種是除了 if 之外,加上了 else 的條件,可解釋成 "若發生了某事則怎樣處理,否則該如何解決"。語法如下

if (expr) { statement1 } else { statement2 } 範例:上面的例子來修改成更完整的處理。其中的 else 由於只有一行執行的指令,因此不用加上大括弧。

<?php

if ($state==1) {

echo "哈哈" ;

echo "<br>";

}

else{

echo "呵呵";

echo "<br>";

}

?>

第三種就是遞歸的 if..else 循環,通常用在多種決策判斷時。它將數個 if..else 拿來合並運用處理。

直接看下面的例子

<?php

if ( $a > $b ) {

echo "a 比 b 大" ;

} elseif ( $a == $b ) {

echo "a 等於 b" ;

} else {

echo "a 比 b 小" ;

}

?>

上例只用二層的 if..else 循環,用來比較 a 和 b 兩個變數。實際要使用這種遞歸 if..else 循環時,請小心使用,因為太多層的循環容易使設計的邏輯出問題,或者少打了大括弧等,都會造成程序出現莫名其妙的問題。

2、 for 循環就單純只有一種,沒有變化,它的語法如下

for (expr1; expr2; expr3) { statement }

其中的 expr1 為條件的`初始值。expr2 為判斷的條件,通常都是用邏輯運算符號 (logical operators) 當判斷的條件。expr3 為執行 statement 後要執行的部份,用來改變條件,供下次的循環判斷,如加一..等等。而 statement 為符合條件的執行部分程序,若程序只有一行,可以省略大括弧 {}。

下例是用 for 循環寫的的例子。

<?php

for ( $i = 1 ; $i <= 10 ; $i ++) {

echo "這是第".$i."次循環<br>" ;

}

?>

3、 switch 循環,通常處理復合式的條件判斷,每個子條件,都是 case 指令部分。在實作上若使用許多類似的 if 指令,可以將它綜合成 switch 循環。

語法如下

switch (expr) { case expr1: statement1; break; case expr2: statement2; break; default: statementN; break; }

其中的 expr 條件,通常為變數名稱。而 case 後的 exprN,通常表示變數值。冒號後則為符合該條件要執行的部分。注意要用 break 跳離循環。

<?php

switch ( date ( "D" )) {

case "Mon" :

echo "今天星期一" ;

break;

case "Tue" :

echo "今天星期二" ;

break;

case "Wed" :

echo "今天星期三" ;

break;

case "Thu" :

echo "今天星期四" ;

break;

case "Fri" :

echo "今天星期五" ;

break;

default:

echo "今天放假" ;

break;

}

?>

這里需要注意的是break;別遺漏了,default,省略是可以的。

很明顯的,上述的例子用 if 循環就很麻煩了。當然在設計時,要將出現機率最大的條件放在最前面,最少出現的條件放在最後面,可以增加程序的執行效率。上例由於每天出現的機率相同,所以不用注意條件的順序。

學會構建資料庫

在PHP中,MY SQL的命令行編輯可能會令初學者感到很麻煩,不要緊,你下載一個PHPMYADMIN安裝一下,以後建立編輯資料庫可以靠它了。

下面說一下它的使用。

進入了phpmyadmin後,我們首先需要建立一個資料庫,

Language (*) 這里選擇中文簡體,然後在左邊的 創建一個新的資料庫 這里填寫資料庫名字,點擊創建即可。

然後在左邊下拉菜單中選擇那個已經創建的資料庫。在下面的

在資料庫 shop 中創建一個新表 :

名字 :

欄位數 :

中填寫表名字和大致你認為的欄位數(不夠或者多了都不要緊,以後可以再添加或者預設),按執行。

然後就可以開始建立表了。

第一欄是欄位的名字;第二欄選擇欄位類型:

我們常用的是以下幾個:

1)VARCHAR,文本類型

2)INT,整數類型

3)FLOAT,浮點數類型

4)DATE,日期型

5)大家或許會問,自動添加的ID在哪裡?這個只要選擇INT類型,在後面的額外中選擇 auto_increment 就可以了。

建立了表以後,可以在左邊看到你建立的表,點擊以後,你可以:

1)按右邊的結構:查看修改表結構

2)按右邊的瀏覽:查看錶中的數據

3)按右邊的SQL:運行SQL語句

4)按右邊的插入:插入一行記錄

5)按右邊的清空:刪除表中所有記錄

6)按右邊的刪除:刪除表

還有一個很重要的功能就是導入和導出,當我們本機做好了程序和資料庫的時候,需要在伺服器上也有一個本地鏡像,如果是ASP的ACCESS簡單了,直接上傳MDB文件即可,如果是SQL SERVER也可以連接遠端伺服器進行導入。那麼MY SQL中你可以導出所有的SQL語句,到了遠端伺服器的PHPMYADMIN上,創建資料庫後按SQL,粘帖你剛才復制下來的所有本級生成的SQL語句即可。

學會連接資料庫

PHP簡直就是一個函數庫,豐富的函數使PHP的某些地方相當簡單。建議大家down一本PHP的函數手冊,總用的到。

我這里就簡單說一下連接MYSQL資料庫。

1、mysql_connect

打開 MySQL 伺服器連接。

語法: int mysql_connect(string [hostname] [:port], string [username], string [password]); 返回值: 整數

本函數建立與 MySQL 伺服器的連接。其中所有的參數都可省略。當使用本函數卻不加任何參數時,參數 hostname 的默認值為 localhost、參數 username 的默認值為 PHP 執行行程的擁有者、參數 password 則為空字元串 (即沒有密碼)。而參數 hostname 後面可以加冒號與埠號,代表使用哪個埠與 MySQL 連接。當然在使用資料庫時,早點使用 mysql_close() 將連接關掉可以節省資源。

2、 mysql_select_db

選擇一個資料庫。

語法: int mysql_select_db(string database_name, int [link_identifier]); 返回值: 整數

本函數選擇 MySQL 伺服器中的資料庫以供之後的資料查詢作業 (query) 處理。成功返回 true,失敗則返回 false。

最簡單的例子就是:

$conn=mysql_connect ("127.0.0.1", "", "");

mysql_select_db("shop");

連接機MY SQL資料庫,打開SHOP資料庫。在實際應用中應當加強點錯誤判斷。

學會讀取數據

先看兩個函數:

1、mysql_query

送出一個 query 字元串。 語法: int mysql_query(string query, int [link_identifier]); 返回值: 整數

本函數送出 query 字元串供 MySQL 做相關的處理或者執行。若沒有指定 link_identifier 參數,則程序會自動尋找最近打開的 ID。當 query 查詢字元串是 UPDATE、INSERT 及 DELETE 時,返回的可能是 true 或者 false;查詢的字元串是 SELECT 則返回新的 ID 值,當返回 false 時,並不是執行成功但無返回值,而是查詢的字元串有錯誤。

2、mysql_fetch_object 返回類資料。 語法: object mysql_fetch_object(int result, int [result_typ]); 返回值: 類

本函數用來將查詢結果 result 拆到類變數中。若 result 沒有資料,則返回 false 值。

看一個簡單的例子:

<?

$exec="select * from user";

$result=mysql_query($exec);

while($rs=mysql_fetch_object($result))

{

echo "username:".$rs->username."<br>";

}

?>

當然,表user中有一個username的欄位,這就類似asp中的

<%

exec="select * from user"

set rs=server.createobject("adodb.recordset")

rs.open exec,conn,1,1

do while not rs.eof

response.write "username:"&rs("username")&"<br>"

rs.movenext

loop

%>

當然先要連接資料庫,一般我們 require_once('conn.php');而conn.php裡面就是上一次說的連接資料庫的代碼。

小小的兩條命令可以完成讀取數據的工作了

學會添加刪除修改數據

mysql_query($exec);

單這個語句就可以執行所有的操作了,不同的就是$exec這個sql語句

添加:$exec="insert into tablename (item1,item2) values ('".$_POST['item1']."',".$_POST['item1'].")";

刪除:$exec="delete from tablename where...";

修改:$exec="update tablename set item1='".$_POST['item1']."' where ...";

說到這里就要說一下表單和php變數傳遞,如果表單中的一個 <input name="item1" type="text" id="item1">

表單以POST提交的,那麼處理表單文件就可以用$_POST['item1']得到變數值,同樣以GET提交的就是$_GET['item1']

是不是很簡單?但是通常$exec會有問題,因為可能您的SQL語句會很長,您會遺漏.連接符,或者'來包圍字元型欄位。

我們可以注釋mysql_query($exec);語句用echo $exec;代替來輸出$exec以檢查正確性。如果您還不能察覺$exec有什麼錯誤的話,可以復制這個sql語句到phpmyadmin中執行,看看它的出錯信息。還有需要注意的是,我們不要使用一些敏感的字元串作為欄位名字,否則很可能會出現問題,比如說date什麼的。變數的命名,欄位的命名遵循一點規律有的時候對自己是一種好處,初學者並不可忽視其重要性。

學會SESSION的使用

SESSION的作用很多,最多用的就是站點內頁面間變數傳遞。

在頁面開始我們要session_start();開啟SESSION;

然後就可以使用SESSION變數了,比如說要賦值就是:$_SESSION['item']="item1";要得到值就是$item1=$_SESSION['item'];,很簡單吧。這里我們可能會使用到一些函數,比如說判斷是不是某SESSION變數為空,可以這么寫:empty($_SESSION['inum'])返回true or false。

下面綜合一下前面所說的我們來看一個登陸程序,判斷用戶名密碼是否正確。

登陸表單是這樣:login.php

<table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<form action="checklogin.php" method="post"><td align="center" valign="middle"><table width="400" border="0" cellpadding="5" cellspacing="1" class="tablebg">

<tr class="tdbg">

<td colspan="2"><p align="center">Administrators Login</p></td>

</tr>

<tr class="tdbg">

<td><p align="center">Username</p></td>

<td><p align="center">

<input name="username" type="text" id="username">

</p></td>

</tr>

<tr class="tdbg">

<td><p align="center">Password</p></td>

<td><p align="center">

<input name="password" type="password" id="password">

</p></td>

</tr>

<tr class="tdbg">

<td colspan="2"><p align="center">

<input type="submit" name="Submit" value="Submit">

<input type="reset" name="Submit2" value="Clear">

</p></td>

</tr>

</table></td></form>

</tr>

</table>

處理文件是這樣

<?php

require_once('conn.php');

session_start();

$username=$_POST['username'];

$password=$_POST['password'];

$exec="select * from admin where username='".$username."'";

if($result=mysql_query($exec))

{

if($rs=mysql_fetch_object($result))

{

if($rs->password==$password)

{

$_SESSION['adminname']=$username;

header("location:index.php");

}

else

{

echo "<script>alert('Password Check Error!');location.href='login.php';</script>";

}

}

else

{

echo "<script>alert('Username Check Error!');location.href='login.php';</script>";

}

}

else

{

echo "<script>alert('Database Connection Error!');location.href='login.php';</script>";

}

?>

conn.php是這樣:

<?php

$conn=mysql_connect ("127.0.0.1", "", "");

mysql_select_db("shop");

?>

由於 $_SESSION['adminname']=$username;我們可以這樣寫驗證是否登陸語句的文件:checkadmin.php

<?php

session_start();

if($_SESSION['adminname']=='')

{

echo "<script>alert('Please Login First');location.href='login.php';</script>";

}

?>

做一個分頁顯示

關鍵就是用到了SQL語句中的limit來限定顯示的記錄從幾到幾。我們需要一個記錄當前頁的變數$page,還需要總共的記錄數$num

對於$page如果沒有我們就讓它=0,如果有<0就讓它也=0,如果超過了總的頁數就讓他=總的頁數。

$execc="select count(*) from tablename ";

$resultc=mysql_query($execc);

$rsc=mysql_fetch_array($resultc);

$num=$rsc[0];

這樣可以得到記錄總數

ceil($num/10))如果一頁10記錄的話,這個就是總的頁數

所以可以這么寫

if(empty($_GET['page']))

{

$page=0;

}

else

{

$page=$_GET['page'];

if($page<0)$page=0;

if($page>=ceil($num/10))$page=ceil($num/10)-1;//因為page是從0開始的,所以要-1

}

這樣$exec可以這么寫 $exec="select * from tablename limit ".($page*10).",10";

//一頁是10記錄的

最後我們需要做的就是幾個連接:

<a href="xxx.php?page=0">FirstPage</a>

<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>

<a href="xxx.php?page=<?=($page+1)?>">NextPage</a>

<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>

注意事項

1、注意不要漏了分號

2、注意不要漏了變數前的$

3、使用SESSION的時候注意不要遺漏session_start();

如果發生錯誤的時候,可以採用以下方法:

1、如果是SQL語句出錯,就注釋瞭然後輸出SQL語句,注意也要注釋調後續的執行SQL語句

2、如果是變數為空,大多是沒有傳遞到位,輸出變數檢查一下,檢查一下表單的id和name

3、如果是資料庫連接出錯,檢查是否正確打開MY SQL和是否遺漏了連接語句

4、注意縮進,排除括弧不區配的錯誤

在做大網站的時候,我的思路是先構建資料庫,確定每一個欄位的作用,和表之間的關系。然後設計後台界面,從添加數據開始做起,因為添加是否成功可以直接到資料庫裡面驗證,做好了添加再做顯示的頁面,最後才是兩者的結合。一般來說後台就包括添加刪除修改和顯示,後台沒有問題了,前台也沒有什麼大問題。前台還需要注意安全性和容錯還有就是輸出格式。

學會用PHP上傳文件和發郵件

上傳文件表單必須加上 enctype="multipart/form-data"

和 <input type="file" name="file">

下面看一下代碼:

$f=&$HTTP_POST_FILES['file'];

$dest_dir='uploads';//設定上傳目錄

$dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//我這里設置文件名為日期加上文件名避免重復

$r=move_uploaded_file($f['tmp_name'],$dest);

chmod($dest, 0755);//設定上傳的文件的屬性

上傳的文件名為date("ymd")."_".$f['name'] ,可以在以後插入到資料庫的時候用到,PHP實際上是把你上傳的文件從臨時目錄移動到指定目錄。move_uploaded_file($f['tmp_name'],$dest);這是關鍵

至於發郵件就更加簡單,可以使用mail()函數

mail("收件人地址","主題","正文","From:發件人 Reply-to:發件人的地址");

不過mail()需要伺服器的支持,在WINDOWS下還需要配置SMTP伺服器,一般來說外面的LINUX空間都行。

好像上傳文件和發郵件比ASP簡單很多,只要調用函數就可以了。ASP還需要用到伺服器的不同組件比如FSO、JMAIL什麼的。

;
閱讀全文

與PHP網路編程自學手冊相關的資料

熱點內容
抖音演算法到底是什麼 瀏覽:126
哪個vlan技術對報文加密 瀏覽:570
單片機定時電路 瀏覽:672
山西平台伺服器雲主機 瀏覽:700
按摩肚臍解壓視頻 瀏覽:989
php55安裝教程 瀏覽:137
雲伺服器怎麼查找本機域名 瀏覽:22
qd123y壓縮機參數 瀏覽:385
程序員媽媽懷孕 瀏覽:490
金普國際編程 瀏覽:537
java什麼是引用類型 瀏覽:944
這是命令嗎txt 瀏覽:314
支付寶android包名 瀏覽:154
eclipsemaven命令 瀏覽:68
24路伺服器配什麼cpu 瀏覽:466
壓縮文件和解壓文件哪個快 瀏覽:675
亞馬遜雲伺服器視頻通話 瀏覽:912
金融知識app哪個好 瀏覽:978
農行理財app收益在哪裡 瀏覽:969
暗淡的命令名項目表示該命令 瀏覽:212