




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章互动媒体学习社区(ASP.NET 2.0+Access 实现)随着Internet 的普及,网络已成为人们学习、工作、生活不可或缺的一部分。网络学习是信息化社会学习的主要途径之一,而网络学习受到广大学习者的青睐是因为在网络上学习资源丰富、学习时间灵活,还可以通过互动交流方式进行学习。而互动交流是非常有效的网络学习手段,对学习者的创新能力和认知能力的发展,发挥着不可低估的作用。本章通过开发一个媒体学习网站互动媒体学习社区,介绍如何利用ASP.NET 2.0 + Access 快速开发一个互动媒体学习社区。通过学习本章,你将学到::互动媒体学习社区开发的基本过程: 如何分析并设计数据库: 如何设计公共类: 主要功能模块的实现方法: Access 数据库在网站中的应用: 面向对象的开发思想: 分层开发模式: 实现网络播放媒体文件6.1 开发背景在网络上丰富多彩的学习资源中,传统的文档资源和图片资源已不能满足学习者对学习资源的需求,学习者迫切需要通过视觉或听觉直观地对学习资源进行深刻的了解,从而产生了视频学习资料和语音学习资料。互动媒体学习社区通过构建一个虚拟的网络学习社区环境,学习者可以通过这个环境发布视频教程或语音教程进行相互学习交流。6.2 需求分析互动媒体学习社区是为学习者提供的学习和交流的平台,所以互动媒体学习社区应具有基本的视频学习功能、语音学习功能和留言功能。在基本功能之上还可以添加会员注册功能,利用会员功能对访问者的权限进行控制,例如普通用户不可以发布教程或下载教程而会员用户则可以。另外互动媒体学习社区还需要具有美观、简洁的人机界面、良好的查询功能、网站的易维护性和易操作性。6.3 系统设计6.3.1 系统目标根据需求分析的描述以及实际考察,现制定网站实现功能如下。 操作简单方便、界面简洁美观。 注册功能,用户通过注册成为网站会员。 发布下载教程,对会员提供发布教程和下载教程的功能。 密码找回功能,当会员忘记密码时可以通过此功能找回。 留言功能,通过留言功能进行互动交流。 查询功能,使用户通过查询快速找到需要的教程。 后台管理功能,管理员通过后台进行网站的维护和管理。 系统运行稳定,安全可靠。6.3.2 业务流程图互动媒体学习社区业务流程图如图6.1 所示。6.3.3 系统功能结构根据互动媒体学习社区的特点,可以将其分为前台和后台两个部分设计。前台主要实现发布教程(发布视频或语音教程、查看已发布的语音教程、查看已发布的视频教程)、浏览教程(浏览视频或语音教程、发布留言)、登录功能、查询功能。后台主要实现公告管理(管理公告、发布公告)、教程管理(发布教程、管理视频教程、管理语音教程)、用户管理等功能。互动媒体学习社区的前台功能结构如图6.2 所示。 互动媒体学习社区的后台功能结构如图6.3 所示。6.3.4 系统预览互动媒体学习社区网由多个页面组成,下面仅列出几个典型页面,其他页面参见光盘中的源程序。首页如图6.4 所示,主要实现显示导航、最新教程、教程排行、公告信息、登录功能和搜索功能。查看教程页面如图6.5 所示,主要实现观看视频教程和发布留言功能。 图6.4 首页(光盘index.aspx)图6.5 查看教程页(光盘seeVideo.aspx)发布教程页面如图6.6 所示,主要实现发布教程、视频教程管理和语音教程管理。后台视频管理页如图6.7 所示,主要实现查看视频详细信息、视频留言管理、删除视频操作。% 注意:由于路径太长,因此省略了部分路径,图6.4、图6.5 和图6.6 省略的路径是“TM06studyCommunity”,图6.7 省略的路径是“TM06studyCommunitymanage”。图6.6 发布教程页(光盘 issuance.aspx)图6.7 后台视频管理页(光盘 manage_video.aspx)6.3.5 构建开发环境1网站开发环境网站开发环境:Microsoft Visual Studio 2005 集成开发环境。网站开发语言:ASP.NET+C#。网站后台数据库:Microsoft Access。开发环境运行平台:Windows XP(SP2)/ Windows 2000(SP4)/ Windows Server 2003(SP1)。% 注意:SP(Service Pack)为Windows 操作系统补丁。2服务器端操作系统:Windows Server 2003(SP1)。Web 服务器:Internet 信息服务(IIS)管理器。数据库服务器:Microsoft Access。浏览器:IE 6.0。网站服务器运行环境:Microsoft .NET Framework SDK v2.0。3客户端浏览器:Internet Explorer 6.0。分辨率:最佳效果1024768 像素。6.3.6 数据库设计本程序采用Access 作为后台数据库,数据库名称为db_study,其中包含6 个数据表,下面将分别介绍。1数据库概要说明为了使读者对本程序系统后台数据库中的数据表有一个更清晰的认识,在此给出了数据库的结构图,该结构图包括系统所有的数据表,如图6.8 所示。2数据库E-R 图分析通过对网站进行的需求分析、网站流程设计以及系统功能结构的确定,规划出系统中使用的数据库实体对象分别为公告信息实体、会员信息实体、留言信息实体、视频教程信息实体(由于视频教程信息实体和语音教程信息实体类似,这里只给出视频教程信息实体)和语言类型实体。实体E-R 图如下所示。公告信息实体E-R 图如图6.9 所示。图6.8 数据库结构图图6.9 公告信息E-R 图会员信息实体E-R 图如图6.10 所示。图6.10 会员信息E-R 图留言信息实体E-R 图如图6.11 所示。视频教程信息实体E-R 图如图6.12 所示。语言类型实体E-R 图如图6.13 所示。3数据表结构设计完数据库实体E-R 图之后,根据实体E-R 图设计数据表结构。下面将5 张数据表的数据结构和用途分别列出(由于视频教程信息表和语音教程信息表类似,在此只给出语音教程信息表)。图6.11 留言信息实体E-R 图图6.12 视频教程信息实体E-R 图图6.13 语言类型实体E-R 图& 说明:视频教程信息表和语音教程信息表类似,在分析实体E-R 图中只给出了视频教程信息实体E-R 图,而数据表结构中只给出了语音教程信息表。 tb_Bulletin(公告信息表)公告信息表主要存储管理员发布的公告信息,如表6.1 所示。表6.1 公告信息表结构 tb_login(会员信息表)会员信息表主要存储会员注册的信息,如表6.2 所示。 tb_Sound(语音教程信息表)语音教程信息表主要存储会员发布的语音教程信息,如表6.3 所示。表6.3 语音教程信息表结构 tb_Speak(留言信息表)留言信息表主要存储用户留言的详细信息,如表6.4 所示。表6.4 留言信息表结构 tb_Type(语言类型表)语言类型表主要存储用户选择的编程语言,如表6.5 所示。表6.5 语言类型表结构6.3.7 文件夹组织结构为了便于读者对本网站的学习,在此笔者将网站文件的组织结构展示出来。前台文件组织结构如图6.14 所示。后台文件组织结构如图6.15 所示。图6.14 前台文件组织结构图图6.15 后台管理文件组织结构图6.4 公共类设计6.4.1 数据库操作类设计数据库操作类用来完成数据库的连接操作以及数据库的查询、添加、删除和修改操作。将这几种操作编写到一个公共类里,可以减少重复代码的编写,有利于代码的维护。创建数据库操作类的方法为:在Microsoft Visual Studio 2005 菜单栏中选择“网站”/“添加新项” 命令,在弹出的“添加新项”对话框中选择“类”,将其命名为dataOperate.cs,如图6.16 所示。图6.16 添加数据库操作类单击“添加”按钮将弹出一个提示对话框,如图6.17 所示,此对话框询问是否将刚才创建的类存放在App_Code 文件夹中,单击“是”按钮,完成数据库操作类的创建。图6.17 提示对话框在解决方案资源管理器里的App_Code 文件夹中可以看到新创建的数据库操作类。双击数据库操作类,进行此类的编写。在此类里可以看到系统自动添加的命名空间、公共类和构造函数。由于此类需要对数据库进行操作,所以需要引用命名空间System.Data.OleDb。代码如下:例程01 代码位置:光盘TM06studyCommunityApp_Code dataOperate.csusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.OleDb;/ / dataOperate 的摘要说明/ public class dataOperatepublic static DataSet ds;public dataOperate()/ TODO: 在此处添加构造函数逻辑/dataOperate 类中一共定义了6 个方法,下面分别对这几个方法进行讲解。 createCon 方法createCon()方法用来连接数据库,此方法返回的类型为OleDbConnection,主要用来构造数据库的连接。代码如下:例程02 代码位置:光盘TM06studyCommunityApp_Code dataOperate.cspublic OleDbConnection createCon()OleDbConnection odbc = new OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;Datasource=|DataDirectory|db_study.mdb;); /生成OleDbConnection的一个对象用于连接数据库return odbc; adlData 方法adlData(string sql)方法用来添加或删除数据。此方法返回一个布尔值,用来表示添加或删除数据是否成功,执行成功返回true,否则返回false。调用此方法时应传入一个string 类型的参数,此参数表示所要执行的SQL 语句。代码如下:例程03 代码位置:光盘TM06studyCommunityApp_Code dataOperate.cspublic bool adlData(string sql)OleDbConnection Odbc =createCon(); /调用createCon方法连接数据库Odbc.Open(); /打开数据库连接OleDbCommand com = new OleDbCommand(sql, Odbc); /对Access数据库执行一个SQL语句int i = Convert.ToInt32(com.ExecuteNonQuery(); /返回所影响的行并转换成int类型Odbc.Close();if (i 0)return true;elsereturn false; isData 方法isData(string sql)方法用来查找数据是否存在。此方法返回一个整型值,用来表示是否查找到数据,查找到数据则返回一个大于0 的值,否则返回0。调用此方法时应传入一个string 类型的参数,此参数表示所要执行的SQL 语句。代码如下:例程04 代码位置:光盘TM06studyCommunityApp_Code dataOperate.cspublic int isData(string sql)OleDbConnection Odbc =createCon(); /调用createCon方法连接数据库Odbc.Open(); /打开数据库连接OleDbCommand com = new OleDbCommand(sql, Odbc); /对Access数据库执行一个SQL语句int i = Convert.ToInt32(com.ExecuteScalar(); /返回首行首列Odbc.Close();return i; UpdateData 方法updateData(string sql)方法用来更新数据。此方法没有返回值。在调用此方法时应传入一个string类型的参数,此参数表示所要执行的SQL 语句。代码如下:例程05 代码位置:光盘TM06studyCommunityApp_Code dataOperate.cspublic void updateData(string sql)OleDbConnection Odbc =createCon(); /调用createCon方法连接数据库Odbc.Open(); /打开数据库连接OleDbCommand com = new OleDbCommand(sql,Odbc); /对Access数据库执行一个SQL语句com.ExecuteScalar(); /返回首行首列Odbc.Close(); row 方法row(string sql)方法用来查找并返回一行数据。此方法返回一个OleDbDataReader 对象。在调用此方法时应传入一个string 类型的参数,此参数表示所要执行的SQL 语句。代码如下:例程06 代码位置:光盘TM06studyCommunityApp_Code dataOperate.cspublic OleDbDataReader row(string sql)OleDbConnection Odbc =createCon(); /创建OleDbConnection对象Odbc.Open(); /打开数据库连接OleDbCommand com = new OleDbCommand(sql, Odbc);return com.ExecuteReader(); /返回OleDbDataReader对象 rows 方法rows(string sql, string table)方法用来查找并返回多行数据。此方法返回一个DataTable 对象。在调用此方法时应传入两个string 类型的参数,第一个参数表示要执行的SQL 语句,第二个参数表示表名。代码如下:例程07 代码位置:光盘TM06studyCommunityApp_Code dataOperate.cspublic DataTable rows(string sql, string table)DataSet ds;OleDbConnection Odbc =createCon();Odbc.Open();OleDbDataAdapter oda = new OleDbDataAdapter(sql,Odbc);ds = new DataSet(); /创建数据集oda.Fill(ds,table); /填充数据集Odbc.Close();return ds.Tablestable; /返回数据表6.4.2 业务功能类设计网站业务功能类用来存放开发中常用的方法,可以减少重复代码的编写,有利于代码的维护。此类中有两个自定义方法,即Encrypting 方法和Decrypting 方法,这两个方法主要用来完成重要信息的加密和解密。 Encrypting 方法Encrypting(string Source)方法用来对比较重要的信息进行加密操作。此方法返回一个string 类型的值,该值表示已经加密的信息。在调用此方法时应传入一个string 类型的参数,此参数表示需要加密的信息。代码如下:例程08 代码位置:光盘TM06studyCommunityApp_Code Operate.cspublic static string Encrypting(string strSource)/把字符串放到byte数组中byte bytIn = System.Text.Encoding.Default.GetBytes(strSource);/建立加密对象的密钥和偏移量byte iv = 102, 16, 93, 156, 78, 4, 218, 32 ; /定义偏移量byte key = 55, 103, 246, 79, 36, 99, 167, 3 ; /定义密钥/实例DES加密类DESCryptoServiceProvider mobjCryptoService = new DESCryptoServiceProvider();mobjCryptoService.Key = iv;mobjCryptoService.IV = key;ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();/实例MemoryStream流加密文件System.IO.MemoryStream ms = new System.IO.MemoryStream();CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);cs.Write(bytIn, 0, bytIn.Length);cs.FlushFinalBlock();return System.Convert.ToBase64String(ms.ToArray();% 注意:实现此方法需引用System.Security.Cryptography;命名空间。 Decrypting 方法Decrypting (string Source)方法将已加密的信息进行解密。此方法返回一个string 类型的值,该值表示解密后的信息。在调用此方法时应传入一个string 类型的参数,此参数表示需要解密的信息。代码如下:例程09 代码位置:光盘TM06studyCommunityApp_Code Operate.cspublic static string Decrypting(string Source)try/将解密字符串转换成字节数组byte bytIn = System.Convert.FromBase64String(Source);/给出解密的密钥和偏移量,密钥和偏移量必须与加密时的密钥和偏移量相同byte iv = 102, 16, 93, 156, 78, 4, 218, 32 ; /定义偏移量byte key = 55, 103, 246, 79, 36, 99, 167, 3 ; /定义密钥DESCryptoServiceProvider mobjCryptoService = new DESCryptoServiceProvider();mobjCryptoService.Key = iv;mobjCryptoService.IV = key;/实例流进行解密System.IO.MemoryStream ms = new System.IO.MemoryStream(bytIn, 0, bytIn.Length);ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);StreamReader strd = new StreamReader(cs, Encoding.Default);return strd.ReadToEnd();catch (Exception ex)throw new Exception(在文件解密的时候出现错误!错误提示: n + ex.Message);% 注意:实现Encrypting 方法和Decrypting 方法需引用System.Security.Cryptography;命名空间、System.IO;命名空间、System.Text;命名空间。6.5 网站首页设计6.5.1 网站首页概述首页设计的好坏直接影响到浏览者及用户对本网站的印象,页面整体布局要合理,简洁美观,网站首页的运行效果如图6.18 所示。在网站首页中包括以下几个模块: 网站导航(包括发布教程、视频课堂、语音课堂、注册、联系我们) 教程搜索(可以根据教程类型和教程语言进行搜索) 网站公告(网站近期的动态) 用户登录 最新发布教程(包括最新发布的视频教程和语音教程) 教程排行榜(包括点击率最高的视频教程和语音教程)图6.18 网站首页6.5.2 网站首页技术分析 网页对话框模式显示信息在首页中公告的详细信息是以网页对话框模式显示的。实现此功能主要通过应用window 对象的showModalDialog 方法来实现。其语法格式如下:variant=object.showModalDialog(sURL,vArguments,sFeatures)sURL:指定URL 文件地址。vArguments:用于向网页对话框传递参数,传递参数的类型不限,对于字符串类型最大为4096 个字符,也可以传递对象。sFeatures:对话框窗口的设置参数,可选项。设置参数如表6.6 所示。表6.6 对话框窗口的设置参数在本程序中利用JavaScript 语言将弹出窗口做成一个方法,方便在页面中使用。代码如下:function openPWD(传入打开窗口的值)window.showModalDialog(需要打开窗口的路径+传入打开窗口的值, ,dialogHeight: 300px; dialogWidth:480px;dialogTop:px; dialogLeft:px; edge: Raised; center: Yes; help: No; resizable: No; status: No;scroll:No); 滚动显示公告信息实现滚动显示公告主要通过marquee 元素来实现。marquee 元素可以滚动文字、图片、表格等。marquee 元素主要有以下几个属性。 Direction 属性:此属性主要设置信息滚动方式。 Onmouseout 属性:当鼠标离开marquee 元素时调用this.start()方法使信息继续滚动。 Onmouseover 属性:当鼠标停留在marquee 元素时调用this.stop()方法使信息停止滚动。 ScrollAmount 属性:设置当前信息的滚动速度。1 为最慢。marquee 元素实现滚动信息的代码如下:6.5.3 网站首页实现过程本模块使用的数据表:tb_Video、tb_Sound。1设计步骤(1)在该网站中新建一个Web 窗体,将其命名为index.aspx,用于显示网站的首页。(2)在Web 窗体中添加Tabel 表格,用于页面的布局。(3)在Tabel 表格中添加相关的服务器控件,控件的属性设置及其用途如表6.7 所示。表6.7 首页中各控件名称、属性设置及用途2实现代码在主页Web 窗体的加载事件中调用各个功能绑定到DataList 控件上的方法。实现代码如下:例程10 代码位置:光盘TM06studyCommunity index.aspx.csprotected void Page_Load(object sender, EventArgs e)u if (!IsPostBack)v if (SessionUserName != null) /判断用户是否登录w PanelEntry.Visible = false; /设置登录窗口为不显示PanelHello.Visible = true; /设置显示欢迎词this.Label1.Text = SessionUserName.ToString();elsePanelHello.Visible = false; /设置不显示欢迎词PanelEntry.Visible = true; /设置显示登录窗口cretVideo(); /自定义方法用来绑定最新视频教程creatSound(); /自定义方法用来绑定语音教程U 代码贴士u IsPostBack 方法:获取一个值,该值指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问。v SessionUserName:用来存储用户登录名。w Visible 属性:获取或设置一个值,该值指示服务器控件是否呈现在页面上。由于公告、视频排行、语音排行、最新视频和最新语音绑定到GridView 控件上的方法类似,这里主要介绍最新视频排行的绑定方法。创建自定义方法,命名为cretVideo,在方法中建立SQL 语句,调用数据库操作中的rows 方法并传入SQL 语句。将返回值绑定到GridView 上。实现代码如下:例程11 代码位置:光盘TM06studyCommunity index.aspx.csprotected void cretVideo()trydataOperate mydo = new dataOperate(); /实例数据库操作类string sql = SELECT top 10 * from tb_Video as a inner join tb_Type asb on a.VideoType=b.TypeID ORDER BY VideoID DESC;u gvNewVideo.DataSource = mydo.rows(sql, tb_Video).DefaultView;v gvNewVideo.DataBind() ();catch (Exception error)Response.Redirect(error.aspx); /跳转到错误页面U 代码贴士u GridView.DataSource 属性:表示数据源的对象,数据绑定控件从该对象中检索其数据。v GridView.DataBind:将数据源绑定到GridView 控件。6.6 用户注册页设计6.6.1 用户注册页概述浏览者可以通过用户注册功能注册成为本网站的会员,用户注册并登录后,可以发布自己制作或收集的视频教程和语音教程,也可以下载自己喜欢的教程。当用户在首页单击导航栏中“注册”链接按钮或在登录模块中单击“新用户注册”链接按钮时,将进入用户注册的页面。用户注册页面如图6.19所示。6.6.2 用户注册页技术分析实现用户注册信息时应注意以下事项:用户名不能为空、密码必须填写、两次密码输入必须一致、电子邮件地址格式是否正确、身份证号位数是否正确。这些信息的验证都是通过服务器验证控件来实现的。服务器验证控件及其主要属性设置和用途如表6.8 所示。图6.19 用户注册页面表6.8 服务器验证控件及其主要属性设置和用途在用户注册信息中的用户名需要是唯一的,否则在发布留言时可能会出现两个或多个一样的用户名。解决这个问题可以通过一个按钮控件来实现,在按钮的单击事件中通过调用isName 方法,调用数据库操作类中的isData 方法并返回一个整数类型的值,来判断用户添加的用户名是否在数据库中存在。如果整数值大于0,说明用户已经存在并给出相应的提示信息;等于0,说明用户可以添加此用户名并给出相应的提示信息。IsName 方法代码如下:例程12 代码位置:光盘TM06studyCommunitylogin.aspx.cspublic int isName()int i;/创建SQL语句用来查询用户表中是否存在符合登录名条件的记录string sql = select count(*) from tb_login where Name= + this.txtName.Text.Trim() + ;return i = mydo.isData(sql);当用户添加完合法的注册信息后,需要将注册信息保存到数据库中。在保存时需要考虑用户注册信息的安全性,假如数据库被非法入侵,数据库中的重要信息,如用户的密码将会完全暴露。为了防止此问题,可以将注册信息中的密码通过加密再存储到数据库中。为了防止用户忘记密码,在注册信息里添加了密码提示问题和密码提示答案,用户可以通过密码提示问题和答案来找回忘记的密码,这里的密码提示答案也是比较重要的信息,所以也需要通过加密后存储到数据库中。数据加密一般有两种:双向加密和单向加密。双向加密最常用,它的特点是既能加密又能解密;而单向加密只能对数据进行加密,不能对其解密。由于密码信息还需要找回,所以使用双向加密,双向加密通过调用网站业务功能类中的Encrypting 方法实现。密码提示答案可以使用单向加密,单向加密通过MD5 加密实现。MD5 加密是根据指定的密码和哈希算法生成一个适合于存储在配置文件中的哈希密码。其命名空间为System.Web.Security。密码提示答案加密代码如下:FormsAuthentication.HashPasswordForStoringInConfigFile(this.txtPassSolution.Text, MD5);6.6.3 用户注册页实现过程本模块使用的数据表:tb_login。1设计步骤(1)在该网站中新建一个Web 窗体,将其命名为login.aspx,用于实现用户注册。(2)在Web 窗体中添加Tabel 表格,用于页面的布局。(3)在Tabel 表格中添加相关的服务器控件,控件的属性设置及其用途如表6.9 所示。表6.9 用户注册页面中各控件名称、属性设置及用途2实现代码实现注册功能通过ibtnLogin 控件的Click 事件来实现,Click 事件中需要先调用isName 方法来判断用户名是否存在,再通过调用add 方法将用户添加的注册信息添加到数据库中。实现代码如下:例程13 代码位置:光盘 TM 06studyCommunity login.Aspx.csprotected void btnLogin _Click(object sender, EventArgs e)u if (isName() = 0)if (add()/显示提示信息v Page.RegisterStartupScript(true, alert(成功!);elsePage.RegisterStartupScript(false, alert(失败!);elsePage.RegisterStartupScript(false, alert(用户名已存在!);U 代码贴士u isName():自定义方法判断用户是否存在。v Page.RegisterStartupScript:在页响应中发出客户端脚本块。isName 方法的实现主要通过数据库操作类中的isData 方法并传入SQL 语句,此方法返回一个整数类型的值,该值大于0 表示用户已经存在不可以注册,等于0 表示用户名不存在可以注册。实现代码如下:例程14 代码位置:光盘 TM 06studyCommunity login.aspx.cspublic int isName()dataOperate mydo = new dataOperate(); /创建dataOperate对象int i;string sql = select count(*) from tb_login where Name= + this.txtName.Text.Trim() + ;return i = mydo.isData(sql);add 方法调用了数据库操作类中的adlData 方法并传入SQL 语句,此方法返回一个布尔类型的值,数据添加成功该值返回true,否则返回false。实现代码如下:例程15 代码位置:光盘 TM 06studyCommunity login.aspx.csprotected bool add()u dataOperate mydo = new dataOperate();string name = txtName.Text; /获取用户登录名v string pass =Operate.Encrypting(txtPass.Text); /获取登录密码并将其加密string sex;/获取性别if (RadioButtonMan.Checked)sex = 男;elsesex = 女;string trueName = txtTrueName.Text; /获取真实姓名string idCard = this.txtIDCard.Text; /获取电话string passQuestion = this.txtPassQuestion.Text;w string passSolution = FormsAuthentication.HashPasswordForStoringInConfigFile(this.txtPassSolution.Text,MD5);string email = txtEmail.Text; /获取电子邮件string sql = insert into tb_login(Name,Pass,ZName,Sex,Email,IDCard,PassQuestion,PassSolution) values( +name + , + pass + , + trueName + , + sex + , + email + , + idCard + , + passQuestion + , + passSolution +);return mydo.adlData(sql); U 代码贴士u dataOperate mydo = new dataOperate:创建数据库操作类的对象。v Operate.Encrypting(txtPass.Text):调用业务功能类中.Encrypting 方法将用户密码进行加密。w FormsAuthentication.HashPasswordForStoringInConfigFile 方法:根据指定的密码和哈希算法生成一个适合于存储在配置文件中的哈希密码。为了方便用户添加用户名时查看用户名是否存在,可以先利用ibtnisName 控件进行判断,如果用户名不存在可再添加其他的注册信息。在ibtnisName 控件的Click 事件中先判断用户名是否为空,如果为空,给出相应的提示对话框,不为空则调用自定义isName 方法来判断用户名是否存在并给出相应提示对话框。实现代码如下:例程16 代码位置:光盘 TM 06studyCommunity login.aspx.csprotected void ibtnisName_Click(object sender, EventArgs e)if (txtName.Text.Trim() != )if (isName() 0) /判断用户名是否存在RegisterStartupScript(yes, alert(用户名已经存在!);elseRegisterStartupScript(no, alert(可以注册);elseRegisterStartupScript(yes, alert(用户名不能为空!);6.7用户登录设计6.7.1 用户登录概述用户注册为本网站的会员后,必须进行登录后才能使用上传或下载教程和管理教程的功能。用户登录界面的运行效果如图6.20 所示。图6.20 用户登录6.7.2 用户登录技术分析当用户登录成功后进行留言时会将发言人保存为用户的登录名,如果是普通用户发言人将保存为游客。这里主要应用了Session 对象,利用Session 对象来保存用户登录名。当用户发送教程时或在发布留言时可以将Session 对象保存的用户名添加到数据库中。Session 对象是HttpSessionState 类的一个实例,其功能是用来存储跨网页程序的变量或者对象,Session 对象只针对单一网页使用,也就是说各个连接的机器都有各自的Session 对象,不同的客户端无法互相存取。Session 对象中止于联机机器离线时,也就是当网页使用者关掉浏览器或超过设定的Session 变量的有效时间时,Session 对象就会消失。使用Session 对象存放信息的语法如下:Session变量名= 内容;Session 对象常用属性及说明如表6.10 所示。表6.10 Session 对象常用属性及说明(1)Contents 属性获取对当前会话状态对象的引用。语法:public HttpSessionState Contents get; 属性值:当前的HttpSessionState。(2)Item 属性获取或设置会话值。该属性可重载。它有以下两种格式: 按数字索引获取或设置会话值。语法:public Object this int index get; set; index:会话值的数字索引。属性值:存储在指定索引中的会话状态值。 按名称获取或设置会话值。语法:public Object this string name get; set; name:会话值的键名。属性值:带指定名称的会话状态值。(3)TimeOut 属性获取并设置在会话状态提供程序终止会话之前各请求之间所允许的时间(以分钟为单位)。语法:public int Timeout get; set; 属性值:超时期限(以分钟为单位)。在应用程序开发过程中,要更改Session 对象的有效期限,只要设定TimeOut 属性即可。TimeOut属性的默认值是20 分钟。6.7.3 用户登录实现过程本模块使用的数据表:tb_login。1设计步骤(1)在该网站中新建一个Web 用户控件,将其命名为entry.ascx,用于实现用户登录。(2)在Web 窗体中添加Tabel 表格,用于页面的布局。(3)在Tabel 表格中添加相关的服务器控件,控件的属性设置及其用途如表6.11 所示。表6.11 登录用户控件中各控件名称、属性设置及用途2实现代码登录功能的实现需要先判断验证码是否正确,验证码正确才需要使用数据库操作类中的row 方法来判断用户输入的用户名和密码是否正确。实现代码如下:例程17 代
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 元宵节300字作文10篇
- 设备维修与保养周期计划制定模板
- 咨询公司合作协议设计的要点
- 2025版权授权代理合同
- 安保人员服务培训课件
- 2025授权合同范本租赁授权委托合同书
- 诸城中考题目及答案
- 化工厂新员工培训课件
- 2025健身房转让合同书模板
- 语法规则实践:英语语法专题讲座
- 2025贵州黔西南州兴义市招聘事业单位教师40人备考试题及答案解析
- 2025甘肃省省直文博单位招聘事业编制工作人员26人笔试备考试题及答案解析
- 2025四川省公安厅警务辅助人员招聘(448人)笔试备考试题及答案解析
- 一例跌倒护理不良事件分析
- 2025年社区网格员笔试考试题库及答案
- 基础护理学题库及答案
- 《遵守校纪班规》课件
- (2025年标准)返聘协议退休返聘协议书
- 走进焊接 课件 2.1百花齐放推陈出新-焊接方法
- 北京市律师协会律师办理法律尽职调查业务操作指引
- (2025年标准)会员销售协议书
评论
0/150
提交评论