ASP.NET開發(fā)大全第22章.注冊模塊設(shè)計,推薦文檔_第1頁
ASP.NET開發(fā)大全第22章.注冊模塊設(shè)計,推薦文檔_第2頁
ASP.NET開發(fā)大全第22章.注冊模塊設(shè)計,推薦文檔_第3頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第 22 章 注冊模塊設(shè)計注冊模塊在網(wǎng)站開發(fā)中是一個必不可少的模塊,注冊模塊讓用戶能夠在網(wǎng)站上注冊自己的信息, 以便在以后的訪問中可以直接登錄,網(wǎng)站也可以通過注冊模塊保存用戶信息,讓用戶能夠在網(wǎng)站上隨時查閱自己的信息和聚合內(nèi)容。22.1 學(xué)習(xí)要點注冊模塊需要涉及到一些 asp.net3.5 的基本知識,如果要仔細(xì)學(xué)習(xí)注冊模塊的開發(fā),需要詳細(xì)了解本書的一些章節(jié)知識,這些章節(jié)如下所示:q asp.net 的網(wǎng)頁代碼模型。q web 窗體基本控件。q 數(shù)據(jù)庫基礎(chǔ)。q ado.net 常用對象。q web 窗體數(shù)據(jù)控件。基本了解了以上章節(jié)的知識點后,就能夠熟練學(xué)習(xí)和開發(fā)此模塊。22.2 系統(tǒng)設(shè)計在進(jìn)行

2、系統(tǒng)開發(fā)時,無論是模塊開發(fā)還是整體規(guī)劃,都需要進(jìn)行系統(tǒng)設(shè)計,系統(tǒng)設(shè)計不僅能夠方便開發(fā)人員的系統(tǒng)開發(fā),同樣也節(jié)約了在后期維護中所需的時間和成本。系統(tǒng)設(shè)計就好像是一張軟件制造計劃書,通過計劃書能夠高效的進(jìn)行軟件開發(fā)和軟件維護。22.2.1 模塊功能描述注冊模塊是網(wǎng)站中最常用也是必不可少的模塊,對于注冊模塊的開發(fā),首先需要確定一個基本的用戶流程圖,如圖 22-1 所示。圖 22-1 注冊模塊基本用戶流程圖從注冊模塊的基本用戶流程圖可以看出,用戶進(jìn)行注冊這個動作非常的簡單。首先用戶需要訪問網(wǎng)站,訪問網(wǎng)站后就會選擇是否進(jìn)行注冊,如果需要注冊則網(wǎng)站提供一個注冊模塊給用戶,用戶就能夠進(jìn)行注冊。在用戶完成注冊

3、后,用戶信息還應(yīng)該被管理員管理,管理員能夠通過用戶管理頁面進(jìn)行頁面管理。從上述用戶流程圖可以基本規(guī)劃以下幾個頁面:q 注冊頁面:提供用用戶注冊操作。q 管理頁面:提供管理員管理頁面。在基本規(guī)劃了 web 應(yīng)用中需要制作的模塊,可以為這些模塊進(jìn)行模塊的流程分析。22.2.2 模塊流程分析在對業(yè)務(wù)進(jìn)行了基本的劃分之后,可以為模塊進(jìn)行基本的流程分析,包括這個模塊中最基本的函數(shù),以及這些函數(shù)在頁面中是如何執(zhí)行的。對于注冊頁面而言,首先需要確定用戶需要提供哪些注冊內(nèi)容,如果 web 應(yīng)用希望用戶提供真實的信息,例如校內(nèi)網(wǎng)這樣的 sns,那么就需要用戶提供真實的信息,以及提供應(yīng)用程序驗證用戶的真實性。如果

4、 web 應(yīng)用無所謂用戶提供的信息是真實的或者是虛假的,那么就無所謂應(yīng)用程序的開發(fā), 那么應(yīng)用程序的開發(fā)就只需要進(jìn)行入庫即可。對于管理頁面而言,管理人員需要對用戶信息進(jìn)行操作,包括修改和刪除。在 asp.net 3.5 中, 可以使用 sql 數(shù)據(jù)源控件和 sql 數(shù)據(jù)綁定控件完成功能。既然了解了基本的模塊流程和制作,就可以模擬模塊流程分析圖,如圖 22-2 所示。圖 22-2 基本模塊流程圖用戶注冊直接進(jìn)入 register.aspx 頁面進(jìn)行注冊,注冊完成后進(jìn)行數(shù)據(jù)操作,將用戶信息加入到數(shù)據(jù)庫中。管理人員進(jìn)入 manage.aspx 對用戶的注冊信息管理進(jìn)行數(shù)據(jù)操作即可。22.3 數(shù)據(jù)庫設(shè)

5、計數(shù)據(jù)庫設(shè)計是軟件設(shè)計中最為重要的一部分,當(dāng)數(shù)據(jù)庫的設(shè)計完成后,軟件開發(fā)過程中如果對于數(shù)據(jù)庫模型的更改則會引起很多的變動,如果對于數(shù)據(jù)庫其中的一個字段的更改,很可能就需要將大部分代碼中的 sql 語句進(jìn)行更改,良好的數(shù)據(jù)庫設(shè)計是非常必要的。55322.3.1 數(shù)據(jù)庫的分析和設(shè)計用戶在網(wǎng)站上進(jìn)行登錄,首先要確定對網(wǎng)站而言需要用戶的哪些基本信息,這些基本信息可以暫時歸納如下:q 用戶名:用于保存用戶的用戶名,當(dāng)用戶登錄時可以通過用戶名驗證。q 密碼:用于保存用戶的密碼,當(dāng)用戶使用登錄時可以通過密碼驗證。q 性別:用于保存用戶的性別。q 頭像:用于保存用戶的個性頭像。q qq/msn:用于保存用戶的

6、 qq/msn 等信息。q 個性簽名:用于展現(xiàn)用戶的個性簽名等資料。q 備注:用于保存用戶的備注信息。q 用戶情況:用于保存用戶的狀態(tài),可以設(shè)置為通過審批和未通過等。對數(shù)據(jù)庫的基本分析完成后,就可以創(chuàng)建數(shù)據(jù)庫表來存儲用戶注冊的信息。這里需要創(chuàng)建一個register 數(shù)據(jù)庫,創(chuàng)建完成后就能夠在 register 數(shù)據(jù)庫中創(chuàng)建表。22.3.2 數(shù)據(jù)表的創(chuàng)建創(chuàng)建表可以通過 sql server management studio 視圖進(jìn)行創(chuàng)建也可以通過 sql server management studio 查詢使用 sql 語句進(jìn)行創(chuàng)建,本書兩者都介紹。這個模塊的數(shù)據(jù)庫設(shè)計比較簡單,為了保存用戶

7、信息,可以創(chuàng)建一個 register 表并為數(shù)據(jù)庫分析中的基本信息創(chuàng)建字段,如圖 22-3 所示。圖 22-3 數(shù)據(jù)庫表結(jié)構(gòu)正如圖 22-3 中所示,表為用戶的基本信息創(chuàng)建了字段,這些字段的意義分別為:q id:用于標(biāo)識用戶的 id 號,并為自動增長的主鍵。q username:用于標(biāo)識用戶名。q password:用于標(biāo)識用戶密碼。q sex:用于標(biāo)識用戶性別。q picture:用于標(biāo)識用戶頭像。q im:用于標(biāo)識用戶的 im 信息,包括 qq/msn 等。q information:用于標(biāo)識用戶的個性簽名。q others:用于標(biāo)識用戶的備注信息。use register goq ifi

8、suser:用于標(biāo)識用戶是否為合法用戶。創(chuàng)建數(shù)據(jù)表的 sql 查詢語句代碼如下所示。set ansi_nulls on goset quoted_identifier on gocreate table dbo.register(id int identity(1,1) not null,username nvarchar(50) collate chinese_prc_ci_as null, password nvarchar(50) collate chinese_prc_ci_as null, sex int null,picture nvarchar(max) collate chin

9、ese_prc_ci_as null, im nvarchar(50) collate chinese_prc_ci_as null,information nvarchar(max) collate chinese_prc_ci_as null, others nvarchar(max) collate chinese_prc_ci_as null, ifisuser int null,constraint pk_register primary key clustered(id asc/創(chuàng)建數(shù)據(jù)庫)with (pad_index= off, statistics_norecompute=

10、off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on) on primary) on primary上述代碼創(chuàng)建了一個數(shù)據(jù)庫并將 id 設(shè)為自動增長的主鍵,在用戶注冊時,可以不向該字段進(jìn)行數(shù)據(jù)操作。22.4 界面設(shè)計良好的界面設(shè)計是吸引用戶的基本,在注冊頁面將頁面設(shè)計的豐富多彩,可以吸引用戶的注冊和登錄,并提高回頭率。在進(jìn)行頁面設(shè)計時,可以使用 css 也可以使用表格進(jìn)行頁面布局,相比之下css 具有更高的靈活性。22.4.1 基本界面在進(jìn)行頁面布局前,只需要創(chuàng)建一個基本頁面以滿足應(yīng)用程序的需求即可。注冊模

11、塊需要一些基本的控件,這些控件包括 textbox 控件、label 控件和按鈕控件,示例代碼見光盤中源代碼第 22 章22-122-1default.aspx 所示。上述代碼創(chuàng)建了一個頭部信息層、一個注冊信息層和一個底部信息層,這三個層分別負(fù)責(zé)頭部圖片的顯示、注冊信息的樣式控制和底部版權(quán)說明,在沒有 css 控制時,其效果如圖 22-4 所示。圖 22-4 基本樣式在基本樣式中,注冊信息層使用表格進(jìn)行排版,使用表格能夠快速的進(jìn)行頁面的布局控制,表格同樣可以使用 css 進(jìn)行樣式控制。22.4.2 創(chuàng)建 cssbodyfont-size:12px;font-family:geneva, ari

12、al, helvetica, sans-serif; margin:0px 0px 0px 0px;.topbackground:white url(top.png) no-repeat top center; height:200px;margin:0px auto; width:800px;.registermargin:0px auto; width:800px;.endbackground:#f9fbfd; margin:0px auto; width:800px;text-align:center; padding:10px 10px 10px 10px;/設(shè)置頁面樣式/設(shè)置頭部樣式

13、/設(shè)置注冊樣式/設(shè)置底部樣式使用 css 進(jìn)行網(wǎng)頁布局能夠極大的加強網(wǎng)頁布局的靈活度,同樣在網(wǎng)頁布局中也提高了代碼的復(fù)用性并將 html 頁面代碼與 css 代碼相分離,css 頁面代碼如下所示。在 css 頁面文件樣式編寫完畢后,就需要在相應(yīng)的頁面進(jìn)行引用,示例代碼如下所示。 在使用了 css 文件后,頁面樣式如圖 22-5 所示。圖 22-5 css 樣式控制后的頁面上述頁面在 css 的樣式控制下顯得非常的友好,用戶在進(jìn)行注冊時,會感覺到應(yīng)用程序是在用心制作的情況下上線的,提高了用戶的回頭率。22.5 代碼實現(xiàn)在完成基本的控件布局和 css 樣式布局之后,頁面就能夠呈現(xiàn)在客戶端瀏覽器中。

14、但是如果用戶想要在頁面中執(zhí)行邏輯操作,就需要進(jìn)行代碼實現(xiàn)完成應(yīng)用程序所需要執(zhí)行的頁面邏輯,以保證用戶注冊功能能夠良好的運行。22.5.1 驗證控制在用戶進(jìn)行注冊操作時,需要對用戶進(jìn)行用戶驗證控制,例如用戶沒有輸入密碼的情況下單擊了注冊控件,數(shù)據(jù)是不應(yīng)該被插入到數(shù)據(jù)庫中的。如果沒有對數(shù)據(jù)進(jìn)行驗證則會插入很多空數(shù)據(jù),影響數(shù)據(jù)庫功能。若要實現(xiàn)驗證控制,可以使用現(xiàn)有的驗證控件進(jìn)行驗證控制,示例代碼見關(guān)盤中源代碼 第 22 章22-122-1default.aspx。上述代碼使用了 requiredfieldvalidator 控件進(jìn)行了基本的驗證,如果用戶輸入的用戶名和密碼以及性別為空,則會說明用戶名

15、和密碼以及性別為空,請重新輸入,如圖 22-6 所示。圖 22-6 驗證控制進(jìn)行驗證控制后,就能夠防止非法用戶或用戶疏忽所造成的空數(shù)據(jù)庫問題,也方便了數(shù)據(jù)維護的進(jìn)行。22.5.2 過濾輸入信息在進(jìn)行數(shù)據(jù)操作之前,并不能只憑用戶輸入的信息是否為空就能夠判斷用戶是否是合法用戶,在web 應(yīng)用中包括很多的不好的信息,例如黃色淫穢名稱或者是特殊的字符串,都有可能對網(wǎng)站造成危害。注意:不僅僅是黃色淫穢的名稱會對網(wǎng)站造成危害,特殊的字符串還有可能造成 sql 注入等更大的危害。protected void button1_click(object sender, eventargs e)if (check

16、(textbox1.text) | check(textbox2.text) | check(textbox4.text) | check(textbox5.text) | check(textbox6.text) | check(textbox7.text)label8.text = 用戶信息中不能夠包含特殊字符如,/,等,請審核;else/注冊代碼/判斷/輸出信息在用戶單擊按鈕控件時會執(zhí)行數(shù)據(jù)插入操作,在數(shù)據(jù)插入之前就需要對信息進(jìn)行過濾,示例代碼如下所示。上述代碼使用了 check 函數(shù)對文本框控件進(jìn)行了用戶資料的判斷,check 函數(shù)的實現(xiàn)如下所示。protected bool chec

17、k(string text)/判斷實現(xiàn)if (text.contains() | text.contains() |text.contains(/) | text.contains()/檢查字串return true;/返回真elsereturn false;/返回假check 函數(shù)定義了基本的判斷方式,如果文本框信息中包含“”,“”,“/”,“” 等字符串時,該方法將會返回 true,否則會返回 false。這也就是說,如果字符串中包含了這些字符, 則會返回 true。在 button1_click 函數(shù)中就會判斷包含非法字符,并進(jìn)行提示,否則會執(zhí)行注冊代碼。對關(guān)鍵字的過濾是非常必要的,這樣

18、能夠保證應(yīng)用程序的完整性并提高應(yīng)用程序健壯性,同時也對數(shù)據(jù)庫中的完整性進(jìn)行了保護。22.5.3 插入注冊信息protected void button1_click(object sender, eventargs e)if (check(textbox1.text) | check(textbox2.text) | check(textbox4.text) | check(textbox5.text) | check(textbox6.text) | check(textbox7.text)label8.text = 用戶信息中不能夠包含特殊字符如,/,等,請審核;elsetrysqlcon

19、nection con =new sqlconnection(server=(local);database=register;uid=sa;pwd=sa); con.open();string strsql =/檢查字串/輸出信息/建立連接/打開連接insert into register (username,password,sex,picture,im,information,others,ifisuser) values ( + textbox1.text + , + textbox2.text + , + dropdownlist1.text + , +textbox4.text +

20、 , + textbox5.text + , + textbox6.text + , + textbox7.text + ,0); sqlcommand cmd = new sqlcommand(strsql,con);/創(chuàng)建執(zhí)行cmd.executenonquery();/執(zhí)行 sqllabel8.text = 注冊成功,請牢記您的信息;/提示成功catchlabel8.text = 出現(xiàn)錯誤信息,請返回給管理員;/拋出異常當(dāng)用戶單擊按鈕控件時,如果對用戶進(jìn)行了非空驗證和關(guān)鍵字過濾后,就能夠進(jìn)行數(shù)據(jù)的插入, 用戶可以使用 ado.net 進(jìn)行數(shù)據(jù)操作,示例代碼如下所示。string chec

21、k = select * from register where username= + textbox1.text + ; sqldataadapter da = new sqldataadapter(check,con);dataset ds = new dataset(); da.fill(ds, table);if (da.fill(ds, table) 0)label8.text = 注冊失敗,有相同用戶名;elsesqlcommand cmd = new sqlcommand(strsql, con);/創(chuàng)建適配器/創(chuàng)建數(shù)據(jù)集/填充數(shù)據(jù)集/判斷同名/輸出信息/創(chuàng)建執(zhí)行對象上述代碼通

22、過 ado.net 實現(xiàn)了數(shù)據(jù)的插入,但是上述代碼有一個缺點,如果用戶注冊了一個用戶并且名稱為 abc,當(dāng)這個用戶注銷并再注冊一個用戶名稱為 abc 時,如果依舊將數(shù)據(jù)插入到數(shù)據(jù)庫則會出現(xiàn)錯誤。值得注意的是,這個錯誤并不是邏輯錯誤,但是這個錯誤會造成不同的用戶可能登錄了同一個用戶信息并產(chǎn)生信息錯誤。為了避免這種情況的發(fā)生,在用戶注冊前首先需要執(zhí)行判斷,示例代碼如下所示。cmd.executenonquery();label8.text = 注冊成功,請牢記您的信息;/執(zhí)行 sql/輸出成功在用戶注冊時,首先從數(shù)據(jù)庫查詢出是否已經(jīng)包含這個用戶名的信息,如果包含則不允許用戶注冊,如果沒有,則說明用

23、戶是一個新用戶,可以進(jìn)行注冊。22.5.4 管理員頁面管理員頁面作為管理頁面,其功能非常簡單,只需要對數(shù)據(jù)進(jìn)行刪除和修改即可,無需進(jìn)行任何的數(shù)據(jù)操作,使用 asp.net 本身的數(shù)據(jù)源控件和數(shù)據(jù)綁定控件就能夠?qū)崿F(xiàn)管理員頁面的編寫和制作。作為數(shù)據(jù)的呈現(xiàn),可以使用 gridview 控件進(jìn)行呈現(xiàn),同時 gridview 控件還支持編輯和刪除功能,示例代碼見光盤中源代碼第 22 章22-122-1manage.aspx 所示。上述代碼編寫了 gridview 控件的樣式并且為 gridview 控件配置了數(shù)據(jù)源,同時也配置 gridview控件能夠支持編輯和刪除等操作,在數(shù)據(jù)源配置時,需要新建一個連

24、接字串,如圖 22-7 所示。建立連接字串并保存連接字串到 web.config 文件中,單擊【下一步】按鈕,可以生成 sql 語句, 在生成 sql 語句時,為了方便管理,管理員通常都是對最新注冊用戶進(jìn)行管理,如圖 22-8 所示。圖 22-7 建立連接字串圖 22-8 選擇排序方式選擇按照 id 的方式進(jìn)行倒序,能夠讓管理員快速的管理最新的注冊用戶,并進(jìn)行編輯和刪除等操作,為了能夠讓數(shù)據(jù)源自動支持編輯和刪除操作,必須進(jìn)行數(shù)據(jù)源高級配置,如圖 22-9 所示。圖 22-9 生成數(shù)據(jù)操作語句勾選【生成 insert、update 和 delete 語句】選項,以支持?jǐn)?shù)據(jù)源控件自動進(jìn)行編輯和刪除

25、等操作,單擊【確定】按鈕并完成,就將數(shù)據(jù)源控件配置完成,數(shù)據(jù)源控件配置后代碼見光盤中源代碼第 22 章22-122-1manage.aspx 所示。從上述代碼可以看出數(shù)據(jù)源控件中生成的 sql 語句,使用數(shù)據(jù)源控件能夠簡化開發(fā)人員對數(shù)據(jù)的開發(fā)。22.6 實例演示編寫完成頁面代碼和邏輯代碼后,就可以進(jìn)行注冊和管理操作了,單擊【運行】按鈕運行模塊, 就能夠?qū)崿F(xiàn)用戶的注冊操作。用戶在注冊頁面可以填寫相應(yīng)的用戶注冊信息,這些信息能夠保存用戶在相應(yīng)網(wǎng)站上所需要的個人信息,同時網(wǎng)站還能夠使用這些信息對用戶數(shù)據(jù)進(jìn)行歸納和整合,如圖 22- 10 所示。用戶可以在該頁面填寫用戶信息,并進(jìn)行注冊。用戶填寫相關(guān)選

26、項時,系統(tǒng)都為相關(guān)的選項進(jìn)行 了驗證和關(guān)鍵字符的過濾,如果用戶是一個非法用戶,系統(tǒng)通過非法的方法(如 sql 注入和字符注入) 時,就能夠驗證當(dāng)前用戶注冊方法是不正常的方法,就會提示用戶注冊中所填的項目是錯誤的。同樣 如果用戶忘記填寫相應(yīng)的選項時,系統(tǒng)也會提示用戶必須填寫相應(yīng)的項目,否則不予注冊。這種做法是基于 web 應(yīng)用的安全考慮的,不僅提高了網(wǎng)站的健壯性,也讓數(shù)據(jù)庫中避免了過多的非法信息,也保證了 web 應(yīng)用的其他模塊能夠正常的運行。當(dāng)用戶注冊信息錯誤時,系統(tǒng)會提示信息錯誤,如圖 22-11 所示。圖 22-10 注冊模塊運行示例圖 22-11 注冊信息異常如果用戶注冊成功,開發(fā)人員能夠控制用戶跳轉(zhuǎn)到登錄頁面,登錄頁面會在后面的模塊中講解。對于 web 應(yīng)用而言,需要對現(xiàn)有的用戶信息進(jìn)行管理,所以管理員能夠在后臺管理頁面中管理相應(yīng)的用戶,進(jìn)行編輯和刪除等操作,如圖 22-12 所示。圖 22-12 編輯相應(yīng)用戶管理員可以在管理頁面對用戶數(shù)據(jù)庫中的相應(yīng)字段進(jìn)行修改和增加,如果用戶忘記了自己的密碼, 也可以通過聯(lián)系管理員獲取和修改自己的密碼,對于惡意注冊的用戶,管理員可以輕易的刪除相應(yīng)的注冊用戶。22.7 小結(jié)本章

溫馨提示

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

評論

0/150

提交評論