web|網站 使用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)搜集使用者資訊
...
如何把他們同意的集中在一起管理,是我們要解決的問題。比如說使用者驗證我們可以這樣來實現:
<%
...
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("f
[1] [2] 下一頁