Web技術進階—PHP構建網站_PHP教程

來源:互聯網
上載者:User
當建設一個網站的時候,絕大多數時候不僅需要它能夠提供靜態網頁訪問能力,還希望它能和瀏覽器使用者互動、訪問後台資料庫提供即時更新的資訊等等,一句話,要提供動態網頁服務能力。這時,你是選擇傳統方式的CGI呢,還是選擇PHP、ASP等伺服器端指令碼呢?

  ■從CGI到伺服器端指令碼

  建立動態網頁的標準方式是CGI,這種方式允許Web伺服器運行一個CGI程式來回應瀏覽器的請求。除了要遵從簡單的CGI標準之外,CGI程式的開發與普通程式開發沒有什麼區別。然而,隨著要產生的動態網頁的數量和複雜程度的增加,這種方式就遇到了困難。

  CGI程式包括兩個主要部分,一個是程式碼,另一個是要輸出的HTML文檔內容,可以稱作HTML代碼。最早的Web開發人員既是程式員,又是網頁設計者,但是那時的頁面都比較簡單,開發人員最關心的是程式碼的問題,頁面代碼基本上不需要太多的調整。而隨著包括DHTML、javascript在內的技術發展,使得頁面可以設計得非常複雜,而由於出現了各種CGI的程式庫,程式碼則變得簡單多了。這樣每進行一次頁面代碼的調整,CGI程式就需要改動,以至於最後在CGI程式調試中,調試HTML代碼的工作量超過了偵錯工具代碼的工作量。這說明在Web開發中,HTML代碼的重要性已經十分明顯,使得傳統的以程式碼為中心的CGI程式不再是最適合的動態網頁處理方式了。

  這樣,相當多的程式員對於這種調整HTML代碼的工作感到厭倦,尤其隨著Internet的商業化,編寫CGI程式和進行HTML頁面設計已經成為了兩種不同的職業。為瞭解決這個問題,程式員首先使用了模板檔案的方法將程式碼和HTML代碼分開,CGI程式讀模數板檔案來獲得HTML代碼,從而使得在對頁面進行較小調整的時候,不需要改動CGI程式。

  基本上每個程式員在自己的CGI程式中使用自訂的模板,然而,如果有一種通用的HTML模板,使用通用的程式進行預先處理,這樣不就大大減少了程式設計的工作量嗎?最簡單的模板可以通過替換模板中預定義的變數來完成解釋工作,由於這種程式簡單而有效,因此就被整合在Web伺服器中,以提供比CGI程式更高的效率,這就是最早的伺服器端指令碼。

  這些早期的伺服器端指令碼,例如出現在ncsa httpd的SSI,只包括變數的概念,但沒有控制語句的概念。後來,不同的程式開發人員重新開發了支援控制語句,甚至支援子程式的指令碼解釋處理常式,使得這些程式不僅能為特定的動態網頁服務,而且能夠進行編程,因而能夠完成CGI程式能完成的所有工作,成為了一種新的程式設計語言。同樣是由於效能的緣故,這些程式被合并入Web伺服器本身,這就它成為Web開發的一種新形式。

  ■來自開放資源的PHP

  當前,伺服器端指令碼已經是開發動態網頁的常用方式,雖然CGI仍然具備靈活的優勢,但在一般情況下,使用伺服器端指令碼更容易和方便。然而,與CGI不同的是,伺服器端指令碼沒有一個統一的標準,不同的伺服器端指令碼使用各自的文法。當前比較常用的有:Active Server Pages(ASP),ColdFusion,Java Servlets,Personal Home Page(PHP)等。這些技術中,既包括有大公司支援的軟體,如ASP,也包括通過Internet進行合作開發的開放原始碼軟體,如PHP。

  PHP正是這樣一種伺服器端指令碼語言,它最開始是由Rasums Lerdorf編寫的,只是一個簡單的用Perl語言編寫的CGI程式,用於記錄訪問他自己的網頁的訪問者。以後它又被用C語言重新寫過,範圍擴大到訪問資料庫。在這期間,有許多人向Rasums Lerdorf要此程式的拷貝,以便自己使用,Rasums Lerdorf為此寫了一些介紹此程式的文檔,並發布了PHP v1.0。以後,越來越多的人使用PHP,並強烈要求增加一些其他的特性,如迴圈語句和陣列變數等,這時其他的一些程式員也開始參與PHP源碼的編寫,對PHP進行了重新編寫,PHP v3.0就出現了。當前,使用PHP的網站已經超過80萬,並且還在不斷地增加。

  除了向瀏覽器發送動態網頁之外,PHP還能發送不同HTTP頭標識,使其能提供網頁重定位、與Web伺服器的安全認證結合的能力、以及設定Cookie。PHP能提供與多種資料庫直接互聯的能力,包括MySQL、Sybase、Informix、Oracle、MsSQL等,也能支援ODBC。並通過額外的庫能夠支援會話管理和XML處理(這些庫都是基本的庫,因此也是PHP使用者的基本配置)。從這裡我們可以看出,PHP已經不再是簡單的伺服器端指令碼了,按照《PHP3瀏覽器應用編程》的作者David Medinets的話,PHP是一種應用伺服器。因為它不僅僅包括一個完整的程式設計語言,而且還包括完整的訪問資料庫的能力、支援Internet協議(如電子郵件和HTTP)的能力,這一整套技術使得PHP能與ASP、ColdFusion、WebSphere互較短長。

  要運行PHP,通常使用Linux或FreeBSD作為作業系統,使用Apache作為Web伺服器。當然使用其他動作系統也同樣可行,這是因為PHP是一種跨平台的軟體,這當然得益於它是開放原始碼的軟體。但是,如果不使用Apache伺服器,那麼PHP就只能以CGI的方式運行,這樣就不能利用將PHP編譯進Apache帶來的效能優勢。當從www.php3.net中下載了最新版本的PHP並安裝配置完畢之後,就可以使用編輯器或網頁製作軟體來編寫PHP代碼了。如果你能使用C或Perl進行編程,就會發現PHP編程並不複雜,作為程式語言的PHP比C簡單,比Perl易懂。下面是一個最簡單的嵌入PHP程式的頁面。

本新聞共2頁,當前在第1頁 1 2


〈HTML〉
  〈HEAD〉〈TITLE〉Test〈/TITLE〉〈/HEAD〉

  〈BODY〉

  〈?PHP $string = ’world!’; ?〉

  〈H1〉Hello,〈?php echo $string ?〉〈/H1〉

  〈/BODY〉

  〈/HTML〉  

  在HTML網頁中嵌入的PHP代碼,需要以標記結束。上面這個頁面將顯示Hello,world!的結果。這裡可以看出,PHP程式文法與C或Perl非常類似。事實上,PHP來源於C和Perl,支援C和Perl大部分文法和操作符,因此使用PHP對C和Perl程式員都是非常簡單的事情。


  ■選擇PHP

  雖然PHP已經十分流行,但在國內瞭解它的人卻很少,這當然是因為它不是商業軟體,缺乏市場運作。即使在聽說過PHP的人們中,不少人也抱有這樣的看法,PHP既沒有商業公司的支援,又缺乏商業的圖形化開發工具,PHP能夠和ASP等商業軟體一樣有前途嗎?的確,ASP由於有微軟公司的支援,使得它迅速變得十分流行,現在書店中充斥著ASP的相關書籍,而很少能找到介紹PHP的著作,正說明了國內的這種流行趨勢。然而,過去一年中整個互連網中PHP使用者穩步增長的事實,卻與這些觀點截然相反。我認為那些不看重PHP的人至少忽略了以下幾個原因:

  1. PHP已經證明是非常實用的軟體,效能、可靠性、穩定性非常高,借一個來自武俠小說的比喻,PHP就如同來自江湖下層一步步成名的草莽英雄,而商業軟體則如同出身高貴的少年俠士,其成名的原因與其師傅和門派密切相關。PHP具備各種資料類型並支援複雜的文本處理,它甚至支援物件導向,能配置為處理XML等等;更為重要的是PHP的這些功能都是非常實用的,要知道PHP的開發人員都是根據自己的需要自願進行的開發,它具備的功能一定是有著實際用途的。雖不能說PHP比同類產品強,但其實力不容忽視。

  2. PHP是跨平台的產品,它能運行在多種Unix以及Windows NT上,並能訪問多種不同的資料庫,對很多人來講,這一點非常重要。商業產品通常要求非常苛刻,只能和特定的作業系統和資料庫相互協作。而人們喜歡使用自己已經熟悉的作業系統、Web伺服器和資料庫,如Linux、Apache和MySQL。

  3. PHP是開放原始碼的軟體,很多人對此不以為然,然而他們忽視了占Web伺服器市場58%的Apache伺服器,忽視了Linux、FreeBSD等開放原始碼的作業系統,這些開放原始碼的軟體結合在一起,就形成了一個非常有效解決方案。

  4. 即便不考慮原始碼的因素,PHP不需要任何費用的特點也是商業軟體無法相比的。雖然ASP也是免費的,然而很多人忽視了運行Windows NT及MS SQL的費用,而PHP和Linux/FreeBSD、Apache、MySQL相互合作,幾乎不需要任何軟體費用,當前如果不考慮盜版,究竟有多少人還會堅持ASP呢?

  5. PHP有良好的支援人員,可以通過電子郵件、論壇、網頁、IRC等方式獲得支援人員。這聽起來有些好笑,難道這比商業軟體的支援人員更有效嗎?事實上依我個人使用商業軟體和開放原始碼軟體的經驗,這種支援人員形式相當不錯,設想一下,你能夠得到來自ASP開發組的技術服務嗎?我想更常見的結果是在一通800電話之後,得到的只是一堆無用的建議,最後你終於厭倦了轉來轉去的電話。即便是現場服務,也許是某個工程師在一遍又一遍地重裝系統,直到系統偶然地運行正常為止,這樣也好,系統管理員至少可以裝作什麼都不懂的樣子稍事休息一下。而開放原始碼使你能提出更接近故障本質的現象,不但遇到過同樣現象的使用者會提供協助,PHP的開發人員也能提供協助。有什麼支援人員比幾十萬個使用者,其中大多數都是使用PHP的老手,提供的協助更有效呢。

  無論如何,商業支援並不是一個軟體流行的必要條件,反過來倒是正確的,最近的例子Linux不就是由於流行而得到了商業支援的嗎?例如最新版本的網頁製作工具DreamWaver 3.0,也開始支援PHP的標記,允許在其中直接進行PHP代碼的編寫了。越來越多的國內Web開發人員也開始將目光

http://www.bkjia.com/PHPjc/532430.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/532430.htmlTechArticle當建設一個網站的時候,絕大多數時候不僅需要它能夠提供靜態網頁訪問能力,還希望它能和瀏覽器使用者互動、訪問後台資料庫提供即時更...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.