會員注冊的實現_第1頁
會員注冊的實現_第2頁
會員注冊的實現_第3頁
會員注冊的實現_第4頁
會員注冊的實現_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

會員注冊的結構一、 設計數據庫二、 會員注冊界面設計三、 會員注冊的功能實現(一)檢測帳號檢測帳號分為兩種方式:1、用戶輸入帳號后立即檢測檢測程序流程:(1) 判斷用戶帳號文本框是否為空(2)清除用戶輸入的無效字符(3)調用檢測用戶帳號的方法檢測用戶帳號是否已被注冊2、用戶單擊注冊按鈕后檢測(二) 會員注冊四、 會員注冊驗證的實現(一)非空驗證(二)比較驗證(三) 控制最大字符數(四)正則表達式驗證會員注冊用到的方法序號名稱編寫文件作用1Cleanlnput()Register.aspx.es清除無效字符2DetectionAccount()gh.es檢測用戶帳號是否已被注冊3ExecReaderNum()gh.es讀取一個整數4AddUser()gh.es添加會員5ExecData()gh.es修改數據6Encrypt()gh.es數據加密會員注冊的實現在互聯網上,許多網站采用了會員制,用戶注冊后成為一名會員,可以行使會員的權力。在此,我以一名網站制作者的身份,來介紹會員注冊的實現。實現會員注冊,首先是設計數據庫,然后設計會員注冊界面,最后編寫會員注冊的方法和驗證。一、設計數據庫在數據庫中設計一個會員表,用于存儲會員數據。會員表包含四個項目:會員編號、會員帳號、登錄密碼和會員郵箱。會員編號作為會員的序號,添加會員時自動生成;會員帳號是會員的標識,要惟一,設置為會員表的主鍵;登錄密碼是會員登錄時的驗證碼;會員郵箱作為網站與會員聯系的一種途徑,網站可以將相關信息發(fā)到會員郵箱中。會員表的結構如表1-1所示。表1-1tusers列名數據類型長度說明t_usersint41?會員編號(標識:是)usernamevarchar502?會員帳號(主鍵)passwordvarchar2003.登錄密碼eMailvarchar504.會員郵箱注:t_users的標識值為是,標識種子為1,標識遞增量為1。會員注冊界面設計在網站根目錄下新建一個文件夾member,member用于放置會員注冊的網頁和會員的其他網頁。在member中添加一個Web窗體Register.aspx,Register.aspx為會員注冊的網頁。在窗體Register.aspx中設計會員注冊的界面。會員注冊界面內容:1、標題標題為會員注冊2、用戶輸入項目用戶輸入內容分為四項:(1)用戶帳號(2) 登錄密碼(3) 確認密碼(4) 電子郵箱每個項目包括標簽、文本框、標注和驗證控件。為了在用戶輸入帳號后立即檢測,在用戶帳號的文本框后放置一個按鈕控件。3、注冊按鈕注冊按鈕用于用戶單擊按鈕完成注冊。會員注冊界面如圖1-1所示。會員注冊嚴為必填項)塚用戶帳號:需檢測帳號]可由420位英文宇母,數宇或下劃線組成WF帳號格貳F正確■:. °塚鱉錄密碼:E豊錄密碼格式不正確‘:?可由E-2Q位英文字母、數字或下劃線組成塚踴認密碼:IE蓿重新輸入密碼塚電子郵箱:惰填寫有效且常用的曲地址肯輸人正確的電子郵箱!F注 冊|ro/UserName]rf/Password]rf/E.ePassword'缶EMail]?錯誤信息1。?錯誤信息2。圖1-1會員注冊界面三、會員注冊的實現(一)檢測帳號會員帳號在同一個會員系統(tǒng)中是不能重復的,為了保證會員帳號惟一,設置檢測帳號的功能。檢測帳號分為兩種方式:1、用戶輸入帳號后立即檢測在用戶帳號的文本框后面放置一個按鈕,在按鈕的單擊事件btnJczh_Click中編寫代碼檢測用戶輸入的帳號是否已經被注冊了。檢測程序流程:(1)判斷用戶帳號文本框是否為空如果用戶帳號文本框不是空的,則執(zhí)行(2)和(3)。如果用戶帳號文本框是空的,則提示用戶輸入用戶帳號。代碼如代碼清單1-1所示。代碼清單1-1檢測用戶帳號//檢測帳號是否已被注冊protectedvoidbtnJczh_Click(objectsender,EventArgse){//1.判斷用戶帳號的文本框是否為空,如果用戶帳號的文本框不為空。if(txtusername.Text!=""){//2.清除用戶輸入的無效字符txtusername.Text=CleanInput(txtusername.Text.Trim());//3.調用檢測用戶帳號的方法,檢測用戶帳號是否已被注冊。num=gh1.DetectionAccount(txtusername.Text.Trim());if(num>0)//num>0表示用戶輸入的帳號已被注冊{txtusername.Text="";Response.Write("<script>alert('抱歉,此帳號已被其他用戶使用!’);</script>");}else{Response.Write("<script>alert('恭喜你!此帳號可用!');</script>");}}else//用戶帳號的文本框為空,提示用戶輸入用戶帳號。{Response.Write("<script>alert('請輸入用戶帳號!');</script>");}}if(txtusername.Text!="")判斷用戶帳號文本框是否為空,如果if成立則表示用戶帳號文本框不是空的。else表示用戶帳號文本框是空的,Response.Write("<script>alert('請輸入用戶帳號!');</script>")提示用戶輸入用戶帳號。(2)清除用戶輸入的無效字符如果用戶在用戶帳號文本框中輸入了數據,為了避免無效數據,使用清除無效字符的方法清除無效字符。在代碼清單1-1中txtusername.Text=CleanInput(txtusername.Text.Trim());是清除用戶帳號文本框txtusername的無效字符。無效字符是指除英文字母、數字和下劃線之外的字符。Cleanlnput()是清除無效字符的方法。Cleanlnput()方法的代碼如代碼清單1-2所示。代碼清單1-2清除無效字符的方法CleanInput()///<summary>///清除無效字符///</summary>///<paramname二"strln">字符串</param>///<returns〉有效字符串</returns>StringCleanInput(stringstrIn){//空字符串替換無效字符。returnRegex.Replace(strln,@"「\w]","");}strIn是需要清除的字符串,return返回清除后的字符串。Regex.Replace()是清除的方法,其中Regex表示不可變的正則表達式,Replace是替換字符的方法。「\w]是正則表達式定義的字符模式,表示非數字、英文字母和下劃線的字符串。""是空字符串。Regex.Replace(strln,@"「\w]","")就是用空字符串替換非數字、英文字母和下劃線的字符串,即用空字符串替換無效字符。使用類Regex需要導入名稱空間System.Text.RegularExpressions。(3)調用檢測用戶帳號的方法檢測用戶帳號是否已被注冊如果用戶在用戶帳號文本框中輸入了數據,在清除用戶帳號文本框中的無效字符后,調用檢測用戶帳號的方法檢測用戶帳號是否已被注冊。在代碼清單1-1中num=gh1.DetectionAccount(txtusername.Text.Trim());就是調用檢測用戶帳號的方法。ghl是類的一個對象,DetectionAccount()是檢測用戶帳號的方法,txtusername是用戶帳號文本框的ID,DetectionAccount()方法的返回值保存在num中。DetectionAccount()方法寫在類文件gh.cs中,代碼如代碼清單1-3所示。代碼清單1-3檢測用戶帳號是否已被注冊///<summary>///22、檢測帳號///</summary>///〈paramname二"strUserName">會員帳號</param>///<returns>整數</returns>publicintDetectionAccount(stringstrUserName){intnum=0;stringsql="SELECTcount(userid)FROMt_usersWHEREusername='"+strUserName+"'";num=this.ExecReaderNum(sql);returnnum;}在會員表中查詢用戶輸入的用戶帳號,如果在會員表中沒有找到,表示用戶輸入的帳號未被注冊,可以使用。如果在會員中找到了,表示用戶輸入的帳號已經被他人注冊,不可以使用。SELECTcount(userid)FROMt_usersWHEREusername二'"+strUserName+"'是查詢帳號的SQL語句,帳號username為查詢的條件,查詢字段會員編號userid。ExecReaderNum()是從數據庫中讀取一個整數的方法,此方法寫類文件gh.cs中,代碼如代碼清單1-4所示。代碼清單1-4方法ExecReaderNum()從數據庫中讀取一個整數///<summary>///9、從數據庫中讀取整數,通用方法。///</summary>///<paramname二"sql">查詢語句</param>///<returns>整數</returns>publicintExecReaderNum(stringsql){//獲取數據庫的連接字符串using(SqlConnectionconn=newSqlConnection(SqlHelper.ConnectionStringLocalTransaction)){intnum=0;try{//打開數據庫連接conn.Open();//設置Sqlcommand命令的屬性cmd.Connection=conn;cmd.CommandType=CommandType.Text;cmd.CommandText=sql;//執(zhí)行讀取的SqlCommand命令,將數據讀入數據讀取器中。SqlDataReaderreader=cmd.ExecuteReader();//如果能讀取數據,則將數據給整型變量num。while(reader.Read()){num=reader.GetInt32(0);}returnnum;}catch{//關閉與數據庫的連接conn.Close();throw;}}}ExecReaderNum()方法的代碼,包括連接數據庫,設置Sqlcommand命令,執(zhí)行Sqlcommand命令讀取數據。SqlDataReaderreader=cmd.ExecuteReader();是讀取數據的代碼,數據存儲在reader中。num=reader.Getint32(0);是讀取整數的代碼,整數存儲在num中。3、用戶單擊注冊按鈕后檢測用戶單擊注冊按鈕后,在按鈕的單擊事件Button1_Click中調用檢測帳號的方法檢測用戶輸入的帳號是否已被注冊。//調用檢測帳號的方法,檢測用戶輸入的帳號是否已被注冊。num=gh1.DetectionAccount(txtusername.Text.Trim());ghl是類的一個對象,DetectionAccount()是檢測帳號的方法。num是一個int變量,用于獲取DetectionAccount()的返回值。如果num大于零表示在會員表t_users中已有用戶輸入的帳號,清除用戶輸入的帳號,并提示用戶輸入的帳號不能用。(二)會員注冊用戶在會員注冊界面單擊“注冊”按鈕后,在“注冊”按鈕的單擊事件Button1_Click中編寫代碼完成會員的注冊。會員注冊其實就是將用戶在會員注冊界面輸入的用戶帳號、登錄密碼和電子郵箱郵插入會員表t_users中。在插入數據之前,先要檢測用戶輸入的用戶帳號在t_users表中已存在。如果已存在,表示用戶輸入的用戶帳號已被注冊,不可以再注冊。檢測用戶帳號的內容在“(一)檢測帳號”中的“2、用戶單擊注冊按鈕后檢測”已介紹,這里主要介紹用戶注冊的內容。如果用戶輸入的用戶帳號未被注冊,則調用會員注冊的方法AddUser()完成會員注冊,代碼如代碼清單1-5所示。代碼清單1-5調用會員注冊的方法protectedvoidButton1_Click(objectsender,EventArgse){//調用檢測帳號的方法,檢測用戶輸入的帳號是否已被注冊。num=gh1.DetectionAccount(txtusername.Text.Trim());if(num>0) //num>0表示帳號被注冊{txtusername.Text=""; //清空文本框Response.Write("<script>alert('抱歉,此帳號已被其他用戶使用!’);</script>");}else //帳號未被注冊,添加用戶。{//說明:如果密碼加密,貝吐_users表中password的長度要超過47,否則注冊會出錯。try{//調用“會員注冊”的方法,將會員帳號、登錄密碼和郵箱插入數據庫,并對密碼加密。num=gh1.AddUser(txtusername.Text.Trim(),gh1.Encrypt(txtPassword.Text.Trim()),txtEMail.Text.Trim());if(num>0){Response.Write("<script>alert('恭喜你!注冊成功!’)</script>");Response.Write("<scriptlanguage=javascript>window.location.href=document.URL;</script>");}else{Response.Write("<script>alert(‘你注冊失敗,請重新注冊!')</script>");}}catch(Exceptionex){stringsRawURL=Request.RawUrl;if(sRawURL.IndexOf("?")>-1){sRawURL=sRawURL.Substring(0,sRawURL.IndexOf("?"));}stringstrError=ex.ToString();Response.Write("<script>alert(strError)</script>");}}}AddUser()有三個參數,分別是用戶帳號、登錄密碼和電子郵箱,txtusername是用戶帳號文本框的ID,txtPassword是登錄密碼文本框的ID,txtEMail是電子郵箱文本框的ID。如果if(num>0)成立,表示會員注冊成功。catch(Exceptionex)是異常處理的代碼。AddUser()方法寫在類文件gh.cs中,其代碼如代碼清單1-6所示。代碼清單1-6會員注冊方法AddUser()///<summary>///21、會員注冊///</summary>///〈paramname二"sUserName">會員帳號</param>///<paramname二"sPassword">登錄密碼</param>///<paramname二"sEMail">郵箱</param>///<returns>整數</returns>publicintAddUser(stringsUserName,stringsPassword,stringsEMail){stringsql="Insertintot_usersvalues('"+sUserName+"','"+sPassword+"','"+sEMail+"')";intnum=ExecData(sql);returnnum;}會員注冊方法AddUser()功能是向會員表t_users插入數據,Insertintot_usersvalues('"+sUserName+"','"+sPassword+"','"+sEMail+"')是插入數據的SQL語句,ExecData(sql)是實現數據插入的方法。如果數據插入成功ExecData(sql)的返回值為1,即num的值為1,方法AddUser()的返回值為1。方法ExecData()是一個通用方法,它能執(zhí)行數據的插入、修改和刪除,代碼如代碼清單1-7所示。代碼清單1-7通用方法ExecData()///<summary>///1、更新(插入、修改和刪除)表中的數據,通用方法。///</summary>///〈paramname二"sql">SQL語句</param>///<returns>整數</returns>publicintExecData(stringsql){intnum=0;//獲取數據庫的連接字符串using(SqlConnectionconn=newSqlConnection(SqlHelper.ConnectionStringLocalTransaction)){//設置Sqlcommand命令的屬性cmd.Connection=conn;cmd.CommandType=CommandType.Text;cmd.CommandText=sql;try{//打開數據庫連接conn.Open();}catch(Exceptionex){thrownewMyException("10001","數據庫連接失敗!",ex);}try{//執(zhí)行命令,插入數據num=cmd.ExecuteNonQuery();}catch(Exceptionex){thrownewMyException("10002",ex.Message,ex);finally{if(conn.State==ConnectionState.Open){conn.Close();}}returnnum;}}ExecData()方法,包括連接數據庫,設置Sqlcommand命令,執(zhí)行Sqlcommand命令插入數據。num=cmd.ExecuteNonQuery();為插入數據的代碼,使用ExecuteNonQuery()方法向表中插入數據。數據數據插入成功ExecuteNonQuery()會返回一個大于零的整數。在“注冊”按鈕的單擊事件中使用Encrypt()方法對登錄密碼加密。登錄密碼加密后管理員也無法知道會員的密碼,只有會員本人知道自己的密碼。加密代碼如代碼清單1-8所示。代碼清單1-8數據加密方法Encrypt()///<summary>///15、數據加密///</summary>///〈paramname二"password">字符串</param>///<returns>字符串</returns>publicStringEncrypt(stringpassword){//把加密的字符串轉化為Byte數組Byte[]clearBytes=newUnicodeEncoding().GetBytes(password);//調用MD5加密算法Byte[]hashedBytes=((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);returnBitConverter.ToString(hashedBytes);}在Encrypt()中使用MD5算法加密,Encrypt()返回加密的字符串。

四、會員注冊驗證的實現(一)非空驗證1、需要驗證的項目用戶帳號、登錄密碼、確認密碼、電子郵箱2、驗證控件RequiredFieldValidator表1-2“用戶帳號”非空驗證控件屬性設置屬性名屬性值說明IDrfvUserNameControlToValidatetxtusernametxtusername是用戶帳號文本框的IDDisplayNoneErrorMessage請您輸入帳號!表1-3“登錄密碼”非空驗證控件屬性設置屬性名屬性值說明IDrfvPasswordControlToValidatetxtPasswordtxtPassword是登錄密碼文本框的IDDisplayNoneErrorMessage請您輸入密碼!表1-4“確認密碼”非空驗證控件屬性設置屬性名屬性值說明IDrfvRePasswordControlToValidatetxtRePasswordtxtRePassword是確認密碼文本框的IDDisplayNoneErrorMessage請您輸入確認密碼!

表1-5“電子郵箱”非空驗證控件屬性設置屬性名屬性值說明IDrfvEMailControlToValidatetxtEMailtxtEMail是電子郵箱文本框的IDDisplayNoneErrorMessage請您輸入電子郵箱!(二)比較驗證1、需要驗證的項目確認密碼確認密碼要與登錄密碼相同2、驗證控件CompareValidator表1-6“確認密碼”比較驗證控件屬性設置屬

溫馨提示

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

評論

0/150

提交評論