饒如炎
?
基于PHP技術(shù)的學(xué)院網(wǎng)站建設(shè)——以廈門海洋職業(yè)技術(shù)學(xué)院某系網(wǎng)站為例
饒如炎
(廈門海洋職業(yè)技術(shù)學(xué)院,福建 廈門 361102)
在學(xué)院網(wǎng)站建設(shè)實(shí)踐的基礎(chǔ)上,分析了ASP與PHP兩種技術(shù)在校園網(wǎng)站建設(shè)中存在的優(yōu)缺點(diǎn),設(shè)計(jì)了基于PHP的網(wǎng)站建設(shè)技術(shù)、數(shù)據(jù)庫設(shè)計(jì)技術(shù)、網(wǎng)頁制作技術(shù)及網(wǎng)站安全等方面相結(jié)合的學(xué)院網(wǎng)站設(shè)罝結(jié)構(gòu),并根據(jù)相關(guān)實(shí)驗(yàn)數(shù)據(jù)預(yù)計(jì)今后要繼續(xù)解決的問題和改善的方向。
網(wǎng)站建設(shè);設(shè)計(jì)結(jié)構(gòu);PHP;ASP;MVC
隨著計(jì)算機(jī)與互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,在Internet上發(fā)布信息已經(jīng)成為人們獲取信息的關(guān)鍵渠道,網(wǎng)站以其快捷、無距離和互動(dòng)性等特點(diǎn)在眾多媒體中脫穎而出,正在成為政府、學(xué)校、企業(yè)和社會團(tuán)體等進(jìn)行信息發(fā)布、形象展示、業(yè)務(wù)拓展、客戶服務(wù)、內(nèi)部溝通等的重要陣地。以“信息網(wǎng)絡(luò)推動(dòng)校園文化及校園文化建設(shè)”日益成為院校教育教學(xué)改革的中心和重點(diǎn),學(xué)院網(wǎng)站不僅是學(xué)院對外宣傳的重要窗口,同時(shí)也是學(xué)院教學(xué)與科研的重要平臺。各大院校都建設(shè)有學(xué)校門戶網(wǎng)站、各行政職能部門網(wǎng)站、各二級學(xué)院網(wǎng)站及各系部網(wǎng)站等信息化辦公平臺,來滿足日常教學(xué)、信息發(fā)布及校園文化宣傳等多種需求。系部網(wǎng)站的建設(shè)在很大程度上體現(xiàn)了一個(gè)高校信息化建設(shè)的水平,是學(xué)校實(shí)施信息化教學(xué)的強(qiáng)力支撐[1]。
本文以廈門海洋職業(yè)技術(shù)學(xué)院某系部網(wǎng)站建設(shè)過程為例,在分析ASP和PHP兩種技術(shù)優(yōu)缺點(diǎn)的基礎(chǔ)上,著重討論基于PHP的網(wǎng)站建設(shè)技術(shù)、數(shù)據(jù)庫設(shè)計(jì)技術(shù)、網(wǎng)頁制作技術(shù)及網(wǎng)站安全等方面的問題。
ASP和PHP都是動(dòng)態(tài)網(wǎng)站的開發(fā)技術(shù),但它們之間在理論基礎(chǔ)與開發(fā)實(shí)踐上卻存在著巨大的差別。在著手開發(fā)之前,對ASP和PHP進(jìn)行了深入的分析,現(xiàn)將二者的差異及優(yōu)缺點(diǎn)比較如下。
ASP開發(fā)的程序不具備跨平臺性,一般情況下只能運(yùn)行于微軟的服務(wù)器之上,在Unix和Linux等其它服務(wù)器上運(yùn)行是比較困難的。
PHP則具有良好的跨平臺性,能夠得到IIS和Apache等WEB服務(wù)器的支持,廣泛地運(yùn)行中Windows、Unix和Linux等各種系統(tǒng)之上。
ASP在程序開發(fā)時(shí)主要使用VBScript和JavaScript兩種腳本語言進(jìn)行編寫,ASP網(wǎng)站的開發(fā)可以用微軟的Dreamweaver,作為嵌入在HTML中的服務(wù)器編程語言。當(dāng)客戶端請求網(wǎng)頁時(shí),ASP文件先由服務(wù)器端解釋執(zhí)行,再將執(zhí)行結(jié)果以HTML形式返回到客戶端瀏覽器顯示。
PHP大量借用了C、JAVA和Perl語言的語法,并綜合了C、JAVA和Perl語言的的精華,同時(shí)也結(jié)合自己的特性進(jìn)行編寫,PHP的開發(fā)工具用Dreamweaver、Zend Studio、phped等。當(dāng)訪問者瀏覽到該頁面時(shí),服務(wù)器端PHP語言引擎會首先對頁面中的PHP命令進(jìn)行處理,然后把處理后的結(jié)果連同HTML內(nèi)容一起返回給訪問端的瀏覽器。
ASP常用的數(shù)據(jù)庫有ACCESS和SQL,一般的虛擬主機(jī)用戶或者小站點(diǎn)用戶都是用ACCESS作為自己的站點(diǎn)數(shù)據(jù)庫,大型的站點(diǎn)一般都是用SQL。ASP連接數(shù)據(jù)庫時(shí),一般都是使用ODBC通過ADO進(jìn)行連接,連接方式較為單一。
PHP有十分強(qiáng)大的數(shù)據(jù)庫操作功能,可直接連接多種數(shù)據(jù)庫,目前應(yīng)用最廣泛的是PHP與MySQL的組合。PHP提供的數(shù)據(jù)庫接口支持不統(tǒng)一,比如對Oracle、MySQL、Sybase等的接口彼此都不一樣。
由于大多數(shù)ASP程序都要借助IIS才能運(yùn)行,而IIS本身就存在漏洞,是黑客們攻擊的主要目標(biāo),嚴(yán)重威脅到了ASP網(wǎng)站的安全。
PHP運(yùn)行在Apache上,Apache開放源代碼一般不存在系統(tǒng)漏洞,擁有很好的安全性,同時(shí)Unix和Linux等運(yùn)行平臺安全漏洞較少,因而PHP在安全性方面具有很大的優(yōu)勢,是目前為止,公認(rèn)安全性最好的一種技術(shù)[2]。
(1)ASP技術(shù)的優(yōu)勢與不足
ASP的優(yōu)勢可概括為:安裝簡單、容易上手、輔助工具多樣化、效率高。由于ASP是Microsoft公司的產(chǎn)品,所以在調(diào)試環(huán)境安裝、腳本編寫、輔助工具等方面都有很好的支持和更廣泛的技術(shù)參考資料。
ASP技術(shù)的不足之處在于:Windows本身的特別是IIS組件的漏洞都會一成不變地累加到ASP身上,所以ASP開發(fā)的程序,其安全性、穩(wěn)定性和跨平臺性都會因?yàn)榕cNT的捆綁而顯現(xiàn)出來。
(2)PHP技術(shù)的優(yōu)勢與不足
PHP技術(shù)的優(yōu)勢在于它能快速學(xué)習(xí)、跨平臺、有良好的數(shù)據(jù)庫開發(fā)能力,語法簡單,書寫容易。PHP提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫接口,數(shù)據(jù)庫連接方面,有較強(qiáng)的兼容性和可擴(kuò)展性,可以進(jìn)行面向?qū)ο缶幊?。同時(shí),與Apache及其他擴(kuò)展庫結(jié)合緊密,極有效地利用了Apache高性能的吞吐能力。
不足之處在于:PHP的所有擴(kuò)展接口都是由獨(dú)立的團(tuán)隊(duì)開發(fā)完成的,因而為了讓應(yīng)用支持更多的數(shù)據(jù)庫,需要開發(fā)人員將同樣的數(shù)據(jù)庫操作使用不同的代碼寫出很多種代碼庫來,讓程序員的工作量大大增加。此外,PHP環(huán)境安裝比較復(fù)雜,由于缺少企業(yè)級的支持和正規(guī)的商業(yè)支持,所以也無法實(shí)現(xiàn)商業(yè)化應(yīng)用的開發(fā)。
通過學(xué)習(xí),了解到對于比較大型的網(wǎng)站,諸如對事務(wù)處理和負(fù)載均衡要求較高的站點(diǎn),采用ASP和JSP的比較多,而從成本考慮,比較經(jīng)濟(jì)的站點(diǎn)采用PHP可能是最好的選擇。因此,出于經(jīng)濟(jì)、安全、高效及可擴(kuò)展性等方面考慮,擬采用PHP+MySQL+Apache的黃金組合,著手開發(fā)與建設(shè)網(wǎng)站。
根據(jù)網(wǎng)站的定位及建設(shè)目標(biāo),學(xué)院下屬系部作為相對獨(dú)立的機(jī)構(gòu),在網(wǎng)站建設(shè)方面除了要兼顧學(xué)院門戶網(wǎng)站的主要功能外,還需要保持其自身特色之處,如相對詳細(xì)的網(wǎng)站首頁、系部簡介、通知公告欄等[3]。本網(wǎng)站針對學(xué)院的定位及發(fā)展目標(biāo),設(shè)立以下10個(gè)欄目:
網(wǎng)站首頁:本網(wǎng)站的首頁頁面。
本系新聞:本欄目以動(dòng)態(tài)內(nèi)容為主,主要介紹本系部最新資訊文章、相關(guān)新聞動(dòng)態(tài)及通知公告等。
本系概況:本欄目以靜態(tài)內(nèi)容為主,主要介紹本系部簡介、組織結(jié)構(gòu)、師資力量等。
黨團(tuán)建設(shè):本欄目以動(dòng)態(tài)內(nèi)容和靜態(tài)內(nèi)容相結(jié)合,分別介紹本系部黨建工作、組織結(jié)構(gòu)、規(guī)章制度、黨員發(fā)展、組織生活、學(xué)習(xí)實(shí)踐及活動(dòng)掠影等黨建工作,以及本系部團(tuán)學(xué)工作、學(xué)工動(dòng)態(tài)、共青團(tuán)工作、學(xué)生日產(chǎn)管理及心理咨詢等團(tuán)學(xué)工作。
學(xué)生風(fēng)采:本欄目以動(dòng)態(tài)內(nèi)容為主,主要介紹本系部學(xué)生組織的各項(xiàng)活動(dòng),包括團(tuán)日活動(dòng)、文體活動(dòng)、主題班會等。
教學(xué)教研:本欄目以動(dòng)態(tài)內(nèi)容和靜態(tài)內(nèi)容相結(jié)合,主要介紹本系部教學(xué)科研工作、精品課程設(shè)計(jì)、實(shí)驗(yàn)室建設(shè)、專業(yè)建設(shè)及教學(xué)管理等。
教研室:本欄目以靜態(tài)內(nèi)容為主,主要介紹本系部各教研室相關(guān)專業(yè),包括各專業(yè)培養(yǎng)目標(biāo)、人才培養(yǎng)基本規(guī)格要求與職業(yè)能力、畢業(yè)規(guī)定及主干課程與主要實(shí)踐實(shí)訓(xùn)環(huán)節(jié)等。
招生就業(yè):本欄目以動(dòng)態(tài)內(nèi)容為主,主要介紹招生就業(yè)情況、招生主題及就業(yè)之窗等。
培訓(xùn)考證:本欄目以靜態(tài)內(nèi)容為主,內(nèi)容包括各專業(yè)培訓(xùn)、考證要求等相關(guān)信息。
下載空間:本欄目以動(dòng)態(tài)內(nèi)容為主,內(nèi)容包括最新下載資料等。
根據(jù)實(shí)際需求,對各項(xiàng)功能進(jìn)行集中、分塊,按照結(jié)構(gòu)化程序設(shè)計(jì)的要求,得到如圖1所示的系統(tǒng)功能模塊圖,為了更快速高效的開發(fā)出站點(diǎn),網(wǎng)站采用MVC模式進(jìn)行設(shè)計(jì)開發(fā)。
圖1 系統(tǒng)功能模塊圖
圖2 MVC開發(fā)模式
3.3.1 MVC開發(fā)模式
網(wǎng)站開發(fā)是一個(gè)系統(tǒng)工程,主要需要三方面的人員進(jìn)行緊密配合,設(shè)計(jì)人員使用Photoshop設(shè)計(jì)界面;前臺開發(fā)人員,把設(shè)計(jì)圖切圖,轉(zhuǎn)換為HTML語言;服務(wù)器端程序開發(fā)人員開發(fā)服務(wù)器端程序。傳統(tǒng)的網(wǎng)站開發(fā),是設(shè)計(jì)人員先設(shè)計(jì)好界面,設(shè)計(jì)完畢后,由前臺開發(fā)人員進(jìn)行切圖寫HTML頁面,最后才是服務(wù)器端程序人員把PHP代碼嵌套在HTML頁面中。采用傳統(tǒng)方式開發(fā)網(wǎng)站,開發(fā)周期長,開發(fā)人員之間需互相等待對方進(jìn)度;代碼冗長,且可讀性差,維護(hù)難。為了加快開發(fā)進(jìn)度,提高開發(fā)效率,適應(yīng)網(wǎng)站后期的界面改版和程序升級需要,網(wǎng)站采用了流行的MVC開發(fā)模式,網(wǎng)站整體分為數(shù)據(jù)層(M)、視圖層(V)、控制層(C)進(jìn)行設(shè)計(jì)。數(shù)據(jù)層專注于服務(wù)器端程序?qū)?shù)據(jù)庫的訪問和操作,視圖層采用“模板”技術(shù),對每個(gè)頁面設(shè)計(jì)獨(dú)立于服務(wù)器端程序的模板。控制層根據(jù)實(shí)際需要,控制視圖層的顯示。MVC開發(fā)模式如圖2所示。
3.3.2 數(shù)據(jù)層M的實(shí)現(xiàn)
數(shù)據(jù)層主要是對數(shù)據(jù)庫的訪問和操作,并返回操作的結(jié)果。程序可以簡寫為如下函數(shù)部分,其中$sql為數(shù)據(jù)庫SQL語句,$result為執(zhí)行結(jié)果數(shù)組:
function getModelData($sql)
{
$result = array();
$source = mysql_query($sql);
while($row = mysql_fetch_array($source))
{
$result[] = $row;
}
return $result;
}
3.3.3 視圖層V的實(shí)現(xiàn)
3.3.4 控制層C的實(shí)現(xiàn)
控制層C通過客戶端傳遞的參數(shù),進(jìn)行判斷獲取具體的數(shù)據(jù)層提供的數(shù)據(jù)M和調(diào)用視圖層V,獲取視圖層V后,使用替換函數(shù)str_replace()把模板中的特殊關(guān)鍵字,如{title}替換為具體的內(nèi)容。程序可以簡寫為:
$sql=”select * from 表名”;
$result=getModelData($sql);
//讀入模板文件 index.tpl
$file=fopen(“index.tpl”,”r”);
$tpl_content = fread($file, filesize (“index.tpl”));
//使用str_replace()替換模板中的特殊關(guān)鍵字
$content = str_replace(“{title}”, $result[0][“title”], $tpl_content);
$content. = str_replace(“{…}”, $result[0][“..”], $tpl_content);
……….
echo $content; //輸出內(nèi)容至客戶端
MVC開發(fā)模式的優(yōu)勢在于,參與網(wǎng)站設(shè)計(jì)的三方面人員可以獨(dú)立工作,且互不干擾,不存在互相等待對方完成任務(wù)而產(chǎn)生怠工現(xiàn)象。同時(shí),在該模式中,數(shù)據(jù)層、控制層和視圖層三層獨(dú)立,邏輯結(jié)構(gòu)清晰,有利于程序的維護(hù)和升級,特別是在對網(wǎng)站界面進(jìn)行改版時(shí),可以維持?jǐn)?shù)據(jù)層和控制層的內(nèi)容不變,只需修改視圖層即可。
數(shù)據(jù)庫在一個(gè)信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)的好壞將直接對應(yīng)用系統(tǒng)的效率以及實(shí)現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)可以提高數(shù)據(jù)存儲的效率,保證數(shù)據(jù)的完整性和一致行。同時(shí),合理的數(shù)據(jù)庫結(jié)構(gòu)也將有利于程序的實(shí)現(xiàn)。一個(gè)好的數(shù)據(jù)庫應(yīng)滿足一些嚴(yán)格的約束和要求,要盡量分離各實(shí)體對應(yīng)的表,一個(gè)實(shí)體對應(yīng)一張表,搞清楚該有哪些屬性,對應(yīng)有些什么字段,以及各實(shí)體之間有何種聯(lián)系。實(shí)體、屬性和聯(lián)系是進(jìn)行概念設(shè)計(jì)時(shí)要考慮的三個(gè)元素,也是一個(gè)好的數(shù)據(jù)庫設(shè)計(jì)的核心。
3.4.1 數(shù)據(jù)庫設(shè)計(jì)
設(shè)計(jì)數(shù)據(jù)庫系統(tǒng)時(shí)應(yīng)該首先充分了解用戶各個(gè)方面的需求,包括現(xiàn)有的以及將來可能增加的需求。在仔細(xì)分析調(diào)查有關(guān)學(xué)院網(wǎng)站需要的基礎(chǔ)上,針對一般學(xué)院系部網(wǎng)站設(shè)計(jì)的需求,在MySQL數(shù)據(jù)庫系統(tǒng)中設(shè)計(jì)如下所示的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):
(1)管理員信息,包括數(shù)據(jù)項(xiàng):用戶名、密碼、權(quán)限、擁有管理權(quán)的欄目、擁有審核權(quán)的欄目、擁有添加權(quán)的欄目等。
(2)普通用戶信息,包括數(shù)據(jù)項(xiàng):用戶名、密碼、權(quán)限、最后登錄IP、最后登錄時(shí)間、最后退出時(shí)間、登錄次數(shù)等。
(3)文章信息,包括數(shù)據(jù)項(xiàng):所屬欄目、文章標(biāo)題、標(biāo)題顏色、標(biāo)題字型、完整標(biāo)題、關(guān)鍵字、作者、來源、編輯、更新時(shí)間等、評分等級、點(diǎn)擊數(shù)、下載次數(shù)、閱讀點(diǎn)數(shù)等。
(4)圖片信息,包括數(shù)據(jù)項(xiàng):圖片編號、所屬欄目、圖片名稱、標(biāo)題顏色、標(biāo)題字型、關(guān)鍵字、錄入時(shí)間、圖片評分等級、點(diǎn)擊次數(shù)、查看等級、查看點(diǎn)數(shù)等。
3.4.2 數(shù)據(jù)庫訪問設(shè)計(jì)
在PHP中,為了使用mysql函數(shù)庫訪問MySQL數(shù)據(jù)庫,需要在PHP的配置文件php.ini中將“;extension=php_mysql.dll”修改為“extension=php_mysql.dll”(即刪掉該選項(xiàng)前面的注釋符號“;”),然后再重新啟動(dòng)Web服務(wù)器(如Apache等)[4]。
在PHP中,可以使用mysql_connect()函數(shù),建立與MySQL數(shù)據(jù)庫服務(wù)器的連接,其語法格式為:
mysql_connect([server[,username[,password]]])
在PHP中,要選中某個(gè)MySQL數(shù)據(jù)庫,可以使用mysql_select_db()函數(shù),其語法格式為:
mysql_select_db(database_name[,link_identifier])
選中某個(gè)數(shù)據(jù)庫后,即可對該數(shù)據(jù)庫執(zhí)行各種具體的操作,如記錄的檢索,增加、修改與刪除以及表的創(chuàng)建與刪除等。對數(shù)據(jù)庫的各種操作,都是通過提交并執(zhí)行相應(yīng)的SQL語句來實(shí)現(xiàn)的。在PHP中,使用mysql_query()函數(shù)提交并執(zhí)行SQL語句,其語法格式為:
mysql_query(query_statement[,link_identifier])
在開發(fā)本網(wǎng)站的過程中,筆者采用軟件工程中結(jié)構(gòu)化程序設(shè)計(jì)的方法及要求,按以下步驟進(jìn)行系統(tǒng)集成,如圖3所示。
圖3 系統(tǒng)集成框架
網(wǎng)站建設(shè)是一項(xiàng)系統(tǒng)工程,通過系統(tǒng)地學(xué)習(xí)和了解網(wǎng)站的構(gòu)建過程,考慮到經(jīng)濟(jì)性、安全性和可擴(kuò)展性等,本文選擇PHP+MySQL+Apache進(jìn)行開發(fā),這些軟件工具簡單實(shí)用,容易學(xué)習(xí),共享開源,實(shí)踐表明:此次網(wǎng)站設(shè)計(jì)具有一定的實(shí)用性、可行性和可操作性,滿足廣大用戶的需求。
在后期的網(wǎng)站中,要根據(jù)學(xué)院的教學(xué)和管理要求,及時(shí)更新數(shù)據(jù),并進(jìn)一步做好網(wǎng)站安全工作,使其發(fā)揮更大的作用。
[1] 馮英健.網(wǎng)站營銷基礎(chǔ)與實(shí)踐[M].北京:清華大學(xué)出版社,2004,第二版.
[2] 杜闖.PHP在動(dòng)態(tài)網(wǎng)站開發(fā)中的優(yōu)勢[J].電腦知識與技術(shù),2010,6(13):3342-3344.
[3] 李神速,榮祺,陳昌輝.關(guān)于學(xué)院網(wǎng)站建設(shè)若干問題的探討[J].上海:上海應(yīng)用技術(shù)學(xué)院學(xué)報(bào),2006,6(1):44-48.
[4] 徐輝,盧守東,蔣曹清.PHP Web程序設(shè)計(jì)教程與實(shí)驗(yàn)[M].北京:清華大學(xué)出版社,2008:189-192.
College Website Construction Based on PHP Technology
RAO Ru-yan
(Xiamen Ocean Vocational College,Fujian 361102,China)
On the basis of the practical construction of college website, this article analyses the advantages and disadvantages of ASP and PHP technologies in the construction of college website, puts forward a comprehensive design solution to college website construction based on the PHP website construction technology, the database design technology, the web pages construction technology and the website security and predicts on the basis of relevant experimental findings the problems to be solved in the future with some improvement suggestions.
Website Construction; Structural Design; PHP; ASP; MVC
2010-09-10
饒如炎(1983-),男,福建龍巖人,助理實(shí)驗(yàn)師,研究方向:計(jì)算機(jī)應(yīng)用技術(shù)、網(wǎng)絡(luò)管理。
TP393.18
A
1673-1417(2010)04-0010-05