PHP開(kāi)發(fā)環(huán)境搭建及網(wǎng)站制作

時(shí)間:2022-04-09 03:54:00

導(dǎo)語(yǔ):PHP開(kāi)發(fā)環(huán)境搭建及網(wǎng)站制作一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

PHP開(kāi)發(fā)環(huán)境搭建及網(wǎng)站制作

隨著Web技術(shù)的發(fā)展,采用傳統(tǒng)營(yíng)銷和網(wǎng)絡(luò)營(yíng)銷相結(jié)合的方式已成為各類公司發(fā)展的必然選擇。在網(wǎng)絡(luò)營(yíng)銷中比較有效的手段是建立一個(gè)適合自己公司規(guī)模的網(wǎng)站[1-2]。目前網(wǎng)站開(kāi)發(fā)的主流平臺(tái)有LAMP(Linux操作系統(tǒng)、Apache網(wǎng)絡(luò)服務(wù)器、MySQL數(shù)據(jù)庫(kù)、php編程語(yǔ)言),J2EE和“.Net”商業(yè)軟件。由于PHP、MYSQL具有免費(fèi)、開(kāi)源等多方面優(yōu)點(diǎn),因此受到整個(gè)IT界的關(guān)注。從網(wǎng)站的流量來(lái)說(shuō),70%以上的訪問(wèn)流量是LAMP來(lái)提供的,LAMP是最強(qiáng)大的網(wǎng)站解決方案[3]。

本文將結(jié)合一個(gè)職場(chǎng)咨詢網(wǎng)站———卓企網(wǎng)的開(kāi)發(fā)過(guò)程,對(duì)基于PHP與MYSQL數(shù)據(jù)庫(kù)相結(jié)合的網(wǎng)站開(kāi)發(fā)所涉及的開(kāi)發(fā)環(huán)境,需求分析,功能模塊,數(shù)據(jù)庫(kù)操作與安全等進(jìn)行分析與討論。

1開(kāi)發(fā)環(huán)境分析

1.1開(kāi)發(fā)語(yǔ)言的選擇

作為當(dāng)今網(wǎng)站開(kāi)發(fā)的3種主流語(yǔ)言:ASP.NET、PHP、JSP,它們存在的各自優(yōu)點(diǎn)與不足如表1所示[4-5]。本項(xiàng)目確定以PHP為開(kāi)發(fā)的語(yǔ)言環(huán)境的原因:

1)免費(fèi)。因?yàn)轫?xiàng)目較小不適合采用付費(fèi)的ASP.NET和JSP的開(kāi)發(fā)平臺(tái)。

2)支持性強(qiáng)。中國(guó)現(xiàn)在很多中小型網(wǎng)站甚至一些大型網(wǎng)站,如百度、新浪等都加入了PHP的大家庭,從而能更簡(jiǎn)單地解決開(kāi)發(fā)過(guò)程中遇到的各種難題。

3)移植性好。盡管最初是被設(shè)計(jì)用于基于Linux的ApacheWeb服務(wù)器系統(tǒng),但現(xiàn)在的PHP已經(jīng)被移植到了任何操作系統(tǒng)并兼容任何標(biāo)準(zhǔn)Web服務(wù)器軟件,即絕大部分的Web主機(jī)提供商都會(huì)支持PHP,因此根據(jù)需要更改主機(jī)將會(huì)非常方便。

4)語(yǔ)言簡(jiǎn)單。由于PHP同C編程語(yǔ)言有很多相似之處,對(duì)于熟悉相關(guān)語(yǔ)法的開(kāi)發(fā)人員來(lái)說(shuō),PHP則非常容易上手。

5)發(fā)展迅速。由于是開(kāi)放源代碼產(chǎn)品,PHP將繼續(xù)快速發(fā)展,更為重要的是相關(guān)漏洞補(bǔ)丁將免費(fèi)地定期植入到核心庫(kù)中。此外還有PHP實(shí)現(xiàn)對(duì)加密的支持以及對(duì)各種數(shù)據(jù)庫(kù)服務(wù)器的支持等。

1.2開(kāi)發(fā)環(huán)境搭建

目前,基于PHP的開(kāi)發(fā)平臺(tái)較多。一般開(kāi)發(fā)人員喜歡LAMP的開(kāi)發(fā)環(huán)境,有一定開(kāi)發(fā)經(jīng)驗(yàn)的人可以選擇相關(guān)的服務(wù)器、數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理軟件和操作系統(tǒng)來(lái)構(gòu)建自己的PHP開(kāi)發(fā)平臺(tái)。為了便于開(kāi)發(fā)人員更好地利用PHP來(lái)開(kāi)發(fā)網(wǎng)站,市場(chǎng)上也出現(xiàn)了多種集成的PHP開(kāi)發(fā)環(huán)境,如AMPS-erv,WAMP,XMAPP,AppServ,PHPStudy。目前主流的是ZendStudioPHP集成開(kāi)發(fā)環(huán)境。ZendStudio包括了PHP開(kāi)發(fā)所有必須的部件,通過(guò)一整套編輯、調(diào)試、分析、優(yōu)化和數(shù)據(jù)庫(kù)工具。ZendStudio縮短了開(kāi)發(fā)周期,簡(jiǎn)化了復(fù)雜的應(yīng)用方案,已經(jīng)成為目前最強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境。ZendStudio的強(qiáng)大之處,除了一般編輯器所具有的代碼高亮、語(yǔ)法自動(dòng)縮進(jìn)、書簽功能外,其內(nèi)置的調(diào)試器可以支持本地和遠(yuǎn)程(debugserv-er)2種調(diào)試模式,支持諸如跟蹤變量、單步運(yùn)行、斷點(diǎn)、堆棧信息、函數(shù)調(diào)用、查看實(shí)時(shí)輸出等多種高級(jí)調(diào)試功能。另外,最新版(ZendStudio5.5.1)對(duì)中文的支持也是非常穩(wěn)定的[6]。

1.3環(huán)境搭建注意事項(xiàng)

對(duì)于對(duì)PHP開(kāi)發(fā)環(huán)境不甚了解的開(kāi)發(fā)人員建議不要自己搭配開(kāi)發(fā)環(huán)境,各軟件的版本之間支持性不一樣有可能會(huì)造成版本沖突,而且復(fù)雜的配置問(wèn)題也很難解決。此外在正式開(kāi)發(fā)之前還應(yīng)注意如下問(wèn)題。

1)PHP語(yǔ)言版本問(wèn)題。開(kāi)發(fā)前,必須確定要使用的版本和服務(wù)器所支持的版本是否一致?,F(xiàn)在主要存在2種版本:PHP4和PHP5。不同版本對(duì)SESSION、異常處理、函數(shù)、變量有效范圍和支持的數(shù)據(jù)類型等都有不同。前期若不注意這些問(wèn)題會(huì)給后期的開(kāi)發(fā)帶來(lái)很多不必要的麻煩與不安全。

2)服務(wù)器問(wèn)題。Windows平臺(tái)上,用PHP寫的程序要求是部署在apache服務(wù)器上。如果部署在IIS上,可能由于IIS對(duì)PHP支持不是很好,經(jīng)常出現(xiàn)一些莫名其妙的問(wèn)題。并且IIS使用中,有些設(shè)置必須要手工修改。比如上傳文件時(shí),需要設(shè)置可寫權(quán)限,還要重新設(shè)置上傳文件大小,比較煩瑣。而使用apache服務(wù)器則不存在這些問(wèn)題。

3)數(shù)據(jù)庫(kù)問(wèn)題。PHP可以使用的數(shù)據(jù)庫(kù)管理系統(tǒng)有MySQL、ORACLE等。MySQL由于開(kāi)源、免費(fèi)、小巧、高效而受到開(kāi)發(fā)人員一致的青睞。對(duì)于中、小型應(yīng)用系統(tǒng),MySQL是一款非常理想的數(shù)據(jù)庫(kù)服務(wù)器軟件。除了支持標(biāo)準(zhǔn)的ANSISQL語(yǔ)句外,它還支持多種平臺(tái)。在Unix/Linux系統(tǒng)上,MySQL也支持多線程運(yùn)行方式。和PHP、Apache一樣,MySQL也屬于開(kāi)放源代碼軟件。MySQL對(duì)其提供權(quán)限訪問(wèn)、建立、刪除等一系列支持,使之成為中小型PHP網(wǎng)站的首選。

2基于PHP語(yǔ)言的開(kāi)發(fā)模型

PHP語(yǔ)言以其免費(fèi)、開(kāi)源等多方面優(yōu)點(diǎn),逐步成為中小型企業(yè)網(wǎng)站開(kāi)發(fā)語(yǔ)言的首選。具體開(kāi)發(fā)步驟如下:

2.1需求分析

一個(gè)網(wǎng)站項(xiàng)目的確立是建立在各種各樣的需求上面的,這種需求往往來(lái)自于客戶的實(shí)際需求或者出于公司自身發(fā)展的需要,其中客戶的實(shí)際需求占了絕大部分。面對(duì)網(wǎng)站開(kāi)發(fā)擁有不同知識(shí)層面的客戶,項(xiàng)目負(fù)責(zé)人對(duì)用戶需求的理解程度,在很大程度上決定了此類網(wǎng)站開(kāi)發(fā)項(xiàng)目的成敗,因此,如何更好地的了解、分析、明確用戶需求,并且能夠準(zhǔn)確、清晰以文檔的形式表達(dá)給參與項(xiàng)目開(kāi)發(fā)的每個(gè)成員,保證開(kāi)發(fā)過(guò)程按照滿足用戶需求為目的正確項(xiàng)目開(kāi)發(fā)方向進(jìn)行,是每個(gè)網(wǎng)站開(kāi)發(fā)項(xiàng)目管理者需要面對(duì)的問(wèn)題。除了基本的用戶需求分析要點(diǎn)(模塊、流程、帶寬、最大同時(shí)訪問(wèn)量等)外,需求分析還需要注意以下問(wèn)題:①需求分析來(lái)自項(xiàng)目接收方的負(fù)責(zé)人或由其確定或認(rèn)可;②需求最好以文件方式確定下來(lái);③與需求方進(jìn)行深入有效的分析與討論,告知其需求的可行性和代價(jià)。

2.2功能模塊設(shè)計(jì)

根據(jù)需求得出的需求報(bào)告在與客戶進(jìn)行討論之后得到的雙方都認(rèn)可的確定稿之后,網(wǎng)站的開(kāi)發(fā)人員根據(jù)高內(nèi)聚低耦合的思想結(jié)合相關(guān)的知識(shí)與經(jīng)驗(yàn)結(jié)合成若干大模塊。

2.3數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)施

包含需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì)、系統(tǒng)實(shí)施、運(yùn)行與維護(hù)等多個(gè)階段。在數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)施的各個(gè)環(huán)節(jié)應(yīng)注意以下問(wèn)題:網(wǎng)站數(shù)據(jù)庫(kù)是網(wǎng)站的核心,數(shù)據(jù)安全性至關(guān)重要。數(shù)據(jù)損壞、丟失、被非法復(fù)制都會(huì)引起很多不必要的麻煩,而且有時(shí)會(huì)帶來(lái)非常大的不良影響與損失,甚至觸犯他人的合法利益,且造成的錯(cuò)誤很難恢復(fù)。MYSQL數(shù)據(jù)庫(kù)采取以下安全措施[7]:

1)賬戶安全。MySQL每一賬戶都由用戶名、密碼以及位置(一般由服務(wù)器名、IP或通配符)組成,其包括合理權(quán)限和安全檢查。合理權(quán)限的目的就是通過(guò)給不同類型的賬戶賦予不同的權(quán)限,給同一用戶不同數(shù)據(jù)庫(kù)或數(shù)據(jù)表以不同權(quán)限來(lái)實(shí)現(xiàn)在保證數(shù)據(jù)庫(kù)安全的前提下進(jìn)行合理的授權(quán)。MySQL數(shù)據(jù)庫(kù)主要使用3種不同類型的安全檢查:登錄驗(yàn)證、授權(quán)、訪問(wèn)控制。

2)存儲(chǔ)數(shù)據(jù)加密[8]。在應(yīng)用程序的大量信息中,也許你只想對(duì)很小的一部分進(jìn)行加密,如用戶的密碼等。這些密碼不應(yīng)該以明文的形式保存,它們應(yīng)該以加密的形式保存在數(shù)據(jù)庫(kù)中。一般情況下,大多數(shù)系統(tǒng)(這其中包括MySQL本身)都是使用哈希算法對(duì)敏感數(shù)據(jù)進(jìn)行加密的。

3)數(shù)據(jù)庫(kù)字符集與編碼[9]。安裝的Web服務(wù)器軟件,例如Apache,默認(rèn)的編碼都不是UTF-8。當(dāng)從以UTF-8編碼的頁(yè)面中的表單輸入數(shù)據(jù)時(shí),前臺(tái)瀏覽正常,在phpMyAdmin里查看時(shí),中文則變成亂碼。解決辦法可以將MySQL的默認(rèn)編碼改成UTF-8或連接數(shù)據(jù)庫(kù)時(shí)指定數(shù)據(jù)的編碼(mysqli_query($dbc,“SETNAMES‘UTF8’”),就可以告知MySQL采用UTF-8編碼傳輸數(shù)據(jù)了[10]。

4)功能模塊實(shí)現(xiàn)。功能模塊實(shí)現(xiàn)的要求:盡量少的代碼,盡量詳盡的注釋,盡量工整的書寫形式。功能模塊實(shí)現(xiàn)的目標(biāo)為:高復(fù)用性、高可靠性、高效率、高安全性、高可讀性等。

3實(shí)例

以PHP語(yǔ)言為基礎(chǔ),開(kāi)發(fā)了職場(chǎng)咨詢網(wǎng)站———卓企網(wǎng)。卓企網(wǎng)主要包括檢索模塊、專家咨詢模塊、維護(hù)模塊、會(huì)員互動(dòng)模塊、問(wèn)題討論模塊、文檔瀏覽模塊、登陸注冊(cè)模塊、幫助模塊和其他輔助模塊等九大模塊,如圖1所示。

圖1卓企網(wǎng)包括的模塊

每一個(gè)大模塊包括一些功能模塊,如在卓企網(wǎng)的會(huì)員互動(dòng)模塊中,包括留言、顯示留言、刪除留言等。實(shí)現(xiàn)“留言”模塊的前臺(tái)代碼如圖2所示,與之對(duì)應(yīng)的后臺(tái)處理代碼如圖3所示。

圖2“留言”模塊的前臺(tái)處理代碼

圖3“留言”模塊的后臺(tái)處理代碼

具體的流程是用戶在留言窗口(如圖4)留言并點(diǎn)擊提交后頁(yè)面將相關(guān)數(shù)據(jù)傳送至后臺(tái)處理頁(yè)面,后臺(tái)處理代碼調(diào)用用戶的session值查找對(duì)應(yīng)的身份信息后將留言插入數(shù)據(jù)庫(kù),待正確無(wú)誤后跳轉(zhuǎn)回留言頁(yè)面并刷新留言板,從而用戶可以馬上就看到自己的留言(圖5)。

由于PHP語(yǔ)言的免費(fèi)、開(kāi)源、高可靠性、可移植性,并且可與MYSQL數(shù)據(jù)庫(kù)、Apache服務(wù)器完美結(jié)合,逐步已經(jīng)成為當(dāng)今網(wǎng)站的主流。