国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > PHP > 正文

Web技術(shù)進(jìn)階—PHP構(gòu)建網(wǎng)站

2024-05-04 23:04:21
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  當(dāng)建設(shè)一個(gè)網(wǎng)站的時(shí)候,絕大多數(shù)時(shí)候不僅需要它能夠提供靜態(tài)網(wǎng)頁(yè)訪問能力,還希望它能和瀏覽器用戶交互、訪問后臺(tái)數(shù)據(jù)庫(kù)提供實(shí)時(shí)更新的信息等等,一句話,要提供動(dòng)態(tài)網(wǎng)頁(yè)服務(wù)能力。這時(shí),你是選擇傳統(tǒng)方式的cgi呢,還是選擇php、asp等服務(wù)器端腳本呢? 

  ■從cgi到服務(wù)器端腳本 

  創(chuàng)建動(dòng)態(tài)網(wǎng)頁(yè)的標(biāo)準(zhǔn)方式是cgi,這種方式允許web服務(wù)器運(yùn)行一個(gè)cgi程序來(lái)回應(yīng)瀏覽器的請(qǐng)求。除了要遵從簡(jiǎn)單的cgi標(biāo)準(zhǔn)之外,cgi程序的開發(fā)與普通程序開發(fā)沒有什么區(qū)別。然而,隨著要生成的動(dòng)態(tài)網(wǎng)頁(yè)的數(shù)量和復(fù)雜程度的增加,這種方式就遇到了困難。 

  cgi程序包括兩個(gè)主要部分,一個(gè)是程序代碼,另一個(gè)是要輸出的html文檔內(nèi)容,可以稱作html代碼。最早的者既是程序員,又是網(wǎng)頁(yè)設(shè)計(jì)者,但是那時(shí)的頁(yè)面都比較簡(jiǎn)單,開發(fā)者最關(guān)心的是程序代碼的問題,頁(yè)面代碼基本上不需要太多的調(diào)整。而隨著包括dhtml、javascript在內(nèi)的技術(shù)發(fā)展,使得頁(yè)面可以設(shè)計(jì)得非常復(fù)雜,而由于出現(xiàn)了各種cgi的程序庫(kù),程序代碼則變得簡(jiǎn)單多了。這樣每進(jìn)行一次頁(yè)面代碼的調(diào)整,cgi程序就需要改動(dòng),以至于最后在cgi程序調(diào)試中,調(diào)試html代碼的工作量超過了調(diào)試程序代碼的工作量。這說(shuō)明在中,html代碼的重要性已經(jīng)十分明顯,使得傳統(tǒng)的以程序代碼為中心的cgi程序不再是最適合的動(dòng)態(tài)網(wǎng)頁(yè)處理方式了。 

  這樣,相當(dāng)多的程序員對(duì)于這種調(diào)整html代碼的工作感到厭倦,尤其隨著internet的商業(yè)化,編寫cgi程序和進(jìn)行html頁(yè)面設(shè)計(jì)已經(jīng)成為了兩種不同的職業(yè)。為了解決這個(gè)問題,程序員首先使用了模板文件的方法將程序代碼和html代碼分開,cgi程序讀取模板文件來(lái)獲得html代碼,從而使得在對(duì)頁(yè)面進(jìn)行較小調(diào)整的時(shí)候,不需要改動(dòng)cgi程序。 

  基本上每個(gè)程序員在自己的cgi程序中使用自定義的模板,然而,如果有一種通用的html模板,使用通用的程序進(jìn)行預(yù)處理,這樣不就大大減少了程序設(shè)計(jì)的工作量嗎?最簡(jiǎn)單的模板可以通過替換模板中預(yù)定義的變量來(lái)完成解釋工作,由于這種程序簡(jiǎn)單而有效,因此就被集成在web服務(wù)器中,以提供比cgi程序更高的效率,這就是最早的服務(wù)器端腳本。 

  這些早期的服務(wù)器端腳本,例如出現(xiàn)在ncsa httpd的ssi,只包括變量的概念,但沒有控制語(yǔ)句的概念。后來(lái),不同的程序開發(fā)者重新開發(fā)了支持控制語(yǔ)句,甚至支持子程序的腳本解釋處理程序,使得這些程序不僅能為特定的動(dòng)態(tài)網(wǎng)頁(yè)服務(wù),而且能夠進(jìn)行編程,因而能夠完成cgi程序能完成的所有工作,成為了一種新的編程語(yǔ)言。同樣是由于性能的緣故,這些程序被合并入web服務(wù)器本身,這就它成為的一種新形式。 

  ■來(lái)自開放資源的php 

  當(dāng)前,服務(wù)器端腳本已經(jīng)是開發(fā)動(dòng)態(tài)網(wǎng)頁(yè)的常用方式,雖然cgi仍然具備靈活的優(yōu)勢(shì),但在一般情況下,使用服務(wù)器端腳本更容易和方便。然而,與cgi不同的是,服務(wù)器端腳本沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn),不同的服務(wù)器端腳本使用各自的語(yǔ)法。當(dāng)前比較常用的有:active server pages(asp),coldfusion,java servlets,personal home page(php)等。這些技術(shù)中,既包括有大公司支持的軟件,如asp,也包括通過internet進(jìn)行合作開發(fā)的開放源代碼軟件,如php。 

  php正是這樣一種服務(wù)器端腳本語(yǔ)言,它最開始是由rasums lerdorf編寫的,只是一個(gè)簡(jiǎn)單的用perl語(yǔ)言編寫的cgi程序,用于記錄訪問他自己的網(wǎng)頁(yè)的訪問者。以后它又被用c語(yǔ)言重新寫過,范圍擴(kuò)大到訪問數(shù)據(jù)庫(kù)。在這期間,有許多人向rasums lerdorf要此程序的拷貝,以便自己使用,rasums lerdorf為此寫了一些介紹此程序的文檔,并發(fā)布了php v1.0。以后,越來(lái)越多的人使用php,并強(qiáng)烈要求增加一些其他的特性,如循環(huán)語(yǔ)句和數(shù)組變量等,這時(shí)其他的一些程序員也開始參與php源碼的編寫,對(duì)php進(jìn)行了重新編寫,php v3.0就出現(xiàn)了。當(dāng)前,使用php的網(wǎng)站已經(jīng)超過80萬(wàn),并且還在不斷地增加。 

  除了向?yàn)g覽器發(fā)送動(dòng)態(tài)網(wǎng)頁(yè)之外,php還能發(fā)送不同http頭標(biāo)識(shí),使其能提供網(wǎng)頁(yè)重定位、與web服務(wù)器的安全認(rèn)證結(jié)合的能力、以及設(shè)置cookie。php能提供與多種數(shù)據(jù)庫(kù)直接互聯(lián)的能力,包括mysql、sybase、informix、oracle、mssql等,也能支持odbc。并通過額外的庫(kù)能夠支持會(huì)話管理和xml處理(這些庫(kù)都是基本的庫(kù),因此也是php用戶的基本配置)。從這里我們可以看出,php已經(jīng)不再是簡(jiǎn)單的服務(wù)器端腳本了,按照《php3瀏覽器應(yīng)用編程》的作者david medinets的話,php是一種應(yīng)用服務(wù)器。因?yàn)樗粌H僅包括一個(gè)完整的編程語(yǔ)言,而且還包括完整的訪問數(shù)據(jù)庫(kù)的能力、支持internet協(xié)議(如電子郵件和http)的能力,這一整套技術(shù)使得php能與asp、coldfusion、websphere互較短長(zhǎng)。 

  要運(yùn)行php,通常使用linux或freebsd作為操作系統(tǒng),使用apache作為web服務(wù)器。當(dāng)然使用其他操作系統(tǒng)也同樣可行,這是因?yàn)閜hp是一種跨平臺(tái)的軟件,這當(dāng)然得益于它是開放源代碼的軟件。但是,如果不使用apache服務(wù)器,那么php就只能以cgi的方式運(yùn)行,這樣就不能利用將php編譯進(jìn)apache帶來(lái)的性能優(yōu)勢(shì)。當(dāng)從www.php3.net中下載了最新版本的php并安裝配置完畢之后,就可以使用編輯器或網(wǎng)頁(yè)制作軟件來(lái)編寫php代碼了。如果你能使用c或perl進(jìn)行編程,就會(huì)發(fā)現(xiàn)php編程并不復(fù)雜,作為程序語(yǔ)言的php比c簡(jiǎn)單,比perl易懂。下面是一個(gè)最簡(jiǎn)單的嵌入php程序的頁(yè)面。

  〈html〉 
  〈head〉〈title〉test〈/title〉〈/head〉 

  〈body〉 

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

  〈h1〉hello,〈?php echo $string ?〉〈/h1〉 

  〈/body〉 

  〈/html〉   

  在html網(wǎng)頁(yè)中嵌入的php代碼,需要以標(biāo)記結(jié)束。上面這個(gè)頁(yè)面將顯示hello,world!的結(jié)果。這里可以看出,php程序語(yǔ)法與c或perl非常類似。事實(shí)上,php來(lái)源于c和perl,支持c和perl大部分語(yǔ)法和操作符,因此使用php對(duì)c和perl程序員都是非常簡(jiǎn)單的事情。 


  ■選擇php 

  雖然php已經(jīng)十分流行,但在國(guó)內(nèi)了解它的人卻很少,這當(dāng)然是因?yàn)樗皇巧虡I(yè)軟件,缺乏市場(chǎng)運(yùn)作。即使在聽說(shuō)過php的人們中,不少人也抱有這樣的看法,php既沒有商業(yè)公司的支持,又缺乏商業(yè)的圖形化開發(fā)工具,php能夠和asp等商業(yè)軟件一樣有前途嗎?的確,asp由于有微軟公司的支持,使得它迅速變得十分流行,現(xiàn)在書店中充斥著asp的相關(guān)書籍,而很少能找到介紹php的著作,正說(shuō)明了國(guó)內(nèi)的這種流行趨勢(shì)。然而,過去一年中整個(gè)互聯(lián)網(wǎng)中php使用者穩(wěn)步增長(zhǎng)的事實(shí),卻與這些觀點(diǎn)截然相反。我認(rèn)為那些不看重php的人至少忽略了以下幾個(gè)原因: 

  1. php已經(jīng)證明是非常實(shí)用的軟件,性能、可靠性、穩(wěn)定性非常高,借一個(gè)來(lái)自武俠小說(shuō)的比喻,php就如同來(lái)自江湖下層一步步成名的草莽英雄,而商業(yè)軟件則如同出身高貴的少年俠士,其成名的原因與其師傅和門派密切相關(guān)。php具備各種數(shù)據(jù)類型并支持復(fù)雜的文本處理,它甚至支持面向?qū)ο螅芘渲脼樘幚韝ml等等;更為重要的是php的這些功能都是非常實(shí)用的,要知道php的開發(fā)者都是根據(jù)自己的需要自愿進(jìn)行的開發(fā),它具備的功能一定是有著實(shí)際用途的。雖不能說(shuō)php比同類產(chǎn)品強(qiáng),但其實(shí)力不容忽視。 

  2. php是跨平臺(tái)的產(chǎn)品,它能運(yùn)行在多種unix以及windows nt上,并能訪問多種不同的數(shù)據(jù)庫(kù),對(duì)很多人來(lái)講,這一點(diǎn)非常重要。商業(yè)產(chǎn)品通常要求非常苛刻,只能和特定的操作系統(tǒng)和數(shù)據(jù)庫(kù)相互協(xié)作。而人們喜歡使用自己已經(jīng)熟悉的操作系統(tǒng)、web服務(wù)器和數(shù)據(jù)庫(kù),如linux、apache和mysql。 

  3. php是開放源代碼的軟件,很多人對(duì)此不以為然,然而他們忽視了占web服務(wù)器市場(chǎng)58%的apache服務(wù)器,忽視了linux、freebsd等開放源代碼的操作系統(tǒng),這些開放源代碼的軟件結(jié)合在一起,就形成了一個(gè)非常有效的解決方案。 

  4. 即便不考慮源代碼的因素,php不需要任何費(fèi)用的特點(diǎn)也是商業(yè)軟件無(wú)法相比的。雖然asp也是免費(fèi)的,然而很多人忽視了運(yùn)行windows nt及ms sql的費(fèi)用,而php和linux/freebsd、apache、mysql相互合作,幾乎不需要任何軟件費(fèi)用,當(dāng)前如果不考慮盜版,究竟有多少人還會(huì)堅(jiān)持asp呢? 

  5. php有良好的技術(shù)支持,可以通過電子郵件、論壇、網(wǎng)頁(yè)、irc等方式獲得技術(shù)支持。這聽起來(lái)有些好笑,難道這比商業(yè)軟件的技術(shù)支持更有效嗎?事實(shí)上依我個(gè)人使用商業(yè)軟件和開放源代碼軟件的經(jīng)驗(yàn),這種技術(shù)支持形式相當(dāng)不錯(cuò),設(shè)想一下,你能夠得到來(lái)自asp開發(fā)組的技術(shù)服務(wù)嗎?我想更常見的結(jié)果是在一通800電話之后,得到的只是一堆無(wú)用的建議,最后你終于厭倦了轉(zhuǎn)來(lái)轉(zhuǎn)去的電話。即便是現(xiàn)場(chǎng)服務(wù),也許是某個(gè)工程師在一遍又一遍地重裝系統(tǒng),直到系統(tǒng)偶然地運(yùn)行正常為止,這樣也好,系統(tǒng)管理員至少可以裝作什么都不懂的樣子稍事休息一下。而開放源代碼使你能提出更接近故障本質(zhì)的現(xiàn)象,不但遇到過同樣現(xiàn)象的使用者會(huì)提供幫助,php的開發(fā)者也能提供幫助。有什么技術(shù)支持比幾十萬(wàn)個(gè)使用者,其中大多數(shù)都是使用php的老手,提供的幫助更有效呢。 

  無(wú)論如何,商業(yè)支持并不是一個(gè)軟件流行的必要條件,反過來(lái)倒是正確的,最近的例子linux不就是由于流行而得到了商業(yè)支持的嗎?例如最新版本的網(wǎng)頁(yè)制作工具dreamwaver 3.0,也開始支持php的標(biāo)記,允許在其中直接進(jìn)行php代碼的編寫了。越來(lái)越多的國(guó)內(nèi)者也開始將目光投向php,其中大多數(shù)選擇了unix (linux,freebsd, solaris, aix, hp-ux等等)作為web站點(diǎn)的操作系統(tǒng),而國(guó)內(nèi)出版計(jì)算機(jī)圖書的出版社也會(huì)陸續(xù)出版一些php的著作,顯然這又會(huì)有利于php的推廣和發(fā)展。

  • 本文來(lái)源于網(wǎng)頁(yè)設(shè)計(jì)愛好者web開發(fā)社區(qū)http://www.html.org.cn收集整理,歡迎訪問。
  • 發(fā)表評(píng)論 共有條評(píng)論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 保山市| 白水县| 宜兰市| 边坝县| 清原| 瑞昌市| 孙吴县| 虎林市| 丘北县| 平湖市| 淮安市| 海丰县| 长顺县| 辽源市| 东至县| 淮阳县| 黄石市| 罗田县| 海林市| 高台县| 河池市| 临海市| 东莞市| 灵寿县| 射洪县| 海宁市| 白银市| 舞阳县| 渭南市| 稻城县| 阳朔县| 商河县| 永昌县| 阳山县| 十堰市| 额尔古纳市| 棋牌| 泰兴市| 大悟县| 内乡县| 会昌县|