【正文】
把圖片傳到服務(wù)器中的一個(gè)文件夾中,并生成一張小圖把圖片存在同一目錄下,最后把圖片的在服務(wù)器上的虛擬地址記錄下來(lái),以便存入數(shù)據(jù)庫(kù)。其他的與商品查看頁(yè)面相似,只是這里的TextBox控件的只讀屬性為false。訂單管理模塊包括:訂單列表管理和具體訂單管理。(1) 訂單列表管理包括:訂單搜索和訂單列表展示。,在此不做具體說(shuō)明。訂單列表展示所展示的訂單信息包括:訂單編號(hào)、用戶賬號(hào)、訂單時(shí)間、金額、是否已結(jié)賬、是否已發(fā)貨、是否退款及退款是否同意,用戶可以操作的功能是對(duì)每條訂單進(jìn)行查看,此功能位于訂單表的最后一列。訂單表是由GridView控件實(shí)現(xiàn)的,數(shù)據(jù)源來(lái)自數(shù)據(jù)庫(kù)中的表Order。(2) 具體訂單管理是管理具體某個(gè)訂單的,頁(yè)面上顯示的訂單信息包括:訂單編號(hào)、用戶賬號(hào)、訂單時(shí)間、郵寄方式、金額、郵編、電話、手機(jī)、貨運(yùn)地址、是否已結(jié)賬、是否已發(fā)貨、是否退款、退款是否同意及貨物表。除貨物表外其他的信息的顯示都是用控件TextBox實(shí)現(xiàn),貨物表是用控件GridView實(shí)現(xiàn)的。,所以此模塊程序比較簡(jiǎn)單,見(jiàn)附錄。管理員密碼修改與用戶密碼修改原理相同,只是參考的數(shù)據(jù)庫(kù)不同。退出登陸即把用來(lái)證明用戶已登陸的Session清空即可,具體代碼如下:()。Session是針對(duì)具體用戶的,所以不同用戶執(zhí)行這個(gè)函數(shù)產(chǎn)生的效果是不同的,它只會(huì)清空該用戶的所有session。6關(guān)鍵技術(shù)分析如何使系統(tǒng)的運(yùn)行更為安全是系統(tǒng)設(shè)計(jì)中的一個(gè)非常重要的問(wèn)題。本系統(tǒng)是通過(guò)Internet上的網(wǎng)頁(yè)形式進(jìn)行管理的系統(tǒng),又存放著大量的敏感數(shù)據(jù),必然會(huì)遇到數(shù)據(jù)可能會(huì)被非法入侵和修改的問(wèn)題。對(duì)安全的威脅主要是由通信欺騙、不適當(dāng)?shù)馁Y源訪問(wèn)、未經(jīng)許可的局域網(wǎng)訪問(wèn)、數(shù)據(jù)泄密和局域網(wǎng)通信泄密組成。當(dāng)網(wǎng)站用戶執(zhí)行未登錄用戶無(wú)法執(zhí)行的操作時(shí)就說(shuō)明網(wǎng)站正在被入侵,為此本系統(tǒng)做了如下措施:(趙強(qiáng),張紅忠.2008)(1) Windows server 2000操作系統(tǒng)和SQL Server 2005都打上最新的安全補(bǔ)丁,堵住系統(tǒng)漏洞,設(shè)置好防火墻,裝上殺毒軟件。(2) 數(shù)據(jù)庫(kù)服務(wù)器設(shè)置登錄權(quán)限,需要進(jìn)行用戶身份驗(yàn)證,防止數(shù)據(jù)庫(kù)被非法入侵。(3) 用戶或管理員登錄時(shí),輸入的密碼經(jīng)過(guò)md5加密后在網(wǎng)絡(luò)中傳輸,防止密碼被截獲。(賀紅,2005) 框架時(shí),對(duì)于數(shù)據(jù)訪問(wèn)的技術(shù),沒(méi)有進(jìn)一步擴(kuò)展 ADO,只是保留了ADO這個(gè)縮寫詞。,具有如下3個(gè)方面的優(yōu)點(diǎn):(1) 提供了斷開(kāi)的數(shù)據(jù)訪問(wèn)模型,這對(duì) Web 環(huán)境至關(guān)重要。(2) 提供了與 XML 的緊密集成。(3) 提供了與 .NET 框架的無(wú)縫集成(例如,兼容基類庫(kù)類型系統(tǒng))。.NET數(shù)據(jù)提供程序(.NET Data Provider)。.。:(1) Connection 對(duì)象,用于連接數(shù)據(jù)源。(2) Command 對(duì)象,對(duì)數(shù)據(jù)源執(zhí)行命令。(3) DataReader 對(duì)象,在只讀和只寫的連接模式下從數(shù)據(jù)源讀取數(shù)據(jù)。(4) DataAdapter 對(duì)象,從數(shù)據(jù)源讀取數(shù)據(jù)并使用所讀取的數(shù)據(jù)填充數(shù)據(jù)集對(duì)象本系統(tǒng)限制其運(yùn)行速度的主要因素在于數(shù)據(jù)庫(kù)數(shù)據(jù)的讀取和寫入,為此本系統(tǒng)使用了存儲(chǔ)過(guò)程。所謂存儲(chǔ)過(guò)程就是:將常用的或很復(fù)雜的工作,預(yù)先用SQL語(yǔ)句寫好并用一個(gè)指定的名稱存儲(chǔ)起來(lái),那么以后要叫數(shù)據(jù)庫(kù)提供與已定義好的存儲(chǔ)過(guò)程的功能相同的服務(wù)時(shí),只需調(diào)用execute,即可自動(dòng)完成命令。它的優(yōu)點(diǎn)如下:(1) 存儲(chǔ)過(guò)程只在創(chuàng)造時(shí)進(jìn)行編譯,以后每次執(zhí)行存儲(chǔ)過(guò)程都不需再重新編譯,而一般SQL語(yǔ)句每執(zhí)行一次就編譯一次,所以使用存儲(chǔ)過(guò)程可提高數(shù)據(jù)庫(kù)執(zhí)行速度;(2) 當(dāng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行復(fù)雜操作時(shí)(如對(duì)多個(gè)表進(jìn)行Update,Insert,Query,Delete時(shí)),可將此復(fù)雜操作用存儲(chǔ)過(guò)程封裝起來(lái)與數(shù)據(jù)庫(kù)提供的事務(wù)處理結(jié)合一起使用;(3) 存儲(chǔ)過(guò)程可以重復(fù)使用,可減少數(shù)據(jù)庫(kù)開(kāi)發(fā)人員的工作量;(4) 安全性高,可設(shè)定只有某此用戶才具有對(duì)指定存儲(chǔ)過(guò)程的使用權(quán)。本系統(tǒng)存儲(chǔ)過(guò)程幾乎有50個(gè),實(shí)現(xiàn)了數(shù)據(jù)的查詢、修改、插入和刪除四大功能。SQL注入式攻擊是指利用設(shè)計(jì)上的漏洞,在目標(biāo)服務(wù)器上運(yùn)行SQL命令以及進(jìn)行其他方式的攻擊。動(dòng)態(tài)生成SQL命令時(shí)沒(méi)有對(duì)用戶輸入的數(shù)據(jù)進(jìn)行驗(yàn)證是SQL注入攻擊得逞的主要原因。比如:如果你的查詢語(yǔ)句是select * from user where name =+user+ and password=+pwd,那么,如果我的用戶名是:1 or 1 = 1那么,你的查詢語(yǔ)句將會(huì)變成:select * from user where name =1 or 1 = 1 and password=+pwd這樣你的查詢語(yǔ)句就通過(guò)了,從而就可以進(jìn)入你的管理界面。(趙強(qiáng),2008)為此本系統(tǒng)引入了傳參的概念,就是數(shù)據(jù)庫(kù)的語(yǔ)句不是通過(guò)字符串的拼接來(lái)實(shí)現(xiàn)的,而是通過(guò)傳參數(shù)來(lái)傳進(jìn)去的,例如:先通過(guò)SqlParameter 設(shè)置參數(shù)SqlParameter[] paras = { new SqlParameter(@Name, , 30), new SqlParameter(@Pass, , 30) }。paras[0].Value = nName。paras[1].Value = nPass。再編寫SQL語(yǔ)句如下,其中@Name和@Pass為上面語(yǔ)句定義的參數(shù)string sqlText = SELECT count(*) FROM [User] WHERE Name=@Name AND Pass=@Pass。最后執(zhí)行SQL語(yǔ)句即可,這樣安全度就上去了,因?yàn)椴还軈?shù)的值是什么,他都以值的形式傳入的。7測(cè)試、總結(jié)本系統(tǒng)完成后我對(duì)此網(wǎng)站進(jìn)行了全面的運(yùn)行查錯(cuò),發(fā)現(xiàn)了很多小問(wèn)題,比如輸入錯(cuò)誤數(shù)據(jù)導(dǎo)致網(wǎng)站崩潰,網(wǎng)站顯示錯(cuò)誤等,對(duì)此我也一一做了調(diào)試修改,最后也都修正了,在壓力測(cè)試上也對(duì)服務(wù)器允許的最大并發(fā)用戶數(shù)和交易數(shù)進(jìn)行了測(cè)試。在持續(xù)測(cè)試上證明了本網(wǎng)站在實(shí)際環(huán)境下能夠持續(xù)工作。對(duì)數(shù)據(jù)庫(kù)聯(lián)接也進(jìn)行了測(cè)試,數(shù)據(jù)庫(kù)聯(lián)接測(cè)試是用來(lái)確定數(shù)據(jù)庫(kù)服務(wù)器是否能夠支持期望的連接數(shù)。部分模塊的測(cè)試用例見(jiàn)附錄。經(jīng)過(guò)了2個(gè)多月的努力總算能把購(gòu)物網(wǎng)站給寫出來(lái)了,代碼量相當(dāng)?shù)牡拇?,所以花的時(shí)間比較多,在公司實(shí)習(xí)了一個(gè)多月,幾乎大部分時(shí)間都在搞我的畢業(yè)設(shè)計(jì),所花的精力是很大的。剛開(kāi)始著手這個(gè)設(shè)計(jì)時(shí)是無(wú)從下手,不知道先開(kāi)始什么好,怎樣才能以最少的時(shí)間設(shè)計(jì)出最好用的網(wǎng)站,于是我在網(wǎng)上查了很多的資料,漸漸的明了了購(gòu)物網(wǎng)站的一般的框架結(jié)構(gòu),我就以最常用的最流行的最新的框架三層架構(gòu)來(lái)設(shè)計(jì)網(wǎng)站。架構(gòu)解決后就要開(kāi)始需求分析了,需求分析剛開(kāi)始也不知道怎樣的才算是需求,需求的度把握多少,所以開(kāi)始還是很困難的,再參考了無(wú)數(shù)的別人的需求和看法后,我花了整整半個(gè)月的時(shí)間總算把一個(gè)大致的需求寫了出來(lái),當(dāng)然其中導(dǎo)師對(duì)我的幫助無(wú)疑是最大的。需求出來(lái)后其他的一切的工作就變得比較明朗了,我的思路也漸漸的清晰了,經(jīng)過(guò)了一個(gè)月的詳細(xì)設(shè)計(jì)和代碼編寫,一個(gè)簡(jiǎn)單的購(gòu)物網(wǎng)站就很快的展示在我的面前,雖然不是很美觀,但是至少能購(gòu)物了,大部分的功能也實(shí)現(xiàn)了,有前臺(tái)的購(gòu)物和后臺(tái)的管理,由于時(shí)間也比較倉(cāng)促,后臺(tái)的頁(yè)面中的美觀性沒(méi)有前臺(tái)做得好。有經(jīng)過(guò)一段時(shí)間的代碼修改和頁(yè)面調(diào)整后完整的網(wǎng)站就出來(lái)了。,用的時(shí)間也比較短,所以整個(gè)網(wǎng)站肯定有許多的缺陷,我相信在這次的經(jīng)驗(yàn)教訓(xùn)后,以后的編程道路會(huì)相對(duì)平坦的多,畢竟這次是我花的時(shí)間最大,用的精力最多的一次編程之旅,學(xué)的東西也是最多的一次??偟膩?lái)說(shuō),畢業(yè)設(shè)計(jì)雖然結(jié)束了,所編寫的網(wǎng)站肯定還有很多的漏洞,相信在老師眼里還有很多幼稚和不足的地方,但這次畢業(yè)設(shè)計(jì)確實(shí)起到了很大的效果,它是對(duì)我們整個(gè)大學(xué)生涯中所學(xué)到的知識(shí)的大檢查,也對(duì)我們將來(lái)從事的工作有了個(gè)一新的認(rèn)識(shí)。我覺(jué)得設(shè)計(jì)得出的結(jié)果并不重要,最重要的是總結(jié)出來(lái)的經(jīng)驗(yàn)以及在制作過(guò)程中所學(xué)會(huì)的知識(shí)。參考文獻(xiàn)1. 賀紅,徐寶文.Web 信息系統(tǒng)的安全隱患與網(wǎng)絡(luò)管理員對(duì)策.計(jì)算機(jī)工程與應(yīng)用,2005,(18):1511532. 胡玉蓉. Framework 的代碼訪問(wèn)安全性.四川工程職業(yè)技術(shù)學(xué)院學(xué)報(bào),.2008,(06):67683. 李懷恩.基于ASP 的網(wǎng)站電子支付系統(tǒng)的開(kāi)發(fā).中國(guó)科技信息,2005,(12):29,354. 林慶,朱翠苗,鄭廣成等. 的MVC 設(shè)計(jì)模式的研究.計(jì)算機(jī)工程與設(shè)計(jì),2008,(01):1731755. 蘇彥君,朱仲穎.ASP. NET開(kāi)發(fā)環(huán)境下的Web系統(tǒng)的安全解決方案研究.計(jì)算機(jī)與數(shù)字工程,2009,(01):110113 6. 隋玉磊,張?jiān)迄i.基于ASP. NET的網(wǎng)上購(gòu)物系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).科學(xué)技術(shù)與工程,2007,7(18):223227,2367. 唐寶燕,尹強(qiáng)國(guó),馮娜.ASP. NET頁(yè)面間數(shù)據(jù)傳遞的方法及其應(yīng)用分析.福建電腦,2009,(01):44458. 伍華聰. 與網(wǎng)站開(kāi)發(fā)實(shí)踐教程.北京:清華大學(xué)出版社,2005:4550. 9. 李沫沫,李宇亮.運(yùn)用ASP技術(shù)實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)站的設(shè)計(jì)與開(kāi)發(fā).云南民族大學(xué)學(xué)報(bào)(自然科學(xué)版),2004,13(1):5557. 10.王亞?wèn)|.SQL Server 的安全配置.內(nèi)蒙古煤炭經(jīng)濟(jì),2003,(1):43-4411.(美)沃森,(美)內(nèi)格爾等,齊立波譯.C入門經(jīng)典(第三版)..北京:清華大學(xué)出版社,200612.肖金秀.ASP 網(wǎng)絡(luò)編程技術(shù).北京:清華大學(xué)出版社,2001:143151.13.張向陽(yáng).如何在ASP. NET 頁(yè)面中動(dòng)態(tài)添加用戶控件.陜西國(guó)防工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2006,(01):424614. 張?。甔ML技術(shù)在網(wǎng)上購(gòu)物系統(tǒng)中的應(yīng)用與安全分析.科技創(chuàng)新導(dǎo)報(bào),2008,(14):2315.趙強(qiáng),張紅忠..計(jì)算機(jī)應(yīng)用,2008,(2):279281,28716.李建國(guó).基于ASP技術(shù)的網(wǎng)上購(gòu)物系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn). 福建電腦,2008,(2):12212317.Albert H. Course Technology Press, 2002, 418.Hai Z G. Componentbased workflow systems development. Decision SupportSystems,2003, 35: 51753619.Hart C, Kauffman J, Sussman D et al. Beginning with C. USA, 200620.Hubaux J P, Buttyan L, Cappkun S. The quest for security in mobile Ad Hoc networks. LongmBeach, CA, USA, 2001, 14615521.IBM. ://6.software.ibm./deveoperworks//education/xml/xultimashup4/, 200622.Kong J J, Zerfos P, Luo H Y et al. Providing robust and ubiquitous Security support for mobile AdHoc networks. International Conference on Network Protocols (ICNP’ O1), California,2001, 25126023.Settlement Stability, 200024.Stollberg M, Haller A. DERI-Digital Enterprise Research Institute(Semantic Web Services Tutorial). Orlando, Florida: 3rd International Conference onWeb Servic-es(ICWS 2005), 200525.Zhang Y, Lee W, Huang Y. Intrusion detection techniques for mobile wireless networks. Wireless Networks, 2003致 謝在結(jié)束本論文之前,我要衷心感謝倪福川老師,在倪老師的悉心指導(dǎo)下我完成了此設(shè)計(jì)。從論文的選題、設(shè)計(jì)直到具體問(wèn)題的解決,都傾注了倪老師的心血。還感謝其他審閱我論文的老師對(duì)我論文的評(píng)價(jià)和對(duì)我提的寶貴的意見(jiàn)。深深的對(duì)你們說(shuō)聲謝謝。在畢業(yè)設(shè)計(jì)的完成和論文撰寫的過(guò)程中,我還得到了許多同學(xué)及公司的同事的支持和幫助,在此一并表示感謝!附錄(1) 首頁(yè)頁(yè)頭的商品移動(dòng)展示的后臺(tái)綁定商品代碼如下:public void BindDataItem(){ Item bll = new Item()。 IListItemInfo item = ()。 StringBuilder builder = new StringBuilder()。 (table border=\0\ cellpadding=\0\ cellspacing=\0\tr)。 for (int i = 0。 i 。 i++) { (tda href=\?Id= + item[i].ItemId + \img src=\ + item[i].ItemImage + \ width=\102\ height=\90\ border=\0\ //a)。 (br /span class=\FontOne\ + SubName(item[i].ItemName) + /span)。 (span class=\FontTwo\市場(chǎng)價(jià): + item[i].AgoraPrice + /spanspan class=\FontThree\會(huì)員價(jià): + item[i].MemberPrice + /span/td)。 } (/tr/tabl