ASP開發web站點

說明:由於行文倉促及作者水平有限,難免有錯,歡迎來信指正。一般的大型網站目前已經越來越少的使用ASP來架構,不過在中小型商務站點上,ASP依然佔據了較大的市場範圍。ASP以其簡單,開發週期短,易維護的優點受到中小型站點管理員的青睞。不過,據我所知,完全使用ASP來集成更新維護網站的僅常見於那些真正的商務站點或者比較成熟的技術站點,更多的網站僅僅有一些獨立的欄目在使用ASP程序。這樣的特點是站點管理過於分散,比如:每進入一個欄目管理都要輸入不同的帳號和密碼。不僅浪費管理員的精力,更加重了網站的維護困難程度。而我們看見的那些單欄目使用的ASP程序有很多是從網上尋找的源代碼,這樣使你的網站安全性也會受到一定的威脅,因為網上提供的源代碼都是開放的,每個人都可以研究這個代碼,當然後果你也知道,ASP的安全性本來就是一個受用戶長期關注的問題,而被開放的源代碼更是危險。當然我並不是不贊成大家使用網上的源代碼,只是希望各位能夠注意這個問題,不要完全信奉拿來主義,該修改的地方還是要修改,該打補丁的地方還是要打上補丁(當然絕不是讓你去修改人家的版權信息)。綜上所述,我覺得凡是對ASP有一定瞭解的人都可以自己開發一套整站系統,並且使集成化的。本專題的目的就是為了指引大家如何建立一套完整的web動態站點。為了使各個層次的讀者都能看懂本文,有必要先講講下面這些話:

如果你是初學者,你應該掌握什麼?
必要的VBscript和Javascript。vbs作為主要的ASP程序編寫語言來自於Visual Basic,學過VB的人可以很快的掌握,Javascript就不用說了,嵌入在網頁裡面,客戶端使用平凡的腳本語言。你最好擁有一定的HTML語言知識,不然會覺得很惱火。

SQL語句基礎亦是基礎!
初期你不必掌握全部,基本的就可以了。

前提:我們將用最基本的語句和功能編寫一套web動態站點的整站系統。

您只要認真看完此專題,可以基本掌握web整站開發的思想,並已能賦予實際應用。當然,隨學習的深入,您可以加入更多的功能或對程序算法進行改進。
(1)對網站進行需求分析:

很多人都忽略了這一點,他們認為開發web站點程序不需要用軟件工程的思想,實際上最後會導致web站點的無序化,比如:一些人想到要開發什麼站點想都不想,直接開始寫代碼,想到什麼就寫什麼,直到他們寫完之後,才發現我還需要什麼功能沒有寫,然後就立刻返回加代碼。這樣的話,使得程序極易出錯。所以一開始的時候還是建議你像軟件工程一樣,制定web站點開發的需求分析,應包括所開發web系統的基本要求,如:功能,性能,用戶群,基本的數據流程和處理流程,安全與保密的要求。web系統的目標,條件、假設、限制等。

詳細一點來說,就以我們的站點來說,它是一個技術型站點,就應包括新聞系統、文章系統、下載系統等等,那麼這些系統需要具備哪些功能就是我們要分析的問題。

下面我們就從實例來分析要實現的功能:

新聞系統:一個新聞系統最重要的一點就是能夠實時的把新聞傳達給用戶,那麼新聞系統應該具備哪些功能?發佈時間,點擊次數,插入圖片,以及對新聞來源赫作者的一些註釋。當然發佈時間這些都是非常容易實現的功能。插入圖片可以使用html功能,ubb轉換表或上傳圖片來解決,這些方法本文就不再一一闡述,大家可以參考有關資料。

實際上,不管對於什麼系統,當你在一開始對其需求進行了詳細分析之後,實現起來肯定比想到哪寫道哪輕鬆高效。如果方便的話用電腦或者紙將web系統的開發需求記錄下來,在開發過程中也可以進行參考。這裡還不得不提的一個話題是關於用戶驗證的,一般我們對用戶的驗證使用的是session和cookie,Session變量和cookies是同一類型的。如果某用戶將瀏覽器設置為不兼容任何cookie,那麼該用戶就無法使用這個Session變量及cookies。一般來說,對於網站管理員的操作我個人推薦使用session,因為我們的主題是開發web整站,那麼管理員肯定要在多個管理頁面中跳轉,在這裡session是非常方便的。若是對用戶進行驗證,那麼可以使用cookies,比如用戶可以設置強制瀏覽器把cookie存儲在計算機上面,只需要使用response. cookies的Expires屬性就可以輕鬆的做到,還有一點就是因為sessionID的信息是非常容易丟失的,對於用戶這種長時間訪問的集群,則必須通過在用戶的web瀏覽器中存儲一個專用的cookie,並且把cookie信息保存到數據庫中來創建一個用戶標識。

上面這一節我們講到了web整站開發的先期需求分析,就我個人認為是在網站工程中非常重要的一步。
(2)組織和管理站點結構

往往在開發一個有一定規模的站點的時候,使站點具有較好的目錄結構是一個值得注意的問題。商業應用的程序往往都要求具有在事務內部運行腳本和組件的能力。事務是服務器端的操作,簡單的說就是即便該操作包含了許多步驟,例如:下定單,查看定單,打印訂單等也只能整體返回操作是成功還是失敗。用戶可以創建在事務內部運行的ASP腳本,如果教本的任何一部分操作失敗,那麼整個事務就終止。

這裡我們要詳細說明的並不是事務性腳本在整站中的應用,而是要讓你在開發中不至於被眾多的文件,眾多的操作攪昏了頭。

合理的對文件名進行組織。例如:我們將管理頁面命名為admin. asp,而管理頁面中對各個欄目進行操作的頁面可以在admin後面加下劃線然後命以這個欄目的名稱,比如新聞管理頁面admin_news. asp,下載管理頁面admin_download. asp

關於文件的放置。我這裡僅是以我得做法來講解,相信各位能有自己的見解。將所有管理操作頁面放置於同一目錄下面,為的是更加方便的管理和分配權限。各個欄目用戶頁面可以放在一個目錄下方便於管理。數據庫可以放在統一的目錄下面。

怎樣減少文件的數量。你沒有必要為每個添加,刪除,修改或者別的操作新建許多頁面,你可以使用參數來減少頁面,打一個比方,在管理頁面admin_news. asp中,當admin_news. asp?action=addnew的時候執行添加操作,當admin_news. asp?action=del的時候執行刪除操作,這樣將大大增強你站點集成化程度。

可以重用的代碼。很多代碼是可以重複使用的,比如UBB的轉換表等,可以把它們單獨放在一個目錄中。
(3)開發後台管理
我不知道各位開發者是不是和我一樣,先將後台開發完畢後再進行前台開發。或者你是混在一起來做。不過,我認為先開發後台是比較合適的。前面我們講過先要對系統進行分析,要實現哪些功能自己心裡要有個底。這樣做起來才會事半功倍,也會減少許多不必要的錯誤。後台管理無非具有以下這些功能:
1)用戶驗證
2)添加網站數據
3)修改網站數據
4)刪除網站數據
5)站點系統設置
6)站點訪問統計
7)搜集用戶信息. 如何把他們同意的集中在一起管理,是我們要解決的問題。比如說用戶驗證我們可以這樣來實現:

<%. Still, if you feel that how do you write essays your application overall is not strong enough, after consulting with your trusted advisors, there is nothing wrong with waiting for the next cycle. username=replace(trim(request(“username”)),””,””)
password=replace(trim(Request(“password”)),””,””)
set rs=server. createobject(“adodb. recordset”)
sql=”select * from admin where password=”&password&” and username=”&username&””
rs. open sql,conn,1,1
if not(rs. bof and rs. eof) then
if password=rs(“password”) then
session(“admin”)=rs(“username”)
session(“flag”)=rs(“flag”)
else
end if
else
end if. %>

username和password是從用戶表單輸入傳遞過來的值,你一定要注意用replace處理一次後再和數據庫中存儲的值進行對比。因為我們知道username=username是恆等的,必須把用戶輸入的去掉。

通過驗證後建立一個session變量,可以很方便的在各個管理頁面中進行管理。
要對用戶進行驗證的頁面可以這樣寫:

<%if session(“admin”)=”” then
response. write “no access”
else. end if
%>

有人在數據處理的頁面會遺忘寫這個驗證,這是非常危險的,用戶可以通過這個缺陷非法提交數據。

再來說說如何收集用戶信息,這似乎都不涉及到太多技術了,一般可以這麼做,比如你站點的特色是提供自主產權的軟件下載,你可以讓用戶在下載前填寫用戶信息表,這個方法在外國網站用的比較多,在中國還很少見,我的網站就擁有這個功能,讓我輕鬆的知道來自美國和新西蘭的用戶比較多。

在進行後台管理開發的時候還往往遇到這個問題,為不同的管理員分配不同的權限。僅以西路整站系統講一種方法。在上面驗證用戶的時候我們還將flag寫入了session變量,我們可以通過flag來判斷用戶級別,當然前提是你已經為flag分配了不同的值。具體可以這樣實現:

<%
select case session(“flag”)
case “1”
case “9”
case “10”
case else
%>
<script language=”javascript”>
if (confirm(“您的操作權限不夠(進入站點新聞設置界面需要第1或9,10級權限),系統拒絕你的訪問,請點確定返回,或者點取消退出重新登錄”))
location. href=”admin. asp” mce_href=”admin. asp”;
else
location. href=”quit. asp” mce_href=”quit. asp”;
</script>
<%end select%>

以上確定了三種級別可以進入該操作頁面的管理員。當然這裡僅僅是說明了一種簡單的驗證方法,其實你亦可以使用split函數等來確定用戶權限。

(責任編輯:admin)

.