版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
ASP.NET案例操作注冊及登錄驗(yàn)證模塊設(shè)計(jì)用戶登錄及管理是任何功能網(wǎng)站應(yīng)用程序中都不可缺少的一個(gè)功能,是系統(tǒng)平安性的第一個(gè)環(huán)節(jié)。本例子詳細(xì)說明如何制作網(wǎng)站的注冊及登錄驗(yàn)證模塊。實(shí)例實(shí)現(xiàn)具體功能說明:用戶登錄;用戶注冊;修改用戶根本信息;修改用戶密碼;刪除用戶;設(shè)置用戶權(quán)限;驗(yàn)證碼進(jìn)行用戶驗(yàn)證;退出登錄。技術(shù)要點(diǎn)實(shí)現(xiàn)用戶登錄及用戶管理時(shí)還應(yīng)該防止用戶進(jìn)行惡意攻擊等平安問題,為了進(jìn)一步保證網(wǎng)站的平安,還需要使用一些輔助手段,如加密等。防止SQL注入式攻擊,可以采用以下幾種方法。使用存儲(chǔ)過程傳參的方式操作數(shù)據(jù)庫;對用戶通過網(wǎng)址提交的變量進(jìn)行參數(shù)檢查,對一些危險(xiǎn)字符進(jìn)行警告或其他處理;對用戶密碼進(jìn)行加密。本章采用該方法。功能設(shè)計(jì)在站點(diǎn)中添加幾個(gè)動(dòng)態(tài)頁面,功能如下:Login.aspx頁面:登錄主頁面Register.aspx頁面:注冊頁面UserManagement.aspx頁面:用戶管理頁面。修改用戶根本信息;修改用戶密碼;刪除用戶;設(shè)置用戶權(quán)限;ValidateNum.aspx頁面:產(chǎn)生隨機(jī)數(shù)圖片DB.cs文件:數(shù)據(jù)庫操作類,封裝數(shù)據(jù)庫操作的類文件數(shù)據(jù)庫設(shè)計(jì)新建一pub數(shù)據(jù)庫,在pub數(shù)據(jù)庫中間建立一個(gè)User表,UserID設(shè)為關(guān)鍵字,并且設(shè)置為標(biāo)識符,自動(dòng)從1開始,增量為1,默認(rèn)注冊時(shí)role值為false。在該表內(nèi)添加一條數(shù)據(jù)〔系統(tǒng)管理員〕,用戶名:xx,密碼(實(shí)際為1234,這個(gè)是加密碼):81dc9bdb52d04dc20036dbd8313ed0,角色:true警告:user是sql關(guān)鍵字,所以在寫sql語句時(shí)候,user表應(yīng)加[]建立數(shù)據(jù)庫連接使用sqldatasource數(shù)據(jù)源控件配置數(shù)據(jù)庫的連接字符串,寫到web.config文件中。格式如下:
<addname="pub"connectionString="DataSource=.;InitialCatalog=pub;PersistSecurityInfo=True;UserID=sa;Password=1234"providerName="System.Data.SqlClient"/>設(shè)計(jì)數(shù)據(jù)庫操作類DB.cs設(shè)計(jì)一個(gè)數(shù)據(jù)庫操作類,用以操作數(shù)據(jù)庫。步驟:選中網(wǎng)站文件夾,添加新項(xiàng),添加類,并命名為DB.cs,該類已經(jīng)添加了常用的命名空間,還有默認(rèn)的構(gòu)造函數(shù)。需添加代碼如下(紅色顯示):usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.SqlClient;//數(shù)據(jù)庫操作需引入的命名空間usingSystem.Security.Cryptography;//MD5加密需引入的命名空間///<summary>///DB的摘要說明///</summary>publicclassDB{ publicDB() { // //TODO:在此處添加構(gòu)造函數(shù)邏輯
// }
///<summary>///連接數(shù)據(jù)庫
///</summary>///<returns>返回SqlConnection對象</returns>publicSqlConnectionGetCon(){
returnnewSqlConnection(ConfigurationManager.ConnectionStrings["pub"].ConnectionString);}}///<summary>///執(zhí)行SQL語句///</summary>///<paramname="cmdstr">SQL語句</param>///<returns>返回值為int型:成功返1,失敗返回0</returns>publicintsqlEx(stringcmdstr){SqlConnectioncon=GetCon();//連接數(shù)據(jù)庫con.Open();//翻開連接SqlCommandcmd=newSqlCommand(cmdstr,con);try{cmd.ExecuteNonQuery();//執(zhí)行SQL語句并返回受影響的行數(shù)return1;//成功返回1}catch(Exceptione){return0;//失敗返回0}finally{con.Dispose();//釋放連接對象資源}}
///<summary>///執(zhí)行SQL查詢語句
///</summary>///<paramname="cmdstr">查詢語句</param>///<returns>返回DataTable數(shù)據(jù)表</returns>publicDataTablereDt(stringcmdstr){SqlConnectioncon=GetCon();SqlDataAdapterda=newSqlDataAdapter(cmdstr,con);DataSetds=newDataSet();da.Fill(ds);return(ds.Tables[0]);}///<summary>///執(zhí)行SQL查詢語句///</summary>///<paramname="str">查詢語句</param>///<returns>返回SqlDataReader對象dr</returns>publicSqlDataReaderreDr(stringstr){SqlConnectionconn=GetCon();//連接數(shù)據(jù)庫conn.Open();//并翻開了連接SqlCommandcom=newSqlCommand(str,conn);SqlDataReaderdr=com.ExecuteReader(CommandBehavior.CloseConnection);returndr;//返回SqlDataReader對象dr}///<summary>///MD5加密
///</summary>///<paramname="strPwd">被加密的字符串</param>///<returns>返回加密后的字符串</returns>publicstringMD5(stringstrPwd){MD5md5=newMD5CryptoServiceProvider();byte[]data=System.Text.Encoding.Default.GetBytes(strPwd);//將字符編碼為一個(gè)字節(jié)序列
byte[]md5data=md5.ComputeHash(data);//計(jì)算data字節(jié)數(shù)組的哈希值
md5.Clear();stringstr="";for(inti=0;i<md5data.Length-1;i++){str+=md5data[i].ToString("x").PadLeft(2,'0');}returnstr;}}//加密操作Login.aspx頁面設(shè)計(jì)界面設(shè)計(jì)如下:其中imagebutton的imageurl設(shè)置為~/ValidateNum.aspx后臺(tái)代碼頁加:usingSystem.Data.SqlClient;登錄按鈕代碼如下:
//實(shí)例化公共類對象
DBdb=newDB();stringuserName=TextBox1.Text.Trim();stringpassWord=db.MD5(TextBox2.Text.Trim());//對密碼進(jìn)行加密處理
stringnum=TextBox3.Text.Trim();if(Session["ValidateNum"].ToString()==num.ToUpper()){//獲取用戶信息
SqlDataReaderdr=db.reDr("select*from[User]whereUserName='"+userName+"'andPassWord='"+passWord+"'");dr.Read();if(dr.HasRows)//通過dr中是否包含行判斷用戶是否通過身份驗(yàn)證
{Session["UserID"]=dr.GetValue(0);//將該用戶的ID存入Session["UserID"]中
Session["Role"]=dr.GetValue(4);//將該用戶的權(quán)限存入Session["Role"]中
Response.Redirect("~/UserManagement.aspx");//跳轉(zhuǎn)到主頁
}else{Response.Write("<script>alert('登錄失??!請返回查找原因');location='Login.aspx'</script>");}dr.Close();}else{Response.Write("<script>alert('驗(yàn)證碼輸入錯(cuò)誤!');location='Login.aspx'</script>");}注冊按鈕代碼如下:
Response.Redirect("~/Register.aspx");//跳轉(zhuǎn)到用戶注冊頁面也可以直接設(shè)置該按鈕的postbackurl屬性ValidateNum.aspx頁面設(shè)計(jì)本頁面為純后臺(tái)操作,界面不需要任何設(shè)計(jì)。參加命名空間:usingSystem.Drawing;protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){stringvalidateNum=CreateRandomNum(4);//成生4位隨機(jī)字符串CreateImage(validateNum);//將生成的隨機(jī)字符串繪成圖片Session["ValidateNum"]=validateNum;//保存驗(yàn)證碼}}//生成隨機(jī)字符串privatestringCreateRandomNum(intNumCount){stringallChar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z";string[]allCharArray=allChar.Split(',');//拆分成數(shù)組stringrandomNum="";inttemp=-1;//記錄上次隨機(jī)數(shù)的數(shù)值,盡量防止產(chǎn)生幾個(gè)相同的隨機(jī)數(shù)Randomrand=newRandom();for(inti=0;i<NumCount;i++){if(temp!=-1){rand=newRandom(i*temp*((int)DateTime.Now.Ticks));}intt=rand.Next(35);if(temp==t){returnCreateRandomNum(NumCount);}temp=t;randomNum+=allCharArray[t];}returnrandomNum;}//生成圖片
privatevoidCreateImage(stringvalidateNum){if(validateNum==null||validateNum.Trim()==String.Empty)return;//生成Bitmap圖像
System.Drawing.Bitmapimage=newSystem.Drawing.Bitmap(validateNum.Length*12+10,22);Graphicsg=Graphics.FromImage(image);try{//生成隨機(jī)生成器
Randomrandom=newRandom();//清空圖片背景色
g.Clear(Color.White);//畫圖片的背景噪音線
for(inti=0;i<25;i++){intx1=random.Next(image.Width);intx2=random.Next(image.Width);inty1=random.Next(image.Height);inty2=random.Next(image.Height);g.DrawLine(newPen(Color.Silver),x1,y1,x2,y2);}
Fontfont=newSystem.Drawing.Font("Arial",12,(System.Drawing.FontStyle.Bold|System.Drawing.FontStyle.Italic));System.Drawing.Drawing2D.LinearGradientBrushbrush=newSystem.Drawing.Drawing2D.LinearGradientBrush(newRectangle(0,0,image.Width,image.Height),Color.Blue,Color.DarkRed,1.2f,true);g.DrawString(validateNum,font,brush,2,2);//畫圖片的前景噪音點(diǎn)
for(inti=0;i<100;i++){intx=random.Next(image.Width);inty=random.Next(image.Height);image.SetPixel(x,y,Color.FromArgb(random.Next()));}//畫圖片的邊框線
g.DrawRectangle(newPen(Color.Silver),0,0,image.Width-1,image.Height-1);System.IO.MemoryStreamms=newSystem.IO.MemoryStream();//將圖像保存到指定的流
image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);Response.ClearContent();Response.ContentType="image/Gif";Response.BinaryWrite(ms.ToArray());}finally{g.Dispose();image.Dispose();}}Register.aspx頁面設(shè)計(jì)使用三個(gè)驗(yàn)證控件驗(yàn)證輸入,設(shè)計(jì)三個(gè)按鈕,一個(gè)linkbutton按鈕,一個(gè)注冊按鈕,一個(gè)返回按鈕,該返回按鈕的causesvalidation屬性設(shè)置為false,好處是點(diǎn)擊返回按鈕是不用再驗(yàn)證控件驗(yàn)證textbox后臺(tái)代碼設(shè)計(jì)參加命名空間:usingSystem.Data.SqlClient;在后臺(tái)類中參加全局變量intreValue;//用于保存返回值。返回值為-1〔用戶名存在〕,0〔失敗〕,1〔成功〕,2〔用戶名不存在〕返回按鈕代碼:Response.Redirect("~/Login.aspx");Linkbutton按鈕代碼:
//查找用戶名是否存在,已經(jīng)存在返回-1,不存在返回2reValue=CheckName();if(reValue==-1){Response.Write("<script>alert('用戶名存在!');</script>");TextBox1.Focus();}elseif(reValue==2){Response.Write("<script>alert('恭喜您!該用戶名尚未注冊!');</script>");TextBox1.Focus();}//需添加CheckName()函數(shù)//驗(yàn)證用戶名是否存在
publicintCheckName(){//實(shí)例化公共類對象
DBdb=newDB();stringstr="selectcount(*)from[User]whereUserName='"+TextBox1.Text+"'";try{DataTabledt=db.reDt(str);if(dt.Rows[0][0].ToString()!="0"){return-1;//該用戶名已經(jīng)存在
}else{return2;//該用戶名尚未注冊
}}catch(Exceptionee){return0;}}CheckName()函數(shù)注冊函數(shù)代碼:
reValue=CheckName();if(reValue==-1){Response.Write("<script>alert('用戶名存在!');</script>");}else{DBdb=newDB();stringUserName=TextBox1.Text;stringPassWord=db.MD5(TextBox2.Text.ToString());//MD5加密
stringEmail=TextBox4.Text;stringcmdstr="insertinto[User](UserName,PassWord,Email,Role)values('"+UserName+"','"+PassWord+"','"+Email+"','false')";try{reValue=db.sqlEx(cmdstr);if(reValue==1){Response.Write("<script>alert('注冊成功!');</script>");Clear();//清空文本框,后面加clear函數(shù)
}elseif(reValue==0){Response.Write("<script>alert('注冊失?。?);</script>");}}catch(Exceptionee){Response.Write("<script>alert('注冊失??!');</script>");}}Clear函數(shù)//清空文本框
publicvoidClear(){TextBox1.Text="";TextBox2.Text="";TextBox3.Text="";TextBox4.Text="";}
UserManagement.aspx頁面設(shè)計(jì)該頁面使用了一個(gè)datalist控件,該控件可以可視化編輯界面編輯模板。選項(xiàng)如下:在UserManagement.aspx頁面上放置一個(gè)linkbutton控件,causesvalidation屬性設(shè)置為false,作用為退出,退出到起始頁面,該按鈕控件代碼如下:
//清空Session中的內(nèi)容,并停止SessionSession["ValidateNum"]=null;Session["Role"]=null;Session["UserID"]=null;Session.Clear();Session.Abandon();//跳轉(zhuǎn)到登錄頁
Response.Redirect("~/Login.aspx");用戶管理在頁面上放置一個(gè)datalist控件,編輯它的itemtemplate模板,該模板作為首選顯示選項(xiàng),主要顯示用戶信息,如果是管理員登陸的話,顯示所有注冊用戶和管理員信息,管理員可以刪除其他用戶ID,可以給其他用戶升級為管理員用戶權(quán)限操作。如果是普通注冊用戶登錄,那么只能夠顯示自己的用戶信息,用戶可以做的事情是可以修改自己的注冊信息。比方密碼郵箱。該datalist控件源代碼如下:<asp:DataListID="DataList1"runat="server"CellPadding="4"ForeColor="#333333"OnEditCommand="DataList1_EditCommand"OnCancelCommand="DataList1_CancelCommand"OnUpdateCommand="DataList1_UpdateCommand"OnDeleteCommand="DataList1_DeleteCommand"OnItemCommand="DataList1_ItemCommand"OnItemDataBound="DataList1_ItemDataBound"Font-Size="9pt"><FooterStyleBackColor="#5D7B9D"Font-Bold="True"ForeColor="White"/><SelectedItemStyleBackColor="#E2DED6"Font-Bold="True"ForeColor="#333333"/><ItemTemplate><tablestyle="width:470px;font-size:9pt;"><tr><tdstyle="width:47px;height:26px;"><asp:LinkButtonID="lnkbtnUserName"runat="server"CommandName="select"Text='<%#DataBinder.Eval(Container.DataItem,"UserName")%>'></asp:LinkButton></td><tdstyle="width:74px;height:26px;"><asp:LabelID="Label2"runat="server"Text='<%#DataBinder.Eval(Container.DataItem,"Email")%>'></asp:Label></td><tdstyle="width:81px;height:26px;"><asp:CheckBoxID="chkRole"Checked='<%#DataBinder.Eval(Container.DataItem,"Role")%>'runat="server"Enabled="False"/></td><tdstyle="width:90px;height:26px;"><asp:ButtonID="btnEdit"runat="server"CommandName="edit"Text="編輯"/><asp:ButtonID="btnDelete"runat="server"CommandName="delete"Text="刪除"CommandArgument='<%#DataBinder.Eval(Container.DataItem,"UserID")%>'OnLoad="btnDelete_Load"/></td><tdstyle="width:86px;height:26px;"><asp:ButtonID="btnSetRole"runat="server"CommandName="setRole"Text='<%#(bool)DataBinder.Eval(Container.DataItem,"Role")==true?"取消管理員權(quán)限":"設(shè)為管理員權(quán)限"%>'CommandArgument='<%#DataBinder.Eval(Container.DataItem,"UserID")%>'/></td></tr></table></ItemTemplate><EditItemTemplate><tablestyle="width:297px;height:59px;font-size:9pt;"><tr><tdstyle="width:75px;height:19px;">
用戶名:</td><tdstyle="width:131px;height:19px;"><asp:LabelID="lblUserName"runat="server"Text='<%#DataBinder.Eval(Container.DataItem,"UserName")%>'></asp:Label></td><tdstyle="width:95px;height:19px;"></td></tr><tr><tdstyle="width:75px">
舊密碼:</td><tdstyle="width:131px"><asp:TextBoxID="txtOldpwd"runat="server"TextMode="Password"Width="98px"></asp:TextBox><asp:RequiredFieldValidatorID="RequiredFieldValidator1"runat="server"ControlToValidate="txtOldpwd"ErrorMessage="*"></asp:RequiredFieldValidator></td><tdstyle="width:95px"></td></tr><tr><tdstyle="width:75px">
新密碼:</td><tdstyle="width:131px"><asp:TextBoxID="txtNewpwd"runat="server"TextMode="Password"Width="98px"></asp:TextBox><asp:RequiredFieldValidatorID="RequiredFieldValidator2"runat="server"ControlToValidate="txtNewpwd"ErrorMessage="*"></asp:RequiredFieldValidator></td><tdstyle="width:95px"></td></tr><tr><tdstyle="width:75px">
確認(rèn)密碼:</td><tdstyle="width:131px"><asp:TextBoxID="txtRepwd"runat="server"TextMode="Password"Width="98px"></asp:TextBox><asp:RequiredFieldValidatorID="RequiredFieldValidator3"runat="server"ControlToValidate="txtRepwd"ErrorMessage="*"></asp:RequiredFieldValidator></td><tdstyle="width:95px"><asp:CompareValidatorID="CompareValidator1"runat="server"ControlToCompare="txtNewpwd"ControlToValidate="txtRepwd"ErrorMessage="與密碼不符!"Width="73px"></asp:CompareValidator></td></tr><tr><tdstyle="width:75px"></td><tdstyle="width:131px"><asp:ButtonID="btnUpdate"runat="server"CommandName="update"CommandArgument='<%#DataBinder.Eval(Container.DataItem,"PassWord")%>'Text="修改密碼"/><asp:ButtonID="btnCancel"runat="server"CommandName="cancel"Text="取消"CausesValidation="False"/></td><tdstyle="width:95px"></td></tr></table></EditItemTemplate><AlternatingItemStyleBackColor="White"ForeColor="#284775"/><ItemStyleBackColor="#EBF6FD"ForeColor="#333333"/><HeaderTemplate><tablestyle="width:471px;font-size:9pt;"><tr><tdstyle="width:47px">
用戶名</td><tdstyle="width:77px">
電子郵件</td><tdstyle="width:81px">
是否為管理員</td><tdstyle="width:89px;">
操作</td><tdstyle="width:89px">
管理員設(shè)置</td></tr></table></HeaderTemplate>
<HeaderStyleBackColor="#0973DC"Font-Bold="True"ForeColor="White"/><SelectedItemTemplate><tablestyle="width:297px;height:59px;font-size:9pt;"><tr><tdstyle="width:58px;height:19px;">
用戶名:</td><tdstyle="width:131px;height:19px;"><asp:TextBoxID="txtUserName"runat="server"Text='<%#DataBinder.Eval(Container.DataItem,"UserName")%>'Width="98px"></asp:TextBox><asp:RequiredFieldValidatorID="RequiredFieldValidator4"runat="server"ControlToValidate="txtUserName"ErrorMessage="*"></asp:RequiredFieldValidator></td></tr><tr><tdstyle="width:58px">Email:</td><tdstyle="width:131px"><asp:TextBoxID="txtEmail"runat="server"Text='<%#DataBinder.Eval(Container.DataItem,"Email")%>'Width="98px"></asp:TextBox><asp:RequiredFieldValidatorID="RequiredFieldValidator1"runat="server"ControlToValidate="txtEmail"ErrorMessage="*"></asp:RequiredFieldValidator></td></tr><tr><tdstyle="width:58px"></td><tdstyle="width:131px"><asp:ButtonID="btnUpdateName"runat="server"CommandName="updateName"CommandArgument='<%#DataBinder.Eval(Container.DataItem,"UserID")%>'Text="修改用戶信息"Width="84px"/><asp:ButtonID="btnCancel"runat="server"CommandName="cancel"Text="取消"CausesValidation="False"/></td></tr></table></SelectedItemTemplate></asp:DataList>通過對datalist的定義,該控件的事件如下:為了是用戶界面更友好,操作更平安,在刪除用戶時(shí)候,給出提示,是否真的刪除?這個(gè)可以在編輯itemtemplate模板時(shí)候,對那個(gè)刪除按鈕定義個(gè)load事件,該事件代碼如下://刪除記錄前顯示提示信息protectedvoidbtnDelete_Load(objectsender,EventArgse){((Button)sender).Attributes["onclick"]="javascript:returnconfirm('你確認(rèn)要?jiǎng)h除該條記錄嗎?')";}該按鈕ID為btnDelete在該頁聲明公共變量,放在page_load函數(shù)前publicstaticstringselVal;//設(shè)置查詢條件在該頁面的page_load函數(shù)參加如下代碼:if(!IsPostBack){if(Convert.ToBoolean(Session["Role"]))selVal="";else{selVal="whereUserID="+Session["UserID"].ToString();}DataListBind();}
//用于綁定DataList控件
publicvoidDataListBind(){//實(shí)例化公共類的對象
DBdb=newDB();//定義SQL語句
stringsqlstr="select*from[User]"+selVal;//實(shí)例化數(shù)據(jù)集DataTable用于存儲(chǔ)查詢結(jié)果
DataTabledt=db.reDt(sqlstr);//綁定DataList控件
DataList1.DataSource=dt;//設(shè)置數(shù)據(jù)源,用于填充控件中的項(xiàng)的值列表
DataList1.DataBind();//將控件及其所有子控件綁定到指定的數(shù)據(jù)源
}
//顯示EditTemplate模板
protectedvoidDataList1_EditCommand(objectsource,DataListCommandEventArgse){//設(shè)置DataList1控件的編輯項(xiàng)的索引為選擇的當(dāng)前索引
DataList1.EditItemIndex=e.Item.ItemIndex;//數(shù)據(jù)綁定
DataListBind();}//取消顯示EditTemplate模板
protectedvoidDataList1_CancelCommand(objectsource,DataListCommandEventArgse){//設(shè)置DataList1控件的編輯項(xiàng)的索引為-1,即取消編輯
DataList1.EditItemIndex=-1;//數(shù)據(jù)綁定
DataListBind();}//修改用戶密碼protectedvoidDataList1_UpdateCommand(objectsource,DataListCommandEventArgse){//實(shí)例化公共類的對象
DBdb=newDB();//取得文本框中輸入的內(nèi)容
stringuserName=((Label)e.Item.FindControl("lblUserName")).Text;stringoldpassWord=((TextBox)e.Item.FindControl("txtOldpwd")).Text;stringnewpassWord=((TextBox)e.Item.FindControl("txtNewpwd")).Text;if(db.MD5(oldpassWord)==e.CommandArgument.ToString()){stringsqlStr="update[User]setPassWord='"+db.MD5(newpassWord)+"'whereUserName='"+userName+"'";//更新數(shù)據(jù)庫,變量reValue用于保存執(zhí)行Sql語句的返回值,成功為1,失敗為0
intreValue=db.sqlEx(sqlStr);if(reValue==0)Response.Write("<script>alert('密碼修改失??!');</script>");elseResponse.Write("<script>alert('您的密碼已經(jīng)成功修改!');</script>");//取消編輯狀態(tài)
DataList1.EditItemIndex=-1;DataListBind();}else{Response.Write("<script>alert('您輸入的舊密碼不正確。您的密碼沒有被更改。');</script>");}}
protectedvoidDataList1_ItemCommand(objectsource,DataListCommandEventArgse){//實(shí)例化公共類的對象
DBdb=newDB();//顯示selectTemplate模板
if(e.CommandName=="select"){//設(shè)置選中行的索引為當(dāng)前選擇行的索引
DataList1.SelectedIndex=e.Item.ItemIndex;//數(shù)據(jù)綁定
DataListBind();}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 老師免責(zé)協(xié)議書(2篇)
- 南京工業(yè)大學(xué)浦江學(xué)院《新能源汽車》2022-2023學(xué)年第一學(xué)期期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《設(shè)計(jì)思維與方法》2022-2023學(xué)年第一學(xué)期期末試卷
- 分式通分說課稿
- 啟東市安置房城東村高層住宅小區(qū)施工組織總設(shè)計(jì)方案
- 【初中化學(xué)】課題2 原子的結(jié)構(gòu)第二課時(shí)-2024-2025學(xué)年九年級化學(xué)人教版上冊
- 《雨點(diǎn)兒》說課稿
- 南京工業(yè)大學(xué)浦江學(xué)院《發(fā)動(dòng)機(jī)原理》2022-2023學(xué)年第一學(xué)期期末試卷
- 私人遷墳協(xié)議書(2篇)
- 南京工業(yè)大學(xué)《信息檢索6:藝術(shù)法學(xué)馬克思外語體育》2022-2023學(xué)年期末試卷
- 電力--標(biāo)煤---碳排放之間的換算
- 食堂食品定點(diǎn)采購詢價(jià)記錄表
- 人教六上數(shù)學(xué)外圓內(nèi)方外方內(nèi)圓及課后練習(xí)(課堂PPT)
- 管材的計(jì)算方法
- 裝修工程分項(xiàng)工程材料用量計(jì)算表
- 電動(dòng)叉車控制系統(tǒng)詳解(帶電路圖)
- 軟件項(xiàng)目管理實(shí)驗(yàn)報(bào)告(共17頁)
- CNC84操作手冊
- 班級文化建設(shè)研究課題研究報(bào)告
- 學(xué)而思寒假七年級尖子班講義第5講二元一次方程組進(jìn)階
- 信用評級系統(tǒng)操作手冊
評論
0/150
提交評論