網(wǎng)站開(kāi)發(fā)項(xiàng)目報(bào)告書(shū)_第1頁(yè)
網(wǎng)站開(kāi)發(fā)項(xiàng)目報(bào)告書(shū)_第2頁(yè)
網(wǎng)站開(kāi)發(fā)項(xiàng)目報(bào)告書(shū)_第3頁(yè)
網(wǎng)站開(kāi)發(fā)項(xiàng)目報(bào)告書(shū)_第4頁(yè)
網(wǎng)站開(kāi)發(fā)項(xiàng)目報(bào)告書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、項(xiàng)目報(bào)告書(shū)注冊(cè)與登錄科目:web項(xiàng)目開(kāi)發(fā) 學(xué)號(hào): 姓名: 班級(jí):軟件10301班現(xiàn)在網(wǎng)站功能越來(lái)越多,但很多的網(wǎng)站都需要用戶是網(wǎng)站的會(huì)員,通過(guò)會(huì)員登錄才能夠使用網(wǎng)站中的一些功能。會(huì)員的登錄與注冊(cè)已成為眾多網(wǎng)站的基本功能之一。網(wǎng)站會(huì)員的注冊(cè)與登錄Ø 掌握會(huì)員注冊(cè)功能的實(shí)現(xiàn)Ø 了解驗(yàn)證控件的使用Ø 了解MD5加密技術(shù)Ø 掌握會(huì)員登錄功能的實(shí)現(xiàn)Ø 了解驗(yàn)證碼技術(shù)Ø 培養(yǎng)網(wǎng)站開(kāi)發(fā)技術(shù),積累相關(guān)開(kāi)發(fā)經(jīng)驗(yàn) 現(xiàn)在網(wǎng)站的很多功能都是需要會(huì)員才能使用,例如在網(wǎng)站上下載一些資料,查看文章,留言等。這就需要開(kāi)發(fā)人員給網(wǎng)站設(shè)計(jì)登錄與注冊(cè)的功能。這樣使用戶成為

2、會(huì)員后能使用更多的功能。本學(xué)期初,在老師帶領(lǐng)之下學(xué)生獨(dú)立開(kāi)發(fā)一個(gè)web項(xiàng)目,實(shí)現(xiàn)網(wǎng)站會(huì)員登錄與注冊(cè)功能。通過(guò)本項(xiàng)目熟悉網(wǎng)站開(kāi)發(fā)的基本流程,掌握相關(guān)技術(shù),積累開(kāi)發(fā)經(jīng)驗(yàn)。 軟件10301班師生成員2012年2月2012年3月二可行性研究報(bào)告網(wǎng)站會(huì)員注冊(cè)與登錄項(xiàng)目運(yùn)用.NET、數(shù)據(jù)庫(kù)、MD5加密和C#相關(guān)技術(shù),有其相應(yīng)的運(yùn)行環(huán)境,本案通過(guò)對(duì)其相應(yīng)的研究確定開(kāi)發(fā)可行性及注意事項(xiàng)。2可行性研究的前提本項(xiàng)目實(shí)例主要包括三種操作,即用戶登錄、用戶注冊(cè)及用戶密碼的修改。用戶運(yùn)行登錄界面,如果用戶沒(méi)有注冊(cè)會(huì)員可以單擊“新會(huì)員注冊(cè)”按鈕跳轉(zhuǎn)到會(huì)員注冊(cè)頁(yè)面,在此頁(yè)面可以先判斷用戶輸入的會(huì)員名是否存在,如果存在需要輸

3、入會(huì)員名,如果不存在用戶可以繼續(xù)輸入個(gè)人資料來(lái)完成注冊(cè),完成注冊(cè)后添加注冊(cè)日志。如果用戶名已經(jīng)注冊(cè),則可以直接輸入會(huì)員名、密碼和驗(yàn)證碼,單擊“登錄”按鈕進(jìn)行登錄。在單擊“登錄”按鈕時(shí),系統(tǒng)首先判斷用戶輸入的信息和驗(yàn)證碼是否正確,如果正確,再判斷用戶輸入的會(huì)員名和密碼是否正確,都正確后登錄成功,同時(shí)添加登錄日志。在登錄頁(yè)面中,單擊“修改密碼”按鈕,進(jìn)入修改密碼頁(yè)面,在此頁(yè)面用戶可以修改原有密碼。注冊(cè)用戶名并用該用戶名登錄進(jìn)入首頁(yè),修改用戶密碼后重新登錄。使用驗(yàn)證碼技術(shù)提高網(wǎng)站安全性。 技術(shù)、團(tuán)隊(duì)團(tuán)結(jié)力、開(kāi)發(fā)人員的意志和恒心系統(tǒng)開(kāi)發(fā)語(yǔ)言:ASP.NET、C#語(yǔ)言、HTML語(yǔ)言基礎(chǔ)、CSS樣式布局?jǐn)?shù)

4、據(jù)庫(kù):SQL Server 2005系統(tǒng)開(kāi)發(fā)環(huán)境:Microsoft Visual Studio 2008運(yùn)行平臺(tái):Windows XPWeb服務(wù)器:IIS程序業(yè)務(wù)流程圖該系統(tǒng)主要分為三部分:登錄部分、 注冊(cè)部分和修改密碼部分。為了方便用戶者可以根據(jù)需求進(jìn)行操作 ,本系統(tǒng)還可對(duì)用戶的賬號(hào)和密碼進(jìn)行進(jìn)入管理。需要用戶注冊(cè)用戶名和密碼。.NET網(wǎng)站開(kāi)發(fā)技術(shù),C#程序設(shè)計(jì)語(yǔ)言,數(shù)據(jù)庫(kù)技術(shù),MD5加密技術(shù)滿足相關(guān)相關(guān)技術(shù)要求和設(shè)備需求,可以開(kāi)發(fā)本項(xiàng)目通過(guò)研究具備相關(guān)的開(kāi)發(fā)條件,可以開(kāi)發(fā)本項(xiàng)目。開(kāi)發(fā)過(guò)程中仍需進(jìn)一步鉆研、進(jìn)取,結(jié)合所學(xué)知識(shí)綜合運(yùn)用,在實(shí)踐中加深對(duì)知識(shí)的理解。三需求規(guī)格說(shuō)明書(shū)網(wǎng)站會(huì)員的注冊(cè)

5、與登錄功能的實(shí)現(xiàn)需要相應(yīng)的開(kāi)發(fā)和運(yùn)行環(huán)境,本案介紹該項(xiàng)目在開(kāi)發(fā)和運(yùn)行過(guò)程中所需的準(zhǔn)備工作和相關(guān)規(guī)格需求,以規(guī)范該項(xiàng)目,保證功能的完整性和網(wǎng)站的安全性。1、現(xiàn)在網(wǎng)站的很多功能都需要是會(huì)員才能登錄,例如在網(wǎng)站上下載一些資料,查看某些文件,留言等。這就需要開(kāi)發(fā)人員給網(wǎng)站設(shè)計(jì)登陸和注冊(cè)的功能。這樣使用戶成為會(huì)員后能事更多的功能。本項(xiàng)目的具體功能實(shí)現(xiàn)如下:Ø 判斷用戶輸入的會(huì)員名和密碼是否正確;Ø 利用驗(yàn)證碼來(lái)防止用戶的非法操作Ø 用戶登錄成功添加登陸日志Ø 注冊(cè)新會(huì)員Ø 判斷注冊(cè)新的會(huì)員是否被用過(guò)Ø 判斷用戶輸入的資料是否合法Ø 用

6、戶注冊(cè)成功添加注冊(cè)日志系統(tǒng)開(kāi)發(fā)環(huán)境:Microsoft Visual Studio 2008系統(tǒng)開(kāi)發(fā)語(yǔ)言:et+C#運(yùn)行平臺(tái):Windows XP數(shù)據(jù)庫(kù):SQL Server 2005Web服務(wù)器: IIS 登錄與注冊(cè)系統(tǒng)的規(guī)范有以下幾個(gè)方面:(1)界面設(shè)計(jì)友好、美觀。(2)數(shù)據(jù)存儲(chǔ)安全、可靠。(3)信息分類清晰、準(zhǔn)確。(4)提供靈活、方便的權(quán)限設(shè)置功能,使整個(gè)系統(tǒng)的管理分工明確。(5)具有易維護(hù)性和易操作性。四概要設(shè)計(jì)說(shuō)明書(shū)該項(xiàng)目主要有三個(gè)功能模塊:登錄模塊、注冊(cè)模塊和修改密碼模塊。三個(gè)模塊對(duì)應(yīng)三個(gè)頁(yè)面,有相應(yīng)的數(shù)據(jù)在三個(gè)頁(yè)面間傳遞。本案主要介紹該項(xiàng)目的總體設(shè)計(jì)和對(duì)應(yīng)的模塊功能劃分。修改模塊

7、修改用戶密碼 (修改用戶信息)登錄模塊用戶登錄主頁(yè)面(檢驗(yàn)用戶信息并登錄新頁(yè))注冊(cè)模塊注冊(cè)用戶名和密碼(生成用戶信息) 1.1登錄模塊:(1)用戶輸入用戶名、密碼和驗(yàn)證碼,如果正確點(diǎn)擊登錄跳轉(zhuǎn)到主頁(yè)面,同時(shí)向數(shù)據(jù)庫(kù)添加登陸日志。若錯(cuò)誤則不能跳轉(zhuǎn)到主頁(yè)面并給出相應(yīng)提示。(2) 單擊“新會(huì)員注冊(cè)”按鈕,跳轉(zhuǎn)到注冊(cè)頁(yè)面;(3) 單擊“修改密碼”按鈕,跳轉(zhuǎn)到修改密碼頁(yè)面。1.2注冊(cè)模塊:(1)輸入用戶名,單擊“檢測(cè)而用戶名”按鈕,檢測(cè)用戶名是否存在。(2) 如存在則重新輸入用戶名用該用戶登錄。(3) 若不存在則輸入其他信息,驗(yàn)證過(guò)通過(guò)后點(diǎn)擊“注冊(cè)用戶”按鈕,完成注冊(cè)同時(shí)向數(shù)據(jù)庫(kù)中添加注冊(cè)日志。1.3修

8、改模塊:(1)填寫用戶名、舊密碼和新密碼,單擊“確認(rèn)修改”按鈕。(2) 若輸入用戶名及密碼一致,則修改成功并更改后臺(tái)數(shù)據(jù)庫(kù)。(3) 若輸入用戶名及密碼不一致,則彈出“修改失敗”對(duì)話框。 本系統(tǒng)采用SQL SERVER 2005數(shù)據(jù)庫(kù),主要有3個(gè)表:logininfo,loginlog,rntrylog.數(shù)據(jù)表logininfo用來(lái)存儲(chǔ)后臺(tái)會(huì)員名稱,密碼和基本資料數(shù)據(jù)庫(kù)設(shè)計(jì)結(jié)構(gòu)實(shí)效:2.1用戶信息表:字段類型長(zhǎng)度說(shuō)明IDInt4主鍵(自動(dòng)編號(hào))NameVarchar50會(huì)員名PassVarchar50密碼SexBit2性別PhoneVarchar50電話E_mailVarchar50電子郵箱表L

9、ogininfo的結(jié)構(gòu)及實(shí)效2.2注冊(cè)日志表:字段類型長(zhǎng)度說(shuō)明IDInt4主鍵(自動(dòng)編號(hào))NameVarchar50會(huì)員名LogindateDatetime8會(huì)員注冊(cè)日期表Loginlog的結(jié)構(gòu)及實(shí)效2.3登錄日志表:字段類型長(zhǎng)度說(shuō)明IDInt4主鍵(自動(dòng)編號(hào))NameVarchar50會(huì)員名LandingdateDatetime8會(huì)員登錄日期表entrylog的結(jié)構(gòu)及實(shí)效輸入密碼時(shí),使用MD5加密技術(shù)向后臺(tái)數(shù)據(jù)庫(kù)添加用戶密碼信息。將信息保存到數(shù)據(jù)庫(kù)前應(yīng)考慮一下密碼的安全性,MD5是單項(xiàng)加密,根據(jù)指定的密碼和散列算法生成一個(gè)合適于存儲(chǔ)在配置文件中的散列密碼。引用的命名空間為System.Web

10、.Security;語(yǔ)法:public static string HashPasswordForStoringInConfigFile (string password, string passwordformat);參數(shù)說(shuō)明:Password 要進(jìn)行散列運(yùn)算的密碼;Passwordformat 要使用的散列算法五詳細(xì)設(shè)計(jì)說(shuō)明書(shū)本案主要介紹各個(gè)頁(yè)面的主要控件及功能實(shí)現(xiàn),通過(guò)實(shí)例展現(xiàn)出項(xiàng)目開(kāi)發(fā)的詳細(xì)過(guò)程。網(wǎng)頁(yè)設(shè)計(jì)結(jié)構(gòu)圖1.登錄頁(yè)設(shè)計(jì)驗(yàn)證碼技術(shù) 驗(yàn)證碼的作用是有效防止注冊(cè)用戶用特定程序集暴力破解方式進(jìn)行不斷的登錄嘗試來(lái)破解密碼,不少網(wǎng)站為了防止用戶利用機(jī)器人自動(dòng)注冊(cè),登錄,灌水,都采用了驗(yàn)證碼技

11、術(shù)。下面詳細(xì)介紹驗(yàn)證碼技術(shù)的實(shí)現(xiàn)。需要引用using System.Drawing ;using System.IO;命名空間。主要代碼如下:public partial class yanzhengma : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) string checkCode = CreateRandomCode(4); Session"CheckCode" = checkCode; CreateImage(checkCode); private string Cr

12、eateRandomCode(int codeCount) string allChar="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,v,w,s,y,z," string allCharArray =allChar .Split (','); string randomcode = "" int temp; Random rand=new Random (); for (int i=0;i<codeCount ;i+) int t=rand .Next

13、 (35); temp =t ; randomcode += allCharArray t; return randomcode ; private void CreateImage(string checkCode) int iwdth = (int)(checkCode.Length * 20.5); System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwdth, 30); Graphics g = Graphics.FromImage(image); Font f=new System .Drawing .Font (&quo

14、t;宋體",20,System.Drawing .FontStyle .Bold ); Brush b = new System.Drawing.SolidBrush(Color.White); g.Clear(Color.BurlyWood); g.DrawString(checkCode, f, b, 3, 3); Pen blackPen = new Pen(Color.Blue, 0); Random rand = new Random(); for (int i = 0; i < 2; i+) int y = rand.Next(image.Height); g.Dr

15、awLine(blackPen, 0, y, image.Width, y); for (int i = 0; i < 150; i+) int x = rand.Next(image.Width); int y = rand.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(rand.Next(); System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

16、 Response.ClearContent(); Response.ContentType = "image/Jpeg" Response.BinaryWrite(ms.ToArray(); g.Dispose(); image.Dispose(); 運(yùn)行如圖所示圖1-3頁(yè)面設(shè)置:控件類型空間名稱用途TextBox控件Textname會(huì)員名Textpass密碼Textbosyzm驗(yàn)證碼Button控件Button1登錄Button2重置Image控件Image1顯示驗(yàn)證碼linkButton控件linkButton1鏈接注冊(cè)頁(yè)面運(yùn)行實(shí)例如圖:登錄頁(yè)面關(guān)鍵代碼:需要引用us

17、ing System.Data.SqlClient;usingng;命名空間;public partial class _Default : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) this.Image1.ImageUrl = "/ValidataCode.aspx" protected void LinkButton1_Click(object sender, EventArgs e) this.Image1.ImageUrl = &q

18、uot;/ValidataCode.aspx" protected void Button1_Click(object sender, EventArgs e) string name = Textname.Text.Trim(); string pwd = Textpwd.Text.Trim(); string code = Textcode.Text.Trim(); string str = "server=.;uid=sa;pwd=123;database=sss" SqlConnection con=new SqlConnection(str); try

19、con.Open(); string str2 = "select count(*) from Logininfo where name=name and pass=pwd" SqlCommand cmd = new SqlCommand(str2, con); cmd.Parameters.Add("name", SqlDbType.VarChar, 50); cmd.Parameters"name".Value = name; cmd.Parameters.Add("pwd", SqlDbType.VarCha

20、r, 50); cmd.Parameters"pwd".Value = FormsAuthentication.HashPasswordForStoringInConfigFile(Textpwd.Text, "MD5"); int count = Convert.ToInt16(cmd.ExecuteScalar(); if (count > 0 & Session"checkCode".ToString() = code) this.Textcode.Text = "" Session"

21、login" = "true" cmd = new SqlCommand("insert entrylog values('" + Textname.Text + "','" + DateTime.Now.ToString() + "')", con); cmd.ExecuteNonQuery(); /Response.Redirect("Sucess.aspx"); Response.Write("<script>alert(&#

22、39;登錄成功!')</script>"); else this.Textcode.Text="" Response.Write("<script>alert('密碼或用戶名錯(cuò)誤!')</script>"); catch(Exception error) Response.Write(error.ToString(); 2.注冊(cè)頁(yè)面設(shè)計(jì)會(huì)員注冊(cè)主要將用戶輸入的信息存儲(chǔ)到數(shù)據(jù)庫(kù)中,這里使用到了數(shù)據(jù)庫(kù)的技術(shù),通過(guò)使用SQLConnection對(duì)象鏈接數(shù)據(jù)庫(kù),將數(shù)據(jù)庫(kù)做成一個(gè)自定義方法ree

23、ateloginconn在需要用到數(shù)據(jù)庫(kù)鏈接時(shí)調(diào)用此方法。頁(yè)面設(shè)置:控件類型控件名稱用途TextBoxTextname輸入會(huì)員名Textpass輸入密碼Textpasses確認(rèn)密碼Textphone輸入電話Textmail輸入電子郵件Buttonbtnlogin將信息添加到數(shù)據(jù)庫(kù)btnreturn返回都登錄頁(yè)面btndete檢測(cè)是否有該用戶運(yùn)行實(shí)例如圖關(guān)鍵代碼:protected SqlConnection createloginconn() SqlConnection con = new SqlConnection("server=.;database=xsdl;Integrate

24、d security=SSPI;"); return con;注意:此方法中應(yīng)用了System.Data.SqlClicent命名空間中的Sqlconnection對(duì)象,需要引用System.Data.SqlClicent命名空間。主要程序代碼: protected void ButtonisName _Click(object sender, EventArgs e) int i = isName(); if (i > 0) RegisterStartupScript("yes", "<script>alert('會(huì)員名已經(jīng)存

25、在!')</script>"); else RegisterStartupScript("no", "<script>alert('可以注冊(cè)!')</script>"); protected int isName() int i; string name = Textname.Text; if (name.Trim() != "") SqlConnection con = createloginconn(); con.Open(); SqlCommand com =

26、 new SqlCommand("select count(*) from logininfo where Name='" + name + "'", con); return i = Convert.ToInt32(com.ExecuteScalar(); con.Close(); else return i = 1; protected void ButtonLogin _Click(object sender, EventArgs e) int i = isName(); if (i <= 0) if (add() SqlCo

27、nnection con = this.createloginconn(); con.Open(); SqlCommand com = new SqlCommand("insert loginlog(name,logindate) values('" + Textname.Text + "','" + DateTime.Now.ToString() + "')", con); com.ExecuteNonQuery(); Response.Write("<script>alert(

28、'注冊(cè)成功!單擊確定返回登陸頁(yè)面');location='landing.aspx'</script>"); con.Close(); else Response.Write("<script>alert('注冊(cè)失敗')</script>"); else Response.Write("<script>alert('會(huì)員名已經(jīng)存!')</script>"); public bool add() string name =

29、Textname.Text; string pass = FormsAuthentication.HashPasswordForStoringInConfigFile(Textpass.Text, "MD5"); string email = TextEmail.Text; string address = Textaddress.Text; string sql = "insert into logininfo(name,pass,email,address) values('" + name + " ','"

30、; + pass+ "','" +email + "','" + address + "')" SqlConnection con = this.createloginconn(); con.Open(); SqlCommand com = new SqlCommand(sql, con); int i =Convert.ToInt32 (com.ExecuteNonQuery(); if (i > 0) return true; else return false; con.Close(

31、); 3.修改密碼頁(yè)面設(shè)計(jì)界面設(shè)置:?jiǎn)螕簟靶薷拿艽a”超鏈接轉(zhuǎn)到注冊(cè)頁(yè)面。所有用戶登錄后都可以修改自己的密碼,當(dāng)輸入的新密碼兩次一致是即可修改成功。在窗體中添加控件,添加的主要控件及用途見(jiàn)下表1-5控件類型空間名稱用途TextBox控件Textbox1會(huì)員名Textbox2密碼Textbox3新密碼Textbox4確認(rèn)密碼Button控件Button1確認(rèn)Button2取消關(guān)鍵代碼:需要引用using System.Data.SqlClient;命名空間public partial class xiugaimima : System.Web.UI.Page protected void Page

32、_Load(object sender, EventArgs e) if (Session"login" = "false") Response.Redirect("landing.aspx"); protected void Button1_Click(object sender, EventArgs e) string name = this.TextBox1.Text.Trim(); string oldpwd = this.TextBox2.Text.Trim(); string newpwd = this.TextBox3.

33、Text.Trim(); try SqlConnection con = new SqlConnection("server=.;database=xsdl;Integrated security=SSPI"); con.Open(); string str = "select count(*) from logininfo where name=name and pass=oldpwd" SqlCommand cmd = new SqlCommand(str, con); cmd.Parameters.Add("name", Sql

34、DbType.VarChar, 50); cmd.Parameters"name".Value = name; cmd.Parameters.Add("oldpwd", SqlDbType.VarChar, 50); cmd.Parameters"oldpwd".Value = FormsAuthentication.HashPasswordForStoringInConfigFile(oldpwd, "MD5"); int count = Convert.ToInt16(cmd.ExecuteScalar();

35、if (count > 0) string str2 = "update logininfo set pass='" + FormsAuthentication.HashPasswordForStoringInConfigFile(newpwd, "MD5") + "' where name='" + name + "'" cmd.CommandText = str2; cmd.ExecuteNonQuery(); Response.Write("<script

36、>alert('注冊(cè)成功!單擊確定返回登陸頁(yè)面');location='landing.aspx'</script>"); else Response.Write("<script>alert('沒(méi)有此用戶')</script>"); this.TextBox1.Text = "" TextBox1.Focus(); catch Response.Write("<script>alert('修改密碼不成功')</script>"); protected void Button2_Click(object sender, EventArgs e) R

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論