網(wǎng)站相冊(cè)系統(tǒng)_第1頁
網(wǎng)站相冊(cè)系統(tǒng)_第2頁
網(wǎng)站相冊(cè)系統(tǒng)_第3頁
網(wǎng)站相冊(cè)系統(tǒng)_第4頁
網(wǎng)站相冊(cè)系統(tǒng)_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第13章 網(wǎng)站相冊(cè)系統(tǒng)13.1 系統(tǒng)概述 在以信息分享、用戶參與為主題的web2.0時(shí)代,越來越多的各種類型的傳統(tǒng)網(wǎng)站升級(jí)為能夠?qū)崿F(xiàn)用戶參web2.0型的網(wǎng)站。 本章通過實(shí)現(xiàn)一個(gè)簡單的網(wǎng)站相冊(cè)系統(tǒng),向讀者介紹使用microsoft visual studio 2008在asp.net 3.5平臺(tái)下開發(fā)web 2.0應(yīng)用程序的關(guān)鍵技術(shù)。尤其是利用microsoft visual studio 2008提供的功能強(qiáng)大的內(nèi)置控件,能幫助開發(fā)人員更加簡便地實(shí)現(xiàn)web 2.0中強(qiáng)調(diào)的各種用戶參與、用戶上傳內(nèi)容的功能。 通過本章的學(xué)習(xí),讀者能夠掌握如何用asp.net實(shí)現(xiàn)對(duì)文件系統(tǒng)的各種操作。 13.2

2、需 求 分 析 本例要開發(fā)一個(gè)簡單的相冊(cè)管理系統(tǒng),對(duì)系統(tǒng)提出的需求是實(shí)現(xiàn)網(wǎng)站相冊(cè)系統(tǒng)的核心功能。系統(tǒng)需要實(shí)現(xiàn)下列功能:(1) 匿名訪客可以瀏覽網(wǎng)站的全部圖片內(nèi)容。(2) 注冊(cè)用戶可以建立不同的相冊(cè)。(3) 注冊(cè)用戶可以上傳照片到自己的相冊(cè)并實(shí)現(xiàn)對(duì)相冊(cè)進(jìn)行管理。(4) 網(wǎng)站維護(hù)人員如發(fā)現(xiàn)有人上傳非法內(nèi)容可以進(jìn)行刪除。 這里的刪除功能需要實(shí)現(xiàn)級(jí)聯(lián)刪除。13.2 需 求 分 析 由需求分析所得結(jié)果,可將該系統(tǒng)的功能分為前臺(tái)和后臺(tái)兩個(gè)功能模塊,每個(gè)模塊實(shí)現(xiàn)的主要功能如下:q前臺(tái):存在兩種用戶角色匿名訪客:瀏覽圖片注冊(cè)用戶:登錄、密碼修改、用戶信息管理、創(chuàng)建相冊(cè)、 相冊(cè)管理、相冊(cè)查詢、上傳圖片、圖片查詢

3、 q后臺(tái):網(wǎng)站管理員:登錄、密碼修改、用戶管理、相冊(cè)管理、 圖片管理13.3 用 例 圖 根據(jù)前面的需求分析,設(shè)計(jì)網(wǎng)站相冊(cè)系統(tǒng)的用例圖,如圖13-1所示。13.6 數(shù)據(jù)庫結(jié)構(gòu)本例數(shù)據(jù)庫設(shè)計(jì)如圖13-3所示。13.7 開發(fā)環(huán)境搭建1、創(chuàng)建網(wǎng)站userphoto2、創(chuàng)建數(shù)據(jù)庫n在網(wǎng)站目錄app_data下創(chuàng)建數(shù)據(jù)庫photodata.mdfn在數(shù)據(jù)庫中添加表注冊(cè)用戶表(userinfo)、用戶相冊(cè)表(userphotoset)、用戶相片表(userphotos)、管理員表(adminuser)n在表中添加字段13.8 數(shù)據(jù)訪問層的實(shí)現(xiàn) 本例的主要代碼是使用asp.net控件實(shí)現(xiàn)的,但是對(duì)于訪問數(shù)據(jù)

4、庫進(jìn)行數(shù)據(jù)的插入、刪除和更新等操作,使用ado.net類庫直接執(zhí)行sql語句更為方便。 在本系統(tǒng)開發(fā)過程中,引入了一個(gè)sqlhelper類,用以簡化數(shù)據(jù)庫相關(guān)操作的編程實(shí)現(xiàn)。3、創(chuàng)建sqlhelper類:在網(wǎng)站目錄app_code下創(chuàng)建類sqlhelper.cs。(如果網(wǎng)站中沒有app_code 目錄,在網(wǎng)站名稱處點(diǎn)擊右鍵,選擇添加asp.net文件夾,選擇app_code 即可)13.9 前臺(tái)程序代碼 相冊(cè)系統(tǒng)前臺(tái)要實(shí)現(xiàn)的功能為:訪問者可以瀏覽其他注冊(cè)用戶上傳到網(wǎng)站的公開相冊(cè)和相片信息,注冊(cè)后可以上傳自己的相片到網(wǎng)站上面。前臺(tái)主要包括下面幾個(gè)文件。qdefault.aspx:相冊(cè)系統(tǒng)首頁。q

5、userreg.aspx:用戶注冊(cè)頁面。qusermain.aspx:用戶首頁,包括用戶信息管理和相冊(cè)管理功能。qaddphotset.aspx:添加相冊(cè)。qmodifyphotosinfo.aspx:修改相冊(cè)信息。qphotoadmin.aspx:相冊(cè)相片管理及上傳。13.9.1 系統(tǒng)首頁實(shí)現(xiàn)1、創(chuàng)建default.aspx頁面頁面功能:登錄、顯示最新創(chuàng)建相冊(cè),最新上傳相片,顯示相冊(cè)列表(使用datalist控件)n在頁面上插入一個(gè)隱藏線格式的表格,用于頁面布局n在上一步驟插入的表格中,向左上方單元格插入一個(gè)login控件,n從工具箱中拖入3個(gè)datalist控件到頁面中,n在每一個(gè)data

6、list控件上方插入一個(gè)sqldatasource數(shù)據(jù)源控件,頁面布局設(shè)置為如圖所示n配置第一個(gè)sqldatasource1數(shù)據(jù)源,保存連接字符串名字為“photoconnectionstring”,n進(jìn)入“配置select語句”界面,因?yàn)楸纠枰獙?shí)現(xiàn)的查詢語句相對(duì)復(fù)雜,無法使用開發(fā)環(huán)境提供的簡單查詢語句生成工具生成,這里選擇“指定自定義sql語句或存儲(chǔ)過程”選項(xiàng),單擊“下一步”按鈕n在“定義自定義語句或存儲(chǔ)過程”對(duì)話框的“sql語句”文本框中輸入查詢語句:“select top 10 * from userphotoset where photosetstate=0 order by cre

7、atetime desc”,完成數(shù)據(jù)源的配置。n配置sqldatasource2數(shù)據(jù)源,將sql語句配置為“select top 10 * from userphotos order by photoid desc”,其他步驟選擇為與上一個(gè)數(shù)據(jù)源一樣的配置。n配置sqldatasource3數(shù)據(jù)源,設(shè)置數(shù)據(jù)源為從相冊(cè)表中讀取數(shù)據(jù),設(shè)置排序規(guī)則為按編號(hào)降序排列n設(shè)置3個(gè)datalist控件的數(shù)據(jù)源為前面添加的對(duì)應(yīng)數(shù)據(jù)源控件n將顯示最新創(chuàng)建相冊(cè)的datalist控件的模板代碼設(shè)置如下:n n n n n n n n ()n nnn nn將顯示最新上傳相片的datalist控件的模板代碼設(shè)置如下:

8、nn n n n n nimg src=upphoto/ width=160 height=160 alt= / n n () nn n nnn將顯示相冊(cè)列表的datalist控件的模板代碼設(shè)置如下: n nn n n 相冊(cè)名稱n 創(chuàng)建用戶n 創(chuàng)建時(shí)間n 相冊(cè)狀態(tài)n 關(guān)鍵詞n n n n nn n n n n n n n n n n n 綁定表達(dá)式 區(qū)別:1.eval是只讀數(shù)據(jù),bind是可更新的 2.當(dāng)對(duì)次表達(dá)式操作時(shí)候,必須用eval 如 eval 單向綁定:數(shù)據(jù)是只讀的bind 雙向綁定:數(shù)據(jù)可以更改,并返回服務(wù)器端,服務(wù)器可以處理更改后的數(shù)據(jù),如存入數(shù)據(jù)庫.n設(shè)置登錄控件destina

9、tionpageurl屬性為usermain.aspx,重載 “authenticate”事件nprotected void login1_authenticate(object sender, authenticateeventargs e)n /獲得輸入用戶名與密碼信息n string username = login1.username.replace(, );n string userpass = login1.password.replace(, );n /生成程序語句n string sql = select count(*) from userinfo where usernam

10、e=username and userpass=userpass and islock=0;n sqlparameter param =n new sqlparameter(username,sqldbtype.char),n new sqlparameter(userpass,sqldbtype.varchar)n ;n param0.value = username;n param1.value = userpass;n /執(zhí)行查詢于語句,得到查詢結(jié)果n int usercount = (int)(sqlhelp.executescalar(sqlhelp.connectionstring

11、localtransaction, commandtype.text, sql, param); nif (usercount 0)n n /查詢成功保存用戶名n e.authenticated = true;n sessionusername = username;n sql = update userinfo set letlogintime=getdate() where username=username; n sqlparameter sqlparams = new sqlparameter n new sqlparameter(username, sqldbtype.varchar

12、)n ;n sqlparams0.value = username;n sqlhelp.executenonquery(sqlhelp.connectionstringlocaltransaction, commandtype.text, sql, sqlparams);n n 13.9.2 用戶注冊(cè)頁面2、創(chuàng)建頁面“userreg.aspx”頁面功能:實(shí)現(xiàn)注冊(cè),注冊(cè)成功后應(yīng)回到default.aspx頁面n從標(biāo)準(zhǔn)工具區(qū)中拖放一些文本框、復(fù)選框和按鈕控件,設(shè)置好控件位置,完成注冊(cè)界面的開發(fā)n將兩個(gè)密碼輸入框的文本模式設(shè)置為“password”n在前面四個(gè)文本框后面分別插入一個(gè)requiredf

13、ieldvalidator控件,用于驗(yàn)證用戶輸入,設(shè)置各個(gè)驗(yàn)證控件的controltovalidate屬性值為對(duì)應(yīng)的文本框控件名。并設(shè)置errormessage屬性值為“*”n在確認(rèn)密碼的必填驗(yàn)證控件后面插入一個(gè)比較驗(yàn)證控件,設(shè)置比較驗(yàn)證控件的controltocompare屬性為確認(rèn)密碼文本框id,然后設(shè)置controltovalidate屬性為輸入密碼文本框id,設(shè)置errormessage屬性值為“兩次密碼輸入不一致”13.9.2 用戶注冊(cè)頁面n打開首頁,在登錄控件下插入一個(gè)hyperlink控件,設(shè)置navigateurl屬性為注冊(cè)頁面,text屬性為“注冊(cè)”.n雙擊“注冊(cè)”按鈕,編寫

14、如下代碼,完成用戶注冊(cè)功能:nprotected void button1_click(object sender, eventargs e)n n string sql = select count(*) from userinfo where username=username;n sqlparameter sqlparams = new sqlparameter new sqlparameter(username, sqldbtype.varchar) ;n sqlparams0.value = txtusername.text;n if (int)sqlhelp.executescal

15、ar(sqlhelp.connectionstringlocaltransaction, commandtype.text, sql, sqlparams) 0)n n response.write(用戶名已經(jīng)存在!);n n elsen n sql=insert into userinfo (username,userpass,regtime,letlogintime,islock,email,isopen,userpost) ;n sql += values(username,userpass,regtime,letlogintime,islock,email,isopen,userpos

16、t);n nsqlparams = new sqlparameter n new sqlparameter(username,sqldbtype.varchar),n new sqlparameter(userpass,sqldbtype.varchar),n new sqlparameter(regtime,sqldbtype.datetime),n new sqlparameter(letlogintime,sqldbtype.datetime),n new sqlparameter(islock,sqldbtype.bit),n new sqlparameter(email,sqldbt

17、ype.varchar),n new sqlparameter(isopen,sqldbtype.bit),n new sqlparameter(userpost,sqldbtype.varchar);n sqlparams0.value = txtusername.text;n sqlparams1.value = txtuserpass.text;n sqlparams2.value = system.datetime.now;n sqlparams3.value = system.datetime.now;n sqlparams4.value = 0;n sqlparams5.value

18、 = txtemail.text;n sqlparams6.value = cbisopen.checked;n sqlparams7.value = txtpost.text;n if (sqlhelp.executenonquery(sqlhelp.connectionstringlocaltransaction, commandtype.text, sql, sqlparams) 0)n response.write(注冊(cè)成功);n else response.write(數(shù)據(jù)庫操作失敗); 13.9.3 用戶及相冊(cè)管理頁面3、創(chuàng)建頁面“usermain.aspx”頁面功能:修改密碼,修

19、改用戶信息,顯示相冊(cè)列表n在頁面插入布局表格。n在“修改密碼”文字下方插入一個(gè)“changepassword”控件n在修改密碼部分下面插入一個(gè)表格,用于實(shí)現(xiàn)用戶信息修改功能n在布局表格下方插入一個(gè)gridview控件和一個(gè)hyperlink控件n為gridview控件創(chuàng)建數(shù)據(jù)源,在“配置select語句”界面中,選擇從“userphotoset”表中讀取所有的數(shù)據(jù),設(shè)置查詢條件為用戶名等于保存在session中的用戶名n在列編輯對(duì)話框中,只保留相冊(cè)名稱、創(chuàng)建日期、關(guān)鍵詞、相冊(cè)狀態(tài)四列數(shù)據(jù),修改各列的headertext屬性為對(duì)應(yīng)的中文文字,n選中g(shù)ridview控件,在屬性面板重載rowdat

20、abound方法,在rowdatabound方法中輸入如下代碼,將狀態(tài)顯示轉(zhuǎn)換為中文:n protected void gridview1_rowdatabound(object sender, gridviewroweventargs e)n n if (e.row.rowtype = datacontrolrowtype.datarow)n n if (e.row.cells3.text = 1)n e.row.cells3.text = 正常;n elsen n e.row.cells3.text = 鎖定;n e.row.cells4.enabled = false;n e.row.c

21、ells5.enabled = false;n n n 在創(chuàng)建gridview控件時(shí),必須先為gridview的每一行創(chuàng)建一個(gè)gridviewrow對(duì)象,創(chuàng)建每一行時(shí),將引發(fā)一個(gè)rowcreated事件;當(dāng)行創(chuàng)建完畢,每一行g(shù)ridviewrow就要綁定數(shù)據(jù)源中的數(shù)據(jù),當(dāng)綁定完成后,將引發(fā)rowdatabound事件。如果說我們可以利用rowcreated事件來控制每一行綁定的控件,那么我們同樣可以利用rowdatabound事件來控制每一行綁定的數(shù)據(jù),也就是讓數(shù)據(jù)如何呈現(xiàn)給大家。 rowtype可以確定gridview中行的類型,rowtype是枚舉變量datacontrolrowtype中

22、的一個(gè)值。rowtype可以取值包括 datarow、footer、header、emptydatarow、pager、separator。很多時(shí)候,我們需要判斷當(dāng)前是否是數(shù)據(jù)行,通過如下代碼來進(jìn)行判斷: if (e.row.rowtype = datacontrolrowtype.datarow) rowdeleting和和rowdeleted事件事件 rowdeleting發(fā)生在刪除數(shù)據(jù)之前,rowdeleted發(fā)生在刪除數(shù)據(jù)之后。 使用rowdeleting事件,可以在真正刪除前再次確認(rèn)是否刪除,可以通過設(shè)置gridviewdeleteeventargs.cancel=true來取消刪除

23、;也可以用于判斷當(dāng)前數(shù)據(jù)庫記錄數(shù),如果只剩一條記錄且數(shù)據(jù)庫不能為空則提示并取消刪除操作。 使用rowdeleted事件,可以在刪除后,通過gridviewdeletedeventargs的exception屬性判斷刪除過程中是否產(chǎn)生異常,如無異常,則可以顯示類似于” 1 records deleted” 之類的提示信息。example: protected void gridview1_rowdeleting(object sender, gridviewdeleteeventargs e)/取得當(dāng)前行號(hào),并取得當(dāng)前行的gridviewrow對(duì)象 int index=e.rowindex ;

24、gridviewrow gvr=gridview1.rowsindex;/取得當(dāng)前行第二個(gè)單元格中的文字 str1 = gvr.cells1.text;/進(jìn)行提示 message.text =您將刪除一個(gè)用戶,其姓名為+str1 ; protected void gridview1_rowdeleted(object sender, gridviewdeletedeventargs e)/如果沒有產(chǎn)生異常,則提示成功刪除,否則提示刪除失敗 if (e.exception = null) message.text += 您成功刪除了+str1 ; else message.text += 刪除失

25、敗,請(qǐng)聯(lián)系管理員;keys集合集合 keys集合中一般存放的是數(shù)據(jù)源中的主鍵字段的key和value的對(duì)應(yīng)值,如果主鍵由多個(gè)字段組成,那么keys為每個(gè)鍵字段添加其字段名稱和值。 n選中“創(chuàng)建相冊(cè)”連接,設(shè)置navigateurl屬性為“addphotoset.aspx”n在page_load方法中加入如下代碼,實(shí)現(xiàn)用戶不登錄不能訪問本頁面功能:if (sessionusername = null)response.redirect(default.aspx);n重載changpassword1控件changingpassword事件,添加代碼n protected void changepa

26、ssword1_changingpassword(object sender, logincanceleventargs e)n n e.cancel = true; /獲得次輸入的新舊密碼,及登陸時(shí)保存的用戶名n string oldpassword = changepassword1.currentpassword;n string newpassword = changepassword1.newpassword;n string username = sessionusername.tostring();n /查詢數(shù)據(jù)庫,驗(yàn)證舊密碼是否正確n string sql = select c

27、ount(*) from userinfo where username=username and userpass=userpass;n sqlparameter param =n new sqlparameter(username,sqldbtype.char),n new sqlparameter(userpass,sqldbtype.varchar)n ;n param0.value = username;n param1.value = oldpassword;n int usercount = (int)(sqlhelp.executescalar(sqlhelp.connecti

28、onstringlocaltransaction,n commandtype.text, sql, param); nif (usercount 0)n response.write(修改成功); n else response.write(操作錯(cuò)誤);n n n雙擊信息“修改”按鈕,輸入代碼n protected void button1_click(object sender, eventargs e)n n string email = txtemail.text;n bool isopen = cbisopen.checked;n string username = sessionus

29、ername.tostring();n string sql = update userinfo set email=email,isopen=isopen where username=username;n sqlparameter param =n new sqlparameter(email,sqldbtype.varchar),n new sqlparameter(isopen,sqldbtype.bit),n new sqlparameter(username,sqldbtype.varchar)n ;n param0.value = email;n param1.value = i

30、sopen;n param2.value = username;n if (sqlhelp.executenonquery(sqlhelp.connectionstringlocaltransaction,commandtype.text, sql, param) 0)n response.write(修改成功);n else response.write(操作錯(cuò)誤);n13.9.4 增加相冊(cè)頁面4、創(chuàng)建頁面“addphotset.aspx”頁面功能:增加相冊(cè)n在頁面中插入需要的文本框和按鈕控件,頁面布局如圖所示。n雙擊“添加”按鈕,編寫代碼,完成相冊(cè)添加功能: protected void

31、button1_click(object sender, eventargs e) string username = (string)(sessionusername); string sql=insert into userphotoset (username,photosetname,photosetcontent,createtime,photosetkey,photosetstate) ; sql += values(username,photosetname,photosetcontent,createtime,photosetkey,photosetstate); sqlpara

32、meter sqlparams = new sqlparameter new sqlparameter(username, sqldbtype.varchar), new sqlparameter(photosetname, sqldbtype.varchar), new sqlparameter(photosetcontent, sqldbtype.text), new sqlparameter(createtime, sqldbtype.datetime), new sqlparameter(photosetkey, sqldbtype.varchar), new sqlparameter

33、(photosetstate, sqldbtype.tinyint) ; sqlparams0.value = username; sqlparams1.value = txtphotosetname.text; sqlparams2.value = txtphotosetcontent.text; sqlparams3.value = system.datetime.now; sqlparams4.value = txtphotosetkey.text; sqlparams5.value = 1; if (sqlhelp.executenonquery(sqlhelp.connections

34、tringlocaltransaction, commandtype.text, sql, sqlparams) 0) response.write(添加成功); else response.write(數(shù)據(jù)庫操作失敗); 13.9.5 修改相冊(cè)信息頁面5、創(chuàng)建頁面“modifyphotosinfo.aspx”頁面功能:修改相冊(cè)信息(可以使用formview控件更新功能,或者使用代碼實(shí)現(xiàn))n打開usermain.aspx,打開gridview控件列編輯對(duì)話框。添加一個(gè)hyperlinkfield列,將添加列的datanavigateurlfields屬性設(shè)置為“psid”, datanavig

35、ateurlformatstring屬性設(shè)置為“modifyphotosinfo.aspx?psid=0”,headertext屬性設(shè)置為“修改相冊(cè)”,text屬性設(shè)置為“修改相冊(cè)”,n將gridview控件的datakeynames屬性設(shè)置為“psid”n在頁面中添加一個(gè)sqldatasource數(shù)據(jù)源,設(shè)置查詢語句為從相冊(cè)表讀取編號(hào)、名稱、介紹和關(guān)鍵詞字段,配置查詢條件為psid等于url參數(shù)中的psid的屬性值,選中“生成insert、update和delete語句”選項(xiàng),n在頁面上插入一個(gè)formview控件,設(shè)置formview控件的數(shù)據(jù)源為前面步驟配置的數(shù)據(jù)源控件,修改formvi

36、ew控件的默認(rèn)視圖為編輯視圖。13.9.6 用戶查看相冊(cè)及上傳相片頁面6、創(chuàng)建頁面“photoadmin.aspx”頁面功能:上傳相片(fileupload控件),查看相冊(cè)中相片(datalist控件),刪除相片注意:上傳照片功能:n將照片的各種信息存放在數(shù)據(jù)庫userphotos表中n將照片文件上傳到對(duì)應(yīng)的用戶目錄下(該目錄自動(dòng)創(chuàng)建)刪除照片功能:n將照片記錄從數(shù)據(jù)庫表中刪除n將照片文件也刪除n打開“usermain.aspx”,進(jìn)入gridview控件的列編輯窗口,添加一個(gè)列, datanavigateurlfields屬性設(shè)置為“psid”,datanavigateurlformatst

37、ring屬性設(shè)置為“photoadmin.aspx?psid=0”,headertext屬性設(shè)置為“管理相片”,text屬性設(shè)置為“管理相片”。n在“photoadmin.aspx”頁面添加一個(gè)fileupload控件,在上傳相片地址上放添加“相冊(cè)名稱”輸入框及“上傳照片”按鈕,布局如圖n在網(wǎng)站目錄中添加一個(gè)upphoto目錄,用戶上傳的相片均存入本目錄,n雙擊“上傳照片”按鈕,編寫如下代碼,完成照片上傳功能:n using system.io;n protected void btnupfile_click(object sender, eventargs e)n n if (filepho

38、tourl.hasfile)n /文件上傳文件上傳n string username = sessionusername.tostring();n string savepath = server.mappath(/upphoto) + / + username + /;n if (!directory.exists(savepath)n directory.createdirectory(savepath);n savepath += filephotourl.filename;n filephotourl.saveas(savepath);n /文件信息存儲(chǔ)到數(shù)據(jù)庫中文件信息存儲(chǔ)到數(shù)據(jù)庫中

39、n savepath = username + / + filephotourl.filename;n string psid = request.paramspsid;n string sql=insert into userphotos (username,psid,photoname,photourl,posttime) ;n sql += values(username,psid,photoname,photourl,posttime); nsqlparameter sqlparams = new sqlparameter n new sqlparameter(username, sq

40、ldbtype.varchar),n new sqlparameter(psid, sqldbtype.varchar),n new sqlparameter(photoname, sqldbtype.varchar),n new sqlparameter(photourl, sqldbtype.varchar),n new sqlparameter(posttime, sqldbtype.varchar);n sqlparams0.value = username;n sqlparams1.value = psid;n sqlparams2.value = txtphotoname.text

41、;n sqlparams3.value = savepath;n sqlparams4.value = system.datetime.now;n if (sqlhelp.executenonquery(sqlhelp.connectionstringlocaltransaction, commandtype.text, sql, sqlparams) 0)n datalist1.databind();n elsen response.write(數(shù)據(jù)庫操作失敗); n n n添加一個(gè)sqldatasource數(shù)據(jù)源控件,查詢語句設(shè)置為從userphotos表讀取數(shù)據(jù),設(shè)置查詢條件為相冊(cè)編號(hào)等

42、于url地址中的相冊(cè)編號(hào),n在頁面中插入一個(gè)datalist控件,設(shè)置控件數(shù)據(jù)源為上一步驟添加的數(shù)據(jù)源控件,設(shè)置repeatcolumns屬性為“5”,即設(shè)置datalist控件為一行顯示5條記錄,n將顯示相片列表的datalist控件的模板代碼設(shè)置如下: a href=upphoto/ target=_blank img src=upphoto/ width=160 height=160 style=border:0 alt= / 名稱: 上傳時(shí)間: a href=?op=del&id=&psid=刪除 n在page_load方法中添加如下代碼段,實(shí)現(xiàn)權(quán)限控制及刪除相片功能。

43、 n protected void page_load(object sender, eventargs e)n n if (sessionusername = null)n response.redirect(default.aspx);n string op = request.paramsop;n if (op != null & op.equals(del)n n string id = request.paramsid;n string psid = request.paramspsid;n string psql = select * from userphotos whe

44、re photoid=id;n string sql = delete from userphotos where photoid=id;n sqlparameter sqlparams = new sqlparameter new sqlparameter(id,sqldbtype.int) ;n sqlparams0.value = id; n sqldatareader dread = sqlhelp.executereader(sqlhelp.connectionstringlocaltransaction, commandtype.text, psql, sqlparams);n i

45、f (dread.read()n n if (system.io.file.exists(server.mappath(upphoto/ + dread.getstring(4)n system.io.file.delete(server.mappath(upphoto/ + dread.getstring(4);n nsqlhelp.executenonquery(sqlhelp.connectionstringlocaltransaction, commandtype.text, sql, sqlparams);n response.redirect(photoadmin.aspx?psi

46、d=+psid);n n 13.10 后臺(tái)代碼實(shí)現(xiàn) 相冊(cè)管理系統(tǒng)的后臺(tái)功能主要是為管理員提供用戶信息管理、相冊(cè)信息管理和相片信息管理功能,實(shí)現(xiàn)對(duì)一些用戶上傳非法內(nèi)容進(jìn)行修改和刪除。主要包含下面幾個(gè)文件。qlogin.aspx:登錄頁面。必須通過本頁面登錄后才能使用后臺(tái)功能。qdefault.aspx:后臺(tái)首頁。html框架頁面。qmenu.htm:后臺(tái)目錄頁面。qmodifyadminpassword.aspx:修改管理員登錄密碼。quseradmin.aspx:用戶管理。qphotosetadmin.aspx:相冊(cè)管理。qphotoadmin.aspx:相片管理。13.10.1 管理員登錄7

47、、在項(xiàng)目中新建一個(gè)“admin”目錄,所有后臺(tái)相關(guān)文件都將放入本目錄,在admin目錄中添加“l(fā)ogin.aspx”頁面頁面功能:管理員登錄n頁面中添加一個(gè)“l(fā)ogin”控件, 設(shè)置destinationpageurl屬性為default.aspx頁面,重載authenticate方法,編寫代碼:n protected void login1_authenticate(object sender, authenticateeventargs e)n n /獲得輸入用戶名與密碼信息n string adminuser = login1.username.replace(, );n string

48、adminpass = login1.password.replace(, );n /生成程序語句n string sql = select count(*) from adminuser where adminname=adminname and adminpass=adminpass;n sqlparameter param =n new sqlparameter(adminname,sqldbtype.char),n new sqlparameter(adminpass,sqldbtype.varchar)n ;n n param0.value = adminuser;n param1.

49、value = adminpass;n/執(zhí)行查詢于語句,得到查詢結(jié)果n int usercount = (int)(sqlhelp.executescalar(sqlhelp.connectionstringlocaltransaction, commandtype.text, sql, param);n if (usercount 0)n n /查詢成功保存用戶名n e.authenticated = true;n sessionadminuser = adminuser;n n else/查詢失敗n e.authenticated = false;n 13.10.6 后臺(tái)目錄及后臺(tái)首頁8、

50、在admin目錄下新建一個(gè)default.aspx作為后臺(tái)首頁,編寫如下代碼:nnn 相冊(cè)管理系統(tǒng)后臺(tái)nnn nn瀏覽器不支持框架頁面!nnn9、在admin目錄下建立一個(gè)menu.htm頁面,作為首頁左邊顯示的目錄頁,在menu.htm中添加如下代碼:nn 用戶管理n 相冊(cè)管理n 修改管理密碼n13.10.2 用戶管理10、在admin目錄添加一個(gè)文件,文件名為“useradmin.aspx”頁面功能:對(duì)用戶列表信息進(jìn)行刪除、編輯當(dāng)用戶被刪除時(shí),他所創(chuàng)建的相冊(cè)、上傳的相片均被刪除n在頁面中放置一個(gè)數(shù)據(jù)源控件,配置數(shù)據(jù)源的查詢語句為從用戶表讀取除密碼之外的所有字段,并啟動(dòng)生成數(shù)據(jù)操作語句,n插

51、入一個(gè)gridview控件,設(shè)置數(shù)據(jù)源為上一步配置的數(shù)據(jù)源,然后啟用分頁、編輯和刪除功能,n打開字段編輯對(duì)話框,將各個(gè)字段的headertext屬性修改為中文,將用戶名、注冊(cè)時(shí)間、最后登錄時(shí)間4個(gè)字段設(shè)置為只讀字段,即將字段的readonly屬性設(shè)置為truen重載gridview1控件的rowdeleted方法,編寫如下代碼,實(shí)現(xiàn)刪除用戶同時(shí)刪除相冊(cè)數(shù)據(jù)、相片數(shù)據(jù)及上傳相冊(cè)文件的功能:n protected void gridview1_rowdeleted(object sender, gridviewdeletedeventargs e)n n string username = e.k

52、eys0.tostring();n string psql = select * from userphotos where username=username;n string sql = delete from userphotoset where username=username;n string sql1 = delete from userphotos where username=username;n sqlparameter sqlparams = new sqlparameter n new sqlparameter(username, sqldbtype.varchar);

53、n sqlparams0.value = username; nsqldatareader dread = sqlhelp.executereader(sqlhelp.connectionstringlocaltransaction, commandtype.text, psql,sqlparams);n while (dread.read()n system.io.file.delete(nserver.mappath(./upphoto/+dread.getstring(4);n n sqlhelp.executenonquery(sqlhelp.connectionstringlocal

54、transaction, commandtype.text, sql, sqlparams);n sqlhelp.executenonquery(sqlhelp.connectionstringlocaltransaction, commandtype.text, sql1, sqlparams);n 13.10.3 相冊(cè)管理11、在admin目錄添加一個(gè)文件 “photosetadmin.aspx”頁面功能:對(duì)相冊(cè)信息進(jìn)行刪除、編輯當(dāng)相冊(cè)被刪除時(shí),相冊(cè)中的所有相片均被刪除n放置一個(gè)數(shù)據(jù)源控件到頁面中,并啟動(dòng)配置向?qū)?。配置?shù)據(jù)源為查詢相冊(cè)表的所有數(shù)據(jù),并啟用插入、修改和刪除功能,n插入一個(gè)gr

55、idview控件,設(shè)置數(shù)據(jù)源為上一步驟配置的數(shù)據(jù)源,然后啟用分頁、編輯和刪除功能,n打開列編輯對(duì)話框,修改username列的headertext屬性為“用戶名”,修改readonly屬性為truen進(jìn)入頁面源代碼狀態(tài),將數(shù)據(jù)源控件的更新語句修改如下。刪除對(duì)上一步驟設(shè)置為只讀值的字段的修改操作: updatecommand=update userphotoset set photosetname = photosetname, photosetcontent = photosetcontent, createtime = createtime, photosetkey = photosetke

56、y, photosetstate = photosetstate where psid = psidn重載gridview1控件的rowdeleted方法,編寫如下方法,實(shí)現(xiàn)刪除相冊(cè)、相冊(cè)包含的相片數(shù)據(jù)及上傳相冊(cè)文件功能:n protected void gridview1_rowdeleted(object sender, gridviewdeletedeventargs e)n n string psid = e.keys0.tostring();n string psql = select * from userphotos where psid=psid;n string sql =

57、delete from userphotoset where psid=psid;n string sql1 = delete from userphotos where psid=psid;n sqlparameter sqlparams = new sqlparameter n new sqlparameter(psid, sqldbtype.varchar);n sqlparams0.value = psid;n sqldatareader dread = sqlhelp.executereader(sqlhelp.connectionstringlocaltransaction, co

58、mmandtype.text, psql, sqlparams);n nwhile (dread.read()n n if (system.io.file.exists(server.mappath(./upphoto/ + dread.getstring(4)n system.io.file.delete(server.mappath(./upphoto/ + dread.getstring(4);n n sqlhelp.executenonquery(sqlhelp.connectionstringlocaltransaction, commandtype.text, sql, sqlpa

59、rams);n sqlhelp.executenonquery(sqlhelp.connectionstringlocaltransaction, commandtype.text, sql1, sqlparams);n 13.10.4 相片管理12、在admin目錄添加一個(gè)文件 “photoadmin.aspx”頁面功能:對(duì)相片信息進(jìn)行刪除、編輯n打開編輯相冊(cè)管理頁面的gridview控件字段編輯窗口,添加一個(gè)hyperlinkfield列,設(shè)置datanavigateurlfields屬性為“psid”,datanavigateurlformatstring屬性為“photoadmin.aspx?psid=0”,text屬性為“相片管理”,n在頁面中放置一個(gè)數(shù)據(jù)源控件,配置數(shù)據(jù)源為查詢相片表的所有數(shù)據(jù),設(shè)置查詢條件為相冊(cè)編號(hào)等于地址參數(shù)中的相冊(cè)編號(hào),n在頁面中插入一個(gè)datalist控件,并將數(shù)據(jù)源設(shè)置為上一步添加的數(shù)據(jù)源,n修改datalist控件的repeatcolum

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論