php網路編程
『壹』 編寫網頁的編程語言有哪些
編寫網頁的編程語言大概有:
1、php
PHP是一個嵌套的縮寫名稱,是英文「超級文本預處理語言」(PHP:Hypertext Preprocessor)的縮寫。PHP是一種HTML內嵌式的語言,與微軟的ASP頗有幾分相似,都是一種在伺服器端執行的「嵌入HTML文檔的腳本語言」,語言的風格有類似於C語言,現在被很多的網站編程人員廣泛的運用。
2、java
Java是一個由Sun公司開發而成的新一代編程語言。是近年來很流行的一種網路編程語言,它由C語言發展而來,是完全面向對象的語言。在與網路的融合中,已顯現出它的強大生命力和廣闊的前景。
3、JSP
JSP(Java Server Pages,Java伺服器頁面)是在Sun Microsystems公司的倡導下,由許多公司共同參與建立的一種新的動態網頁技術標准。它在動態網頁的建設方面具有強大而特殊的功能。Sun公司應用組建「Java社團」的思想開發JSP技術。
4、ASP與ASP.NET
ASP是微軟公司推出的意圖取代CGI的新技術。通過它,用戶可以使用幾乎所有的開發工具來創建和運行互動式的動態網頁。
5、HTML
腳本語言是介於HTML(HyperText Markup Language,超文本標示語言)傳統的HTML是靜態的,為增強網頁的動態功能,一些廠商先後推出了自己的 腳本語言,其中Netscape推出了 (for客戶端和 for服務端兩種),微軟則推出了 和ASP兩種,用於伺服器端和客戶端程序的編寫。
6、ColdFusion
具有計算機天賦的Jeremy Allire便在1995年編寫了一種快速響應且易於編寫的動態腳本語言,叫做coldfusion,一經推出,便震撼整個網路行業。
7、Visual Basic ing Edition
它也是一種HTML嵌入腳本語言
『貳』 如何使用PHP編程
PHP是一門高效的網路編程語言,由於它具有編寫靈活、運行快速等優點,迅速成為Web程序員的首選語言。前不久的一份權威調查表明,現在已經有31.6%的網站使用PHP作為主要的伺服器端編程語言。
但是,要成為一名PHP編程高手卻並不容易。並不像很多人想像的那樣,只要能夠飛快地編寫幾條簡單的代碼去解決一個復雜的問題就是PHP編程高手了,真正的PHP高手還需要考慮更多的其它問題。以下三條准則是一名成熟的PHP程序員在編程中應該首先遵循的准則。
1.懶惰是金
2.編寫漂亮的代碼
3.追求程序的速度,而不是編程的速度
一、懶惰是金
做一個懶惰的程序員嗎?這個想法太奇怪了!因為這個世界上最忙碌的人可能就是計算機程序員了。但正是因為程序員太忙了,所以才應該在編程時學會偷懶。
對於一個程序員來說,懶惰的方法有兩種:其一,大膽使用現成的別人的程序代碼,把這些代碼融入到你自己的程序或者項目中去。其二是編寫一些有用的代碼建立一個函數庫,在將來編寫程序時可以順手拈來,省去了許多重復的勞動,自然就可以懶惰一點了。
這兩種偷懶的方法都非常適合PHP程序員了。
首先,PHP是在自由開放的環境中誕生和成長的一門語言。在世界各地,有成千上萬的程序員,他們一直在為PHP的完美而不斷奮斗,他們也願意和別人分享自己的聰明才智和自己編寫的代碼。你每天都可以從一些PHP網站、郵件列表、新聞組發現大量的優秀的程序代碼。這樣說,我並不是鼓勵你整天等著讓別人為你編寫代碼,但是你可以「站在偉人的肩膀上」,充分發揚「拿來主義」,聰明地應用別人的程序代碼可以節省你大量時間。其次,在PHP中,你可以方便地建立自己的函數庫,這樣可以在你以後編寫程序時省去很多麻煩。
下面筆者為大家介紹幾個通用的函數,這些函數有的來自網上的一些開放源代碼的項目,有的精選自郵件列表。如果你能把它們加入到你自己的函數庫中,遲早你將會發現自己受益無窮。
1.通用資料庫處理函數
和其它的CGI函數相比,PHP的優點之一是具有很強大的資料庫處理能力。但是,在PHP中,對於不同的資料庫都使用一些特定的函數來專門處理,缺少通用的資料庫處理函數。這大大降低了程序代碼的可移植性,這也為初學編程的朋友帶來了很多不便。
在網上,許多程序員都通過封裝類解決了這個問題。他們編寫了統一的函數用來處理任何流行的資料庫——不管是在linux世界深受歡迎的Mysql還是在Windows平台上廣泛流行的SqlServer。就筆者個人來說,非常喜歡使用這些函數,因為可以直接使用一些簡單的諸如"query"、"next_record"之類的函數,而不需要考慮資料庫的連接、資料庫句柄這些復雜的東西,更不需要考慮使用的是何種資料庫。
如果你需要這些函數,你可以通過訪問以下的幾個網址而得到:
http://phplib.netuse.de/
http://phpclasses.UpperDesign.com/browse.html/package/20
http://phpdb.linuxbox.com/
2.變數調試函數
PHP程序的調試一直是一件讓人頭疼的事,它既不像VB等高級語言那樣有集成的編譯調試環境,也不想Perl那樣可以在Linux或者DOS環境下直接運行。其實,我們完全可以通過靈活地使用echo語句來完成對PHP的調試工作。
下面的幾個函數可以讓你隨時查看程序中任何變數的類型及其值。
function ss_array_as_string (&$array, $column = 0) {
$str = "Array(
n";
while(list($var, $val) = each($array)){
for ($i = 0; $i < $column+1; $i++){
$str .= "&nbsp;&nbsp;&nbsp;&nbsp;";
}
$str .= $var. ==> ;
$str .= ss_as_string($val, $column+1)."
n";
}
for ($i = 0; $i < $column; $i++){
$str .= "&nbsp;&nbsp;&nbsp;&nbsp;";
}
return $str.);
}
function ss_object_as_string (&$object, $column = 0) {
if (empty($object->classname)) {
return "$object";
}
else {
$str = $object->classname."(
n";
while (list(,$var) = each($object->persistent_slots)) {
for ($i = 0; $i < $column; $i++){
$str .= "&nbsp;&nbsp;&nbsp;&nbsp;";
}
global $$var;
$str .= $var. ==> ;
$str .= ss_as_string($$var, column+1)."
n";
}
for ($i = 0; $i < $column; $i++){
$str .= "&nbsp;&nbsp;&nbsp;&nbsp;";
}
return $str.);
}
}
function ss_as_string (&$thing, $column = 0) {
if (is_object($thing)) {
return ss_object_as_string($thing, $column);
}
elseif (is_array($thing)) {
return ss_array_as_string($thing, $column);
}
elseif (is_double($thing)) {
return "Double(".$thing.")";
}
elseif (is_long($thing)) {
return "Long(".$thing.")";
}
elseif (is_string($thing)) {
return "String(".$thing.")";
}
else {
return "Unknown(".$thing.")";
}
}
需要的時候,在程序中簡單地加入下面的一條代碼即可查看程序中的所使用的變數(包括數組和對象)的類型和值:
echo ss_as_string($my_variable);
使用下面的語句,我們可以直接查看程序中所有的變數的值:
echo ss_as_string($GLOBALS);
3. 控制Log信息的函數
調試PHP程序的另外一種重要的方法就是查看Log信息。如果能夠方便地控制Log信息的級別以及Log信息的顯示內容,將會給程序調試帶來更多的便利。下面的幾個函數可以方便地實現這個功能。
$ss_log_level = 0;
$ss_log_filename = /tmp/ss-log;
$ss_log_levels = array(
NONE => 0,
ERROR => 1,
INFO => 2,
DEBUG => 3);
function ss_log_set_level ($level = ERROR) {
global $ss_log_level;
$ss_log_level = $level;
}
function ss_log ($level, $message) {
global $ss_log_level, $ss-log-filename;
if ($ss_log_levels[$ss_log_level] < $ss_log_levels[$level]) {
// 不顯示Log信息
return false;
}
$fd = fopen($ss_log_filename, "a+");
fputs($fd, $level. - [.ss_timestamp_pretty().] - .$message."n");
fclose($fd);
return true;
}
function ss_log_reset () {
global $ss_log_filename;
@unlink($ss_log_filename);
}
在上面的函數中,有四個Log級別變數。運行PHP程序時,只有當Log的級別低於預設的級別值時,Log信息才可以被記錄和顯示出來。例如,在程序中加入如下的一條語句:
ss_log_set_level(INFO);
那麼,運行PHP程序時,只有ERROR和INFO級別的LOG信息才能被記錄和顯示出來,DEBUG級的信息則被忽略了。除此之外,我們還可以設定顯示的信息內容,其語句如下:
ss_log(ERROR, "testing level ERROR");
ss_log(INFO, "testing level INFO");
ss_log(DEBUG, "testing level DEBUG");
你也可以隨時使用下面的語句清空LOG信息:
ss_log_reset();
4.速度測試函數
為了優化代碼,我們需要一種可以測試代碼運行時間的方法,從而來選擇最優的代碼。下面的函數可以測試運行代碼所需的時間:
function ss_timing_start ($name = default) {
global $ss_timing_start_times;
$ss_timing_start_times[$name] = explode( , microtime());
}
function ss_timing_stop ($name = default) {
global $ss_timing_stop_times;
$ss_timing_stop_times[$name] = explode(, microtime());
}
function ss_timing_current ($name = default) {
global $ss_timing_start_times, $ss_timing_stop_times;
if (!isset($ss_timing_start_times[$name])) {
return 0;
}
if (!isset($ss_timing_stop_times[$name])) {
$stop_time = explode(, microtime());
}
else {
$stop_time = $ss_timing_stop_times[$name];
}
$current = $stop_time[1] - $ss_timing_start_times[$name][1];
$current += $stop_time[0] - $ss_timing_start_times[$name][0];
return $current;
}
現在可以輕松地檢查任何一段代碼的執行時間了,甚至我們可以同時使用多個計時器,只需在使用上述的幾個函數時設定不同的參數作為計時器的名稱就可以了。
5.調試和優化資料庫的操作
對於資料庫來說,運行速度是至關重要的。盡管很多書籍和文章都講授了一些快速運行資料庫的方法,但是所有的方法都必須經過實踐的檢驗。下面我們將把PHPLib函數庫中的query()函數和上面介紹的幾個函數綜合起來編寫成新的query()函數,和原先的函數相比,這個函數增加了運行時間的監測功能。
function query($Query_String, $halt_on_error = 1) {
$this->connect();
ss_timing_start();
$this->Query_ID = @mysql_query($Query_String,$this->Link_ID);
ss_timing_stop();
ss_log(INFO, ss_timing_current(). Secs - .$Query_String);
$this->Row = 0;
$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;
}
二、編寫漂亮的代碼
1.將後台程序與前端程序分開
在編寫PHP程序時,有些代碼是用來處理一些事務,例如操作資料庫、進行數學運算等,而另外的一些代碼則只是事務處理的結果顯示出來,例如一些使用echo語句將結果以HTML的格式顯示在Web瀏覽器上的PHP代碼以及那些直接嵌入PHP程序的HTML代碼。首先我們應該清晰地區分這兩種代碼,把前者稱為後台程序,把後者稱為前端程序。
因為PHP是一種嵌入式編程語言,也就是說,所有的PHP代碼都可以嵌入到HTML代碼之中,這為程序的編寫帶來了許多便利之處。但是,「物極必反」,如果在一段較長的程序中將PHP代碼和HTML代碼混合編寫,這將使程序雜亂無章,不利於程序的維護和閱讀。所以我們需要盡可能地將這些程序中混雜於HTML代碼中的PHP代碼移植出來,在專門的文件中將這些代碼封裝成函數,然後在HTML代碼中使用include語句來包含這些文件,在適當的位置調用這些函數即可。
這種做法一方面使HTML代碼和PHP代碼都簡單易讀,另一方面因為HTML代碼需要不斷更新,而這種分離的方法可以確保後台程序不會被破壞。
同前端程序不同,後台程序更多追求的是穩定、結構化,極少更改,所以應該認真地設計和管理。其實,在設計台程序時,投入大量時間是值得的,「現在栽樹,以後乘涼」,在以後的設計工作中將可以輕松地使用現在編寫的後台程序。
2.靈活使用包含文件
正如前面所說的那樣,後台程序應當安排在一系列的包含文件中。包含文件可以通過include語句在需要時動態裝入,也可以在php.ini文件中通過使用auto_prepend_file指令預先自動裝入。
如果使用後一種方法的話,雖然取得了一勞永逸的好處,但是也有一些缺點值得我們注意。下面的一段代碼向我們展示了解析一個龐大的包含文件需要一定的時間:
require(timing.inc);
ss_timing_start();
include(test.inc);
ss_timing_stop();
echo
.ss_timing_current().
;
?>
在上面的代碼中,test.inc是一個1000行的包含文件,運行的結果顯示,解析這個包含文件花費了0.6秒鍾,對於一個大型網站來說,這個速度並不是可以忽略不記的。
使用包含文件的另外一個缺點是:如果一個文件中的一個語句發生錯誤,將會使整個網站的PHP程序都無法運行。所以使用起來也及其小心。
其實,對包含文件稍做處理,即可以使包含文件只在需要時進行解析。下面的代碼使abc.inc文件只在程序需要時才作解析:
if ( defined( __LIBA_INC) ) return;
define( __LIBA_INC, 1 );
/*
* 代碼...
*/
?>
3.使用面向對象的編程方法
PHP也是一種面向對象的語言,面向對象的編程方法是優秀的程序員們非常推崇的一種軟體設計方法,在PHP編程中可以充分發揮面向對象語言的優勢,對編程中的對象進行封裝。在前面的代碼中,我們使用了面向對象的方法,例如在管理資料庫時,我們將query()函數封裝進資料庫類中,這極大地方便了代碼的管理,增加了程序的可讀性。
三、追求程序速度,而不是編程的速度
在網站建設中,程序運行速度和網頁下載速度都是關系成敗的重要因素。作為一名Web程序員,應該更加註意代碼的運行速度。下面介紹的幾種方法都在不同程度上提高了代碼的運行速度。
1.使用內嵌的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=0; $i<1000; $i++) {
str_replace(i>, b>, $string).
;
}
?>
//這段代碼測試ereg_replace的運行速度
for ($i=0; $i<1000; $i++) {
ereg_replace(<([/]*)i>, <\1b>, $string).
;
}
?>
//列印結果
結論
使用str_replace的時間 -
使用ereg_pattern的時間 -
運行上面的代碼,得到的結果是:
使用str_replace的時間 - 0.089757
使用ereg_pattern的時間 - 0.248881
從運行的結果我們可以看出使用str_replace替代ereg_replace作為字元串替換函數,極大地提高了代碼的運行速度。
3.注意字元串的引用
PHP和其它很多編程語言一樣,可以使用雙引號("")來引用字元串,也可以使用單引號()。但是在PHP中,如果使用雙引號來引用字元串,那麼PHP解析器將首先分析字元串中有沒有對變數的引用,有變數的話,將對變數進行替換。如果是單引號,則沒有如此復雜——直接將單引號包含起來的所有字元串直接顯示出來。顯然,在PHP編程中,如果使用單引號引用字元串變數要比使用雙引號快速一些。
4.在資料庫中避免使用聯合操作
比起其它的Web編程語言來說,PHP的資料庫功能十分強大。但是在PHP中資料庫的運行仍然是一件十分費時費力的事情,所以,作為一個Web程序員,要盡量減少資料庫的查詢操作,同時應該為資料庫建立適當的索引。另一件值得注意的事情是在用PHP操作資料庫時,盡可能不使用多個數據表的聯合操作,盡管聯合操作可以增強資料庫的查詢功能,但是卻大大增加了伺服器的負擔。
為了說明這個問題,我們可以看看下面的這個簡單的例子。
我們在資料庫中創建了兩個數據表foo和big_foo。在數據表foo中,只有一個欄位,包含了從1-1000之間的所有自然數。數據表big_foo同樣只有一個欄位,但包含了從1-1,000,000之間的全部自然數。所以,從大小上說,big_foo等於foo與它自身進行了聯合操作。
$db->query("select * from foo");
0.032273 secs
$db->next_record();
0.00048999999999999 secs
$db->query("insert into foo values (NULL)");
0.019506 secs
$db->query("select * from foo as a, foo as b");
17.280596 secs
$db->query("select * from foo as a, foo as b where a.id > b.id");
14.645251 secs
$db->query("select * from foo as a, foo as b where a.id = b.id");
0.041269 secs
$db->query("select * from big_foo");
25.393672 secs
從上面操作結果我們可以發現,對於兩個有1000條記錄的數據表進行聯合,其速度並不比對一個1000000條紀錄的大型數據表單獨進行操作快多少。
5.注意include與require的區別
在PHP變成中,include()與require()的功能相同,但在用法上卻有一些不同,include()是有條件包含函數,而require()則是無條件包含函數。例如在下面的一個例子中,如果變數$somgthing為真,則將包含文件somefile:
if($something){
include("somefile");
}
但不管$something取何值,下面的代碼將把文件somefile包含進文件里:
if($something){
require("somefile");
}
下面的這個有趣的例子充分說明了這兩個函數之間的不同。
$i = 1;
while ($i < 3) {
require("somefile.$i");
$i++;
}
在這段代碼中,每一次循環的時候,程序都將把同一個文件包含進去。很顯然這不是程序員的初衷,從代碼中我們可以看出這段代碼希望在每次循環時,將不同的文件包含進來。如果要完成這個功能,必須求助函數include():
$i = 1;
while ($i < 3) {
include("somefile.$i");
$i++;
}
6.注意echo和print的區別
PHP中echo和print的功能也基本相同,但是兩者之間也有細微差別。在PHP代碼中可以把print作為一個普通函數來使用,例如執行下面的代碼後變數$res的值將為1。
$ret = print "Hello World";
這意味著print可用在一些復雜的表達式中,而echo則不行。同樣,在代碼中echo語句的運行速度要略微快於print語句,因為echo語句不要求返回任何數值.
『叄』 編程軟體哪個比較好用
這個語言類很多,工具也不同。你要明確你自己需要學習使用的需要。對於我而言,安卓開發,使用Javakotlinc需要。以前用eclipse,sourceinsight。因為eclipse已經明確不支持維護了,主流使用androidstudio。
java,python吧,java火了這么久不是沒原因的,最近python最近勢頭也不錯,不過感覺一門語言學好就不錯了??
不知道其餘他人怎麼回答的,Java,Python和C++都是編程語言,樓主問的是編程軟體,二者是兩碼事啊!
對於編程軟體的話,不同的編程語言有各自好用的編程軟體!
比如Java的話現在idea特別火,比較智能好用,但eclipse用的也比較多!
.NET系列編程語言比如C#、VB、VC++等首選visualstudio!
Python的話比如Anaconda,Pythontutor比較火!
PHP的話開發工具很多,phpDesigner還有EclipsePHP,zendstuido那個軟體太大了,當然你也可以下載試試,只要你機子帶得起來!
目前流行的編程語言主要有:java,js,c/c++,python,c#,golang等。其中java主要伺服器,大數據開發應用比較廣泛,當然也可用於android,不過由於google和甲骨文的版權問題,java已被kotlin逐漸替代,js主要是在前度開發領域應用比較多,當然也可以基於nodejs進行伺服器端開發工作,c/c++相對於較偏底層一些,主要在性能要滾乎嫌求極高的地方應用,像多媒體,游戲領域,通信領域等,python目前主要在人工大手智能領域應用比較廣泛,當然也能用於服務端開發,自動化測試等方面的應用,c#作為微軟的主推語言,隨著core版本的推出目前已經完全跨平台,在服務端開發,移動端開發,桌頃旅面開的等都能勝任,但其生態比java差不少,導致開發者沒有java多,golang是google推出的的一門編程語言特點是開發並發程序上有很大的優勢,隨著很多成功的案例,也成為了很多互聯網公司的主打語言。
目前常見的有java,C語言,C++,Python。
java可以做後段開發
c/c++可以做嵌入式
python是最近幾年很火的一門語言,可以做軟體自動化測試,網路爬蟲,人工智慧等
主要有:BASIC、PASCAL、C、COBOL、FORTRAN、LOGO以及VC、VBjava等最受歡迎的依次為c、java、c++、php。
1、CC++常用軟體是MSVC++(6.0和更高版本)集成在微軟的開發工具visualstudio中,JAVA桌面編程常用軟體是netbean,網路編程是MyEclipse(包括了常用的Eclipse和常用工具,目前Java最流行的網路編程軟體)。
2、C#沒有別的軟體,就是MSVC#,也集成在了Visualstudio中,常用的是2005版,還有2008,微軟官方有下載,有免費的學習版。
『肆』 PHP網路編程標准教程的目錄
第1章 PHP概述001
1.1什麼是PHP002
1.2PHP開發語言的特點002
1.3PHP的發展趨勢003
1.4如何學好PHP004
1.5PHP的語法結構005
1.5.1PHP標識符的規則005
1.5.2PHP標記符的作用005
1.6程序注釋006
1.6.1使用PHP注釋006
1.6.2使用HTML注釋007
1.6.3有效使用注釋007
1.7PHP輸出指令008
1.7.1應用print()語句輸出字元008
1.7.2應用echo()語句輸出字元009
1.7.3應用printf()語句格式化輸出字元010
1.7.4應用sprintf()語句格式化輸出字元011
1.8PHP包含語句011
1.8.1應用include()語句包含文件011
1.8.2應用require()語句包含文件012
1.8.3應用include_once()語句包含文件013
1.8.4應用require_once()語句包含文件013
1.8.5include()語句和require()語句的區別014
1.8.6include_once()語句和require_once()語句的區別016
1.9PHP動態網頁的工作流程016
1.10體驗PHP——編寫第1個PHP Web016
1.10.1創建站點016
1.10.2使用Dreamweaver創建PHP文件017
1.10.3創建PHP標記017
1.10.4編寫PHP代碼017
1.10.5存儲文件018
1.10.6網站運行結果018
1.11獲取幫助信息018
1.11.1PHP學習工具和資料下載019
1.11.2獲取PHP的源代碼資源019
1.12本章小結020
第2章PHP環境的安裝與配置021
2.1Windows下應用AppServ快速配置PHP開發環境022
2.2Windows下Apache+MySQL+PHP的安裝配置024
2.2.1Windows下Apache的安裝配置024
2.2.2Windows下MySQL的安裝配置027
2.2.3Windows下PHP的安裝配置028
2.3在Windows下架設IIS+PHP的執行環境029
2.3.1IIS的安裝030
2.3.2架設PHP到IIS030
2.4Linux下Apache+MySQL+PHP的安裝配置032
2.4.1Linux下Apache的安裝配置032
2.4.2Linux下MySQL的安裝配置033
2.4.3Linux下PHP的安裝配置034
2.5獲取PHP的配置信息035
2.5.1Apache伺服器的基本配置035
2.5.2php.ini文件的基本配置035
2.6解決PHP的常見配置問題037
2.6.1解決Apache伺服器埠沖突037
2.6.2更改Apache伺服器默認存儲的文件路徑037
2.6.3在php.ini文件中更改上傳文件的大小037
2.6.4增加PHP擴展模塊038
2.6.5修改php.ini文件以支持MySQL資料庫038
2.7本章小結038
第3章PHP語言基礎039
3.1PHP常量040
3.1.1聲明和使用常量040
3.1.2預定義常量041
3.2PHP變數042
3.2.1理解變數042
3.2.2聲明變數043
3.2.3變數作用域043
3.2.4可變變數045
3.2.5預定義變數045
3.2.6變數的生存周期046
3.3數據類型046
3.3.1標量數據類型046
3.3.2復合數據類型050
3.3.3特殊數據類型051
3.3.4轉換數據類型052
3.3.5檢測數據類型053
3.4PHP的運算符054
3.4.1操作算術運算符054
3.4.2操作字元串運算符055
3.4.3操作賦值運算符055
3.4.4操作位運算符056
3.4.5遞增或遞減運算符056
3.4.6操作邏輯運算符057
3.4.7操作比較運算符058
3.4.8其他運算符059
3.4.9運算符的使用規則059
3.5PHP的表達式060
3.6自定義函數061
3.6.1定義和調用函數061
3.6.2在函數間傳遞參數062
3.6.3函數的返回值063
3.7本章小結064
第4章流程式控制制語句065
4.1演算法066
4.1.1什麼是演算法066
4.1.2演算法的描述方法066
4.1.3程序的3種控制結構067
4.2條件控制語句068
4.2.1if條件控制語句068
4.2.2switch多分支語句070
4.2.3if和switch語句的區別072
4.3循環語句074
4.3.1while循環語句074
4.3.2do...while循環語句076
4.3.3for循環語句077
4.3.4foreach循環語句078
4.3.5各循環語句間的區別079
4.4跳轉語句080
4.4.1break跳轉語句080
4.4.2continue跳轉語句081
4.4.3return跳轉語句082
4.5try…catch…throw語句083
4.6流程式控制制語句的嵌套083
4.7本章小結084
第5章 PHP與Web頁面交互085
5.1表單數據的提交方式086
5.1.1通過GET方法提交數據086
5.1.2通過POST方法提交數據087
5.2獲取提交的表單數據088
5.2.1獲取按鈕的數據088
5.2.2獲取文本區域的數據089
5.2.3獲取單選按鈕的數據090
5.2.4獲取復選框的數據091
5.2.5獲取列表框的數據092
5.2.6獲取文本域的數據093
5.2.7獲取文件域的數據094
5.2.8獲取隱藏域的數據094
5.3在PHP中處理表單變數095
5.4對表單傳遞的變數值進行編碼與解碼096
5.4.1URL編碼與解碼096
5.4.2BASE64編碼與解碼097
5.5本章小節098
第6章字元串操作099
6.1字元串簡介100
6.2單引號和雙引號的區別100
6.3字元串的連接符101
6.4字元串操作101
6.4.1去除字元串首尾空格和特殊字元101
6.4.2字元串與HTML相互轉換103
6.4.3轉義、還原字元串數據104
6.4.4獲取字元串的長度106
6.4.5截取字元串107
6.4.6比較字元串108
6.4.7檢索字元串111
6.4.8替換字元串113
6.4.9格式化字元串116
6.4.10連接、分割字元串117
6.4.11URL編碼解碼函數119
6.5本章小結121
第7章正則表達式122
7.1什麼是正則表達式123
7.1.1正則表達式的發展史123
7.1.2正則表達式中的術語123
7.2正則表達式的語法規則123
7.2.1行定位符(^和$)124
7.2.2單詞定界符(、B)125
7.2.3字元類([ ])125
7.2.4選擇字元(|)126
7.2.5連字元(-)127
7.2.6排除字元([^])127
7.2.7限定符(? * + {n,m})127
7.2.8點號字元(.)128
7.2.9轉義字元()128
7.2.10反斜線()128
7.2.11括弧字元(())129
7.2.12反向引用130
7.2.13捕獲130
7.2.14斷言(環視)130
7.2.15模式修飾符131
7.2.16模式匹配的順序131
7.3POSIX擴展正則表達式函數132
7.3.1ereg()函數和eregi()函數132
7.3.2ereg_replace()函數和eregi_replace()函數133
7.3.3split()函數和spliti()函數134
7.4PCRE兼容正則表達式函數135
7.4.1preg_grep()函數135
7.4.2preg_match()函數和preg_match_all()函數135
7.4.3preg_quote()函數137
7.4.4preg_replace()函數137
7.4.5preg_replace_callback()函數137
7.4.6preg_split()函數138
7.5本章小結138
第8章 PHP數組139
8.1數組的概述140
8.2數組的基本操作140
8.2.1聲明數組140
8.2.2輸出數組141
8.2.3定位數組141
8.2.4遍歷數組143
8.2.5增加、刪除數組元素147
8.2.6確定數組大小和惟一性149
8.2.7數組的排序150
8.2.8數組的合並與拆分151
8.2.9數組和字元串之間的轉換154
8.3其他數組函數155
8.3.1創建指定范圍的數組155
8.3.2對數組中的元素進行隨機排序156
8.3.3對數組中所有元素進行求和156
8.3.4將一維數組拆分為多維數組157
8.4PHP全局數組158
8.4.1$_SERVER[ ]全局數組158
8.4.2$_GET[ ]和$_POST[ ]全局數組158
8.4.3$_COOKIE全局數組158
8.4.4$_ENV[ ]全局數組158
8.4.5$_REQUEST[ ]全局數組158
8.4.6$_SESSION[ ]全局數組158
8.4.7$_FILES[ ]全局數組159
8.5本章小結160
第9章日期和時間161
9.1日期和時間的概述162
9.2處理日期和時間162
9.2.1獲取日期和時間163
9.2.2獲取日期和時間信息164
9.2.3檢驗日期和時間的有效性165
9.2.4輸出格式化的日期和時間166
9.3PHP的時間戳168
9.3.1PHP中的時間戳168
9.3.2獲取格林威治標准時間的時間戳168
9.3.3獲取本地化時間戳169
9.3.4獲取當前時間戳171
9.4本章小結171
第10章文件和目錄處理技術172
10.1文件處理技術的基本操作173
10.1.1打開文件173
10.1.2讀取文件173
10.1.3寫入文件178
10.1.4刪除文件179
10.1.5關閉文件179
10.1.6復制文件179
10.1.7移動和重命名文件180
10.2文件的高級處理技術180
10.2.1訪問遠程文件181
10.2.2測試文件指針的位置181
10.2.3文件指針的定位181
10.2.4鎖定文件183
10.3目錄操作技術183
10.3.1打開目錄183
10.3.2讀取目錄183
10.3.3建立目錄184
10.3.4刪除目錄184
10.3.5改變目錄185
10.3.6關閉目錄185
10.4文件上傳和下載技術185
10.4.1開啟PHP文件上傳功能185
10.4.2POST方法上傳文件186
10.4.3上傳多個文件187
10.4.4生成臨時文件188
10.4.5下載文件188
10.5本章小結189
第11章圖形圖像處理技術190
11.1GD函數庫的概述191
11.1.1Windows下打開GD2函數庫支持191
11.1.2Linux下打開GD2函數庫支持191
11.1.3應用GD2函數創建圖像192
11.2基本的圖像處理技術193
11.2.1創建畫布193
11.2.2設置顏色193
11.2.3生成圖像194
11.2.4銷毀圖像195
11.2.5繪制點與線195
11.2.6繪制幾何圖形197
11.2.7填充幾何圖形198
11.2.8輸出文字201
11.3Jpgraph的安裝與配置203
11.3.1Jpgraph的安裝204
11.3.2Jpgraph的配置204
11.4圖形圖像的典型應用204
11.4.1應用圖像處理技術生成驗證碼204
11.4.2應用圖像處理技術生成餅形圖206
11.4.3應用柱形圖統計商品月銷量208
11.4.4應用折線圖分析學習PHP的過程209
11.5本章小結210
第12章 Cookie和會話控制211
12.1概述212
12.1.1Cookie概述212
12.1.2會話控制212
12.2Cookie的操作212
12.2.1設置Cookie212
12.2.2訪問Cookie213
12.2.3刪除Cookie213
12.2.4Cookie數組214
12.3Cookie的應用215
12.4會話的操作216
12.4.1會話的基本方式216
12.4.2配置PHP的會話217
12.4.3創建會話217
12.5會話的應用219
12.5.1登錄驗證219
12.5.2通過Session禁用頁面刷新221
12.6本章小結222
第13章面向對象223
13.1概述224
13.1.1面向對象的概念224
13.1.2面向對象語言的3大特點224
13.1.3PHP 5.0面向對象的新特性225
13.2類和對象225
13.2.1類的結構及聲明方式225
13.2.2屬性和方法的定義225
13.2.3使用構造函數226
13.2.4使用析構函數227
13.2.5類的實例化227
13.3控制訪問許可權228
13.4類的繼承和重載228
13.4.1繼承的概念228
13.4.2PHP中實現繼承的方法228
13.4.3重載的概念229
13.4.4PHP中實現類重載的方法229
13.4.5用final關鍵字對繼承和重載進行限制229
13.5介面230
13.5.1介面的概念230
13.5.2PHP實現介面230
13.6PHP面向對象新特性231
13.6.1Per-Class常量的應用231
13.6.2對象的克隆231
13.6.3__autoload()方法232
13.6.4使用instanceof關鍵字判斷實例類型232
13.6.5使用this關鍵字調用類成員232
13.6.6使用parent關鍵字調用父類成員233
13.6.7使用self關鍵字調用類體中的靜態成員233
13.6.8輔助函數234
13.7PHP中面向對象的應用238
13.7.1應用面向對象的方式實現用戶身份驗證238
13.7.2數據的分頁顯示239
13.8本章小結241
第14章 MySQL資料庫基礎242
14.1MySQL概述243
14.1.1MySQL的特點243
14.1.2SQL和MySQL243
14.2MySQL伺服器的啟動和關閉244
14.2.1啟動MySQL伺服器244
14.2.2連接MySQL伺服器245
14.2.3關閉MySQL伺服器245
14.3操作資料庫246
14.3.1創建資料庫246
14.3.2選擇資料庫247
14.3.3刪除資料庫247
14.4操作數據表247
14.4.1創建表248
14.4.2修改表249
14.4.3刪除表249
14.5操作數據250
14.5.1添加語句(INSERT)250
14.5.2修改語句(UPDATE)251
14.5.3刪除語句(DELETE)251
14.5.4批量增加記錄語句(LOAD DATA和MYSQLIMPORT)251
14.6數據查詢語句252
14.6.1運用SELECT查詢(對數據表的選擇)252
14.6.2WHERE條件語句的應用253
14.6.3GROUP BY 對結果分組254
14.6.4DISTINCT在結果中去除重復行254
14.6.5ORDER BY對結果排序254
14.6.6LIKE應用255
14.6.7CONCAT聯合多列255
14.6.8LIMIT限定結果行數256
14.6.9使用函數和表達式256
14.7數據類型257
14.7.1數字類型257
14.7.2字元串類型258
14.7.3日期和時間數據類型259
14.8PhpMyAdmin圖形化管理工具260
14.8.1庫級操作260
14.8.2表級操作261
14.8.3增刪改數據262
14.8.4查詢數據263
14.8.5數據的導入與導出264
14.9本章小結266
第15章資料庫編程技術267
15.1PHP操縱MySQL資料庫268
15.1.1建立與MySQL資料庫的連接268
15.1.2選擇和使用MySQL資料庫268
15.1.3執行SQL指令269
15.1.4分析結果集269
15.1.5斷開與MySQL資料庫的連接270
15.2管理MySQL資料庫中的數據271
15.2.1向資料庫中添加數據271
15.2.2編輯資料庫數據272
15.2.3從資料庫中刪除數據274
15.2.4批量數據操作276
15.3對MySQL表的查詢277
15.3.1通用查詢277
15.3.2高級查詢279
15.3.3分組統計280
15.3.4對查詢結果分頁顯示282
15.3.5對查詢結果進行跳轉分頁顯示283
15.4數據備份和恢復286
15.5本章小結288
第16章PHP的字元編碼289
16.1了解網頁字元編碼290
16.1.1ASCII 字元集290
16.1.2ISO 8859 字元集290
16.1.3GB2312與GBK編碼290
16.1.4Unicode字元集291
16.1.5UTF-8編碼291
16.2PHP網頁的字元編碼292
16.2.1正確使用文件編碼292
16.2.2編碼轉換293
16.2.3檢測字元串的編碼294
16.2.4字元編碼的優先順序294
16.2.5亂碼產生的根源和解決方案295
16.3PHP開發中的中文編碼問題295
16.3.1資料庫中的字元集編碼問題295
16.3.2解決頁面中的亂碼問題296
16.3.3通過PHP自定義函數無亂碼截取中文字元串298
16.4PHP的區域化設置300
16.4.1PHP網頁的區域化301
16.4.2使用setlocale()函數設置區域化302
16.5本章小節302
第17章 PHP的調試與異常處理303
17.1基本調試策略304
17.2常見錯誤分析304
17.2.1語法錯誤304
17.2.2語義錯誤307
17.2.3注釋錯誤307
17.2.4運行錯誤308
17.2.5邏輯錯誤310
17.3PHP.INI中的錯誤處理設置310
17.4錯誤處理312
17.4.1錯誤的隱藏312
17.4.2錯誤的定製312
17.4.3超時錯誤的處理313
17.5程序調試313
17.5.1應用DIE語句調試313
17.5.2應用PRINT語句調試314
17.5.3應用MySQL_error語句輸出錯誤信息315
17.6MySQL的常見錯誤316
17.6.1PHP與MySQL連接錯誤316
17.6.2解決資料庫亂碼問題317
17.6.3上傳二進制數據到資料庫失敗317
17.7本章小結319
第18章PHP與XML的網路開發320
18.1XML的概述321
18.2XML語法321
18.2.1XML文檔結構321
18.2.2XML聲明321
18.2.3處理指令322
18.2.4XML注釋322
18.2.5XML元素322
18.2.6XML屬性323
18.2.7使用CDATA標記323
18.2.8XML命名空間324
18.3在PHP中創建XML文檔324
18.4通過DOM操作XML文檔325
18.4.1通過DOM類庫創建XML文檔325
18.4.2通過getElementsByTagName()方法讀取XML327
18.4.3通過DOM類庫向XML中添加數據328
18.4.4通過Xpath查詢XML中的數據330
18.4.5通過replaceChild()方法修改XML文檔331
18.4.6通過removeChild()方法刪除XML文檔334
18.5本章小結335
第19章 Smarty模板技術336
19.1Smarty簡介337
19.1.1什麼是Smarty337
19.1.2Smarty與MVC337
19.1.3Smarty的特點337
19.2Smarty的安裝配置337
19.2.1Smarty下載與安裝337
19.2.2第1個Smarty程序338
19.2.3配置Smarty339
19.3Smarty模板設計340
19.3.1Smarty模板文件340
19.3.2注釋340
19.3.3變數340
19.3.4修飾變數(variable modifers)343
19.3.5內建函數344
19.3.6自定義函數349
19.4Smarty程序設計351
19.4.1Smarty中的常用方法352
19.4.2Smarty的配置變數353
19.4.3Smarty緩存354
19.5本章小結354
第20章注冊和登錄355
20.1設計思路356
20.1.1功能闡述356
20.1.2程序業務流程356
20.1.3文件組織結構356
20.2資料庫設計357
20.3連接資料庫358
20.3.1關鍵函數358
20.3.2功能實現359
20.4用戶注冊模塊359
20.4.1關鍵函數359
20.4.2頁面設計360
20.4.3功能實現361
20.5檢測用戶是否被佔用362
20.5.1關鍵函數362
20.5.2頁面設計363
20.5.3功能實現364
20.6驗證用戶注冊信息是否合法365
20.6.1關鍵函數365
20.6.2功能實現365
20.7用戶登錄366
20.7.1關鍵函數366
20.7.2頁面設計367
20.7.3功能實現368
20.8圖片驗證碼功能369
20.8.1關鍵函數介紹369
20.8.2頁面設計371
20.8.3功能實現371
20.9退出登錄功能372
20.9.1關鍵函數372
20.9.2功能實現372
20.10本章小節372
第21章留言本373
21.1設計思路374
21.1.1功能闡述374
21.1.2程序業務流程374
21.1.3文件組織結構375
21.2資料庫設計376
21.3連接資料庫377
21.3.1關鍵函數介紹377
21.3.2功能實現377
21.4添加留言模塊378
21.4.1關鍵函數378
21.4.2頁面設計378
21.4.3功能實現380
21.5查看留言模塊381
21.5.1關鍵函數381
21.5.2頁面設計381
21.5.3功能實現381
21.6修改留言模塊383
21.6.1關鍵函數383
21.6.2頁面設計384
21.6.3功能實現385
21.7刪除留言模塊386
21.7.1關鍵函數386
21.7.2頁面設計386
21.7.3功能實現387
21.8查詢留言模塊388
21.8.1關鍵函數388
21.8.2頁面設計388
21.8.3功能實現389
21.9本章小結390
第22章電子商務391
22.1需求分析392
22.2系統分析和設計392
22.2.1可行性分析392
22.2.2功能結構分析和設計392
22.2.3系統流程概述393
22.2.4開發環境394
22.3資料庫設計394
22.3.1資料庫的分析395
22.3.2創建資料庫395
22.3.3創建數據表395
22.3.4數據表的結構395
22.4技術准備398
22.4.1代碼書寫規則398
22.4.2網站架設之初398
22.4.3文件管理規劃399
22.5前台開發399
22.5.1設計分析399
22.5.2前台首頁的實現399
22.5.3商品展示模塊的實現402
22.5.4購物車的實現405
22.5.5收銀台的實現408
22.5.6用戶登錄模塊的實現409
22.5.7本站公告模塊的實現417
22.6後台開發418
22.6.1設計分析418
22.6.2後台首頁418
22.6.3後台登錄模塊420
22.6.4商品信息管理模塊422
22.6.5簡訊管理模塊426
22.6.6訂單信息管理模塊428
22.7電子商務完整清單431
22.8本章小結432
第23章播客433
23.1了解播客434
23.1.1播客起源434
23.1.2播客的發展前景434
23.2系統設計435
23.2.1系統功能概述435
23.2.2系統功能結構435
23.2.3系統流程概述436
23.2.4開發環境437
23.2.5文件夾組織結構437
23.3Adodb類庫的安裝配置437
23.4資料庫設計438
23.4.1資料庫的分析438
23.4.2創建資料庫438
23.4.3創建數據表438
23.5前台開發439
23.5.1設計分析439
23.5.2在線播放功能的實現440
23.5.3最新推出功能的實現448
23.5.4上傳視頻文件功能的實現450
23.5.5視頻下載功能的實現452
23.5.6創建播客個人主頁453
23.5.7站內訂閱457
23.5.8訂閱管理458
23.6後台開發462
23.6.1設計分析462
23.6.2上傳視頻管理功能的實現463
23.6.3動態創建視頻文件類型465
23.6.4管理員管理466
23.7本章小結468
附錄實例快速檢索469