文库网
ImageVerifierCode 换一换
首页 文库网 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

北京第二外国语学院 .doc

  • 资源ID:1369264       资源大小:281.50KB        全文页数:23页
  • 资源格式: DOC       下载:注册后免费下载
微信登录下载
快捷下载 游客一键下载
账号登录下载
三方登录下载: QQ登录 微博登录
二维码
扫码关注公众号登录
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
验证码:   换一换

加入VIP,免费下载
 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

北京第二外国语学院 .doc

1、用户在进行注册时,会感觉到应用程序是在用心 制作的情况下上线的,提高了用户的回头率。 22.5 代码实现 在完成基本的控件布局和 CSS 样式布局之后,页面就能够呈现在客户端浏览器中。但是如果用户 想要在页面中执行逻辑操作,就需要进行代码实现完成应用程序所需要执行的页面逻辑,以保证用户 注册功能能够良好的运行。 22.5.1 验证控制 在用户进行注册操作时,需要对用户进行用户验证控制,例如用户没有输入密码的情况下单击了 注册控件,数据是不应该被插入到数据库中的。如果没有对数据进行验证则会插入很多空数据,影响 数据库功能。若要实现验证控制,可以使用现有的验证控件进行验证控制,示例代码见关盘中源代

2、码 第 22 章22-122-1Default.aspx。 上述代码使用了 RequiredFieldValidator 控件进行了基本的验证,如果用户输入的用户名和密码以 及性别为空,则会说明用户名和密码以及性别为空,请重新输入,如图 22-6 所示。 548 图 22-6 验证控制 进行验证控制后,就能够防止非法用户或用户疏忽所造成的空数据库问题,也方便了数据维护的 进行。 22.5.2 过滤输入信息 在进行数据操作之前,并不能只凭用户输入的信息是否为空就能够判断用户是否是合法用户,在 Web 应用中包括很多的不好的信息,例如黄色淫秽名称或者是特殊的字符串,都有可能对网站造成危 害。 注意

3、:不仅仅是黄色淫秽的名称会对网站造成危害,特殊的字符串还有可能造成 SQL 注入等更大的 危害。 在用户单击按钮控件时会执行数据插入操作,在数据插入之前就需要对信息进行过滤,示例代码 如下所示。 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)/判断 La

4、bel8.Text = “用户信息中不能够包含特殊字符如,/,等,请审核“;/输出信息 else /注册代码 上述代码使用了 Check 函数对文本框控件进行了用户资料的判断,Check 函数的实现如下所示。 protected bool Check(string text)/判断实现 if (text.Contains(“) | text.Contains(“) | text.Contains(“/“) | text.Contains(“)/检查字串 return true;/返回真 else return false;/返回假 Check 函数定义了基本的判断方式,如果文本框信息中包含“”

5、,“”,“/”,“” 等字符串时,该方法将会返回 true,否则会返回 false。这也就是说,如果字符串中包含了这些字符, 则会返回 true。在 Button1_Click 函数中就会判断包含非法字符,并进行提示,否则会执行注册代码。 对关键字的过滤是非常必要的,这样能够保证应用程序的完整性并提高应用程序健壮性,同时也对数 据库中的完整性进行了保护。 549 22.5.3 插入注册信息 当用户单击按钮控件时,如果对用户进行了非空验证和关键字过滤后,就能够进行数据的插入, 用户可以使用 ADO.NET 进行数据操作,示例代码如下所示。 protected void Button1_Click

6、(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 = “用户信息中不能够包含特殊字符如,/,等,请审核“;/输出信息 else try SqlConnection con = new SqlConnection(“server=(local);database=Register

7、;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 + “,“ + TextBox5.Text + “,“ + TextBox6.Text + “,“ + TextBox7.

8、Text + “,0)“; SqlCommand cmd = new SqlCommand(strsql,con);/创建执行 cmd.ExecuteNonQuery();/执行 SQL Label8.Text = “注册成功,请牢记您的信息“;/提示成功 catch Label8.Text = “出现错误信息,请返回给管理员“;/抛出异常 上述代码通过 ADO.NET 实现了数据的插入,但是上述代码有一个缺点,如果用户注册了一个用 户并且名称为 abc,当这个用户注销并再注册一个用户名称为 abc 时,如果依旧将数据插入到数据库则 会出现错误。值得注意的是,这个错误并不是逻辑错误,但是这个错

9、误会造成不同的用户可能登录了 同一个用户信息并产生信息错误。为了避免这种情况的发生,在用户注册前首先需要执行判断,示例 代码如下所示。 string check = “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)/判断同名 Lab

10、el8.Text = “注册失败,有相同用户名“;/输出信息 else SqlCommand cmd = new SqlCommand(strsql, con);/创建执行对象 550 cmd.ExecuteNonQuery();/执行 SQL Label8.Text = “注册成功,请牢记您的信息“;/输出成功 在用户注册时,首先从数据库查询出是否已经包含这个用户名的信息,如果包含则不允许用户注 册,如果没有,则说明用户是一个新用户,可以进行注册。 22.5.4 管理员页面 管理员页面作为管理页面,其功能非常简单,只需要对数据进行删除和修改即可,无需进行任何 的数据操作,使用 ASP.NET

11、 本身的数据源控件和数据绑定控件就能够实现管理员页面的编写和制作。 作为数据的呈现,可以使用 GridView 控件进行呈现,同时 GridView 控件还支持编辑和删除功能,示 例代码见光盘中源代码第 22 章22-122-1Manage.aspx 所示。 上述代码编写了 GridView 控件的样式并且为 GridView 控件配置了数据源,同时也配置 GridView 控件能够支持编辑和删除等操作,在数据源配置时,需要新建一个连接字串,如图 22-7 所示。 建立连接字串并保存连接字串到 Web.config 文件中,单击【下一步】按钮,可以生成 SQL 语句, 在生成 SQL 语句时,

12、为了方便管理,管理员通常都是对最新注册用户进行管理,如图 22-8 所示。 图 22-7 建立连接字串 图 22-8 选择排序方式 选择按照 id 的方式进行倒序,能够让管理员快速的管理最新的注册用户,并进行编辑和删除等操 作,为了能够让数据源自动支持编辑和删除操作,必须进行数据源高级配置,如图 22-9 所示。 图 22-9 生成数据操作语句 勾选【生成 INSERT、UPDATE 和 DELETE 语句】选项,以支持数据源控件自动进行编辑和删除 等操作,单击【确定】按钮并完成,就将数据源控件配置完成,数据源控件配置后代码见光盘中源代 码第 22 章22-122-1Manage.aspx 所

13、示。 551 从上述代码可以看出数据源控件中生成的 SQL 语句,使用数据源控件能够简化开发人员对数据的 开发。 22.6 实例演示 编写完成页面代码和逻辑代码后,就可以进行注册和管理操作了,单击【运行】按钮运行模块, 就能够实现用户的注册操作。用户在注册页面可以填写相应的用户注册信息,这些信息能够保存用户 在第 23 章 登录模块设计 登录模块能够配合注册模块让网站应用能够同用户进行信息交互,当用户在网站进行注册后,就 需要登录模块进行用户登录,登录模块虽然看上去比较容易,但是要比注册模块复杂一些,如身份处 理,这些复杂的地方需要使用 ASP.NET 内置对象。 23.1 学习要点 登录模块

14、需要涉及到一些 ASP.NET 3.5 的基本知识,如果要仔细学习注册模块的开发,需要详细 了解本书的一些章节知识,这些章节如下所示: ASP.NET 的网页代码模型。 Web 窗体基本控件。 数据库基础。 ADO.NET 常用对象。 Web 窗体数据控件。 ASP.NET 内置对象。 基本了解了以上章节的知识点后,就能够熟练学习和开发此模块。 23.2 系统设计 登录模块需与注册模块不同的地方在于登录模块面向的用户有两种情况,一种是用户已经注册了, 另一种是用户还没有注册,对于没有注册的用户需要引导到注册页面,而对于没注册的非法用户必须 进行登录限制。 23.2.1 模块功能描述 登录模块是

15、配合注册模块的另一个非常重要的模块,相比之下,登录模块需要考虑更多的情况, 例如用户是否注册,以及用户是否是合法用户,如果是合法用户忘记密码了怎么办,如果是非法用户, 登录了多次是否要进行限制等等。登录模块的功能基本可以描述如图 23-1 所示。 558 图 23-1 登录模块基本用户流程图 从登录模块可以看出,当用户进行身份验证后,可能会出现几种情况,包括验证通过、忘记密码 和循环身份验证。如果用户是一个正常的用户,可以说一次就能够通过验证,那么这个用户就可以进 行后续操作;如果用户已经是注册的用户,但是却忘记了密码,可以通过邮件确认进行密码的索要; 如果用户是非法用户,在不断的进行尝试,那

16、么就要禁止非法用户的不断尝试。从上述流程基本上可 以规划以下几个页面: 登录页面:提供用户的主页面。 忘记密码页面:提供用户索取密码后提示的页面。 用户信息页面:提供用户登录成功后的个人信息页面。 在这其中最主要的是登录页面和忘记密码页面,其中很多的函数的实现都需要在这个页面实现, 而其他页面主要是作为提示页面存在的。该模块需要使用 ASP.NET 内置对象对用户的操作进行保存和 限制。 22.2.2 模块流程分析 在对业务进行了基本的划分之后,可以为模块进行基本的流程分析,包括这个模块中最基本的函 数,以及这些函数在页面中是如何执行的。首先是登录模块需要提供哪些登录信息,登录模块中最重 要的

17、就是用户名和密码,登录模块通常情况下通过用户名和密码进行用户权限的判断。 如果用户登录成功,那么用户就是一个合法用户,可以进行后续的操作,如果用户登录失败,则 需要让用户选择是否继续登录或者说明忘记密码,如果用户反复尝试则可以认为这个用户可能是非法 用户,需要禁止该用户继续进行登录。在了解了基本的模块流程分析后,就可以进行函数和页面的划 分,如图 23-2 所示。 559 图 23-2 基本页面的函数分析 正如图 23-2 所示,这里主要起到作用的就是 login.aspx 页面,这个页面主要包括三个函数 ifisuser、forget 和 forbidden,分别作为判断用户是否为正常用户,

18、以及判断用户是否忘记密码和非法用 户等操作。在用户正常登录后,可以使用 Redirect 方法进行页面跳转,如果用户忘记了密码,需要使 用发送邮件函数进行邮件发送,如果用户是非法用户,则需要禁止用户的登录。 23.3 数据库设计 对于登录表同样需要进行数据库设计,而登录表的数据库设计比较简单,只需要一个简单的用户 表就能够进行登录设计。通常情况下注册模块和登录模块是一起协调合作的,登录模块读取用户表的 信息而注册模块用于数据的索引和插入。 23.3.1 数据库设计分析 对于数据库设计分析,只需要简单的进行用户信息表的设计就可以了,但是这里需要使用用户信 息表中的邮箱信息进行验证,所以数据库中表

19、的字段可以归纳如下: 用户名:用户的用户名,用于登录使用。 密码:用户的密码,用于登录中输入密码。 email:用户的 E-mail,用于发送邮件,如果用户忘记了密码就可以发送到该邮件。 QQ/MSN:用户的 QQ 或 MSN,用于连接。 是否通过:用户的情况,用户保存用户信息,判断用户是否已经被通过。 这里最主要的字段是 email 和 password,这两个字段用于发送邮件到用户和判断用户是否被通过。 如果用户忘记了密码,可以封锁该用户的用户信息然后发送邮件到用户的邮箱中,通过激活提示用户 密码。 23.3.2 数据库表的创建 创建表可以通过 SQL Server Management

20、Studio 视图进行创建也可以通过 SQL Server Management Studio 查询使用 SQL 语句进行创建。登录模块的数据库设计比较简单,这里创建一个 Login 数据库并 创建一个表,如图 23-3 所示。 560 图 23-3 数据库表结构 正如图 23-3 中所示,表为用户的基本信息创建了字段,这些字段的意义分别为: id:用于标识用户的 ID 号,并为自动增长的主键。 username:用于标识用户名。 password:用于标识用户密码。 email:用于标识用户 E-mail 信息。 msn:用于标识用户的 MSN 等信息。 passed:用于标识用户是否通过审

21、核。 ask:用于保存用户提示信息的问题。 answer:用于保存用户提示信息的答案。 上述字段描述了相应的字段在实际应用中的意义,创建表的 SQL 语句如下所示。 USE Login GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE dbo.Login(/创建 Login 表 bh int IDENTITY(1,1) NOT NULL, username nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, password nvarchar(50) COLLATE Chine

22、se_PRC_CI_AS NULL, email nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, msn nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, passed nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, ask nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, answer nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT PK_Login PRIMARY

23、KEY CLUSTERED ( bh ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY ) ON PRIMARY 上述代码创建了一个数据库并将 ID 设为自动增长的主键,该数据库用于保存用户的基本信息,本 模块通常不会更改数据库的信息,只是对数据库进行调用而已。所以在调用之前必须插入若干新数据, 示例代码如下所示。 INSERT NTO Login (username,pas

24、sword,email,msn,passed,ask,answer) 561 alues (guojing,123321,soundbbg ,hellome ,1,”你好吗?,”我很好”) 上述代码在数据库中插入了一条用户名为 guojing,密码为 123321 的用户信息,并且这个用户的邮 箱为 soundbbg ,当用户忘记密码时,就会通过这个邮箱发送确认信息。 23.4 界面设计 登录界面也能够吸引用户眼球,在登录界面也可以进行广告推广,因为一个网站的良好表现能够 让用户大量的在登录页面停驻,在登录页面进行良好的设计可以使登录页面具有广告效应也能够提高 用户体验。 23.4.1 基本界

25、面 由于登录模块可能要考虑到很多的扩展,包括广告位之类的,登录页面也可以单独进行一个页面 的制作,这些页面包括基本的 TextBox 和 Label 控件用于呈现基本的页面信息,示例代码见光盘中源代 码第 23 章23-123-1Default.aspx 所示。 上述代码在页面中使用了三个 Label 控件,用于显示用户登录必须的信息,包括指引用户如何填写 相应的名称,以及提示是否存在该用户,该页面还包括两个 TextBox 控件用于用户填写相关的信息, 并且为了验证用户是否输入正确,在页面中使用了验证控件对用户输入进行控制,示例代码如下所示。 在注册控件已经说明了,验证控件能够验证用户是否输

26、入的是合法的信息,如果用户输入的信息 不合法或者输入的信息为空,那么就不应该让操作继续进行,而需要让用户再次进行信息输入。在没 有 CSS 样式控制的情况下,使用了表格进行基本的布局,如图 23-4 所示。 图 23-4 基本界面布局 23.4.2 创建 CSS 为了更好的为页面进行页面布局,可以使用 CSS 进行页面的样式控制。在登录页面中,可以为页 面和控件进行样式控制,CSS 示例代码如下所示。 body/定义全局 font-size:12px; 562 font-family:Geneva, Arial, Helvetica, sans-serif; margin:0px 0px 0p

27、x 0px; background:gray; .top/定义头部 background:white; margin:0px auto; margin-top:50px; padding-top:10px; padding-bottom:10px; padding-left:10px; width:490px; font-size:18px; .login/定义登录 background:white; margin:0px auto; width:500px; .end/定义底部 background:#f9fbfd; margin:0px auto; width:480px; text-al

28、ign:center; padding:10px 10px 10px 10px; 上述代码定义了全局页面的字体大小和字体属性,并定义了头部样式、登录主样式和底部样式, 定义完成后如图 23-5 所示。 图 23-5 CSS 样式控制后的页面 上述页面的布局非常鲜明,让用户一下就知道登录窗口在哪里,但是这个布局并不方便扩展,也 不方便广告位的布局。这里不详细讲解如何进行广告位布局,只是介绍如何对登录页面进行样式布局。 563 23.4.3 发送密码页面 对于登录控件而言,需要两个提示页面,这两个提示页面包括发送密码页面和错误信息页面。发 送密码页面主要是用于发送忘记密码的用户的密码到用户的邮箱中

29、,这样用户就能够获取相应的信息 以登录网站;而错误信息页面主要是用于提示用户输入的次数超过限定的次数,禁止用户再次输入。 在这两个页面中,需要进行事务处理的页面只有发送密码页面,发送密码页面需要向指定的用户的邮 箱发送邮件,而在发送邮件前,必须让用户输入用户名才能够发送。 注意:在用户忘记密码后,必须让用户输入用户信息,然后在数据库中查询相应的用户的邮箱的信 息,而不是直接让用户填写邮箱。 发送页面示例代码见光盘中源代码第 23 章23-123-1Mail.aspx 所示。其中,代码创建了一个发送 邮件页面,当用户填写用户名后,系统会在数据库中查找相应的用户名的用户信息,查找完成后会发 送相应

30、的信息到用户的邮箱中,如果用户邮箱正确或者用户提示信息正确,那么系统会发送信息到相 应邮箱,如果用户邮箱不正确或者用户提示信息不正确,系统则不会将密码信息发送到用户邮箱。页 面布局完成后如图 23-6 所示。 图 23-6 发送密码页面 发送密码页面需要进行业务处理,在发送密码时,必须填写用户名和用户提示问题以及答案,,才 能够保证此用户是一个安全合法的用户。 23.5 代码实现 在完成基本的 CSS 页面布局后,就需要进行代码实现,登录模块的代码实现比较复杂,不仅需要 查询相应的用户是否是合法用户,当用户忘记密码后,还需要通过邮件进行密码的索取,所以在代码 实现中还需要实现邮件发送等功能。

31、23.5.1 登录代码实现 在用户进行登录时,必须验证用户是否已经登录,如果已经登录则不需要再次登录,如果没有登 录,则允许用户进行登录操作,当用户单击【登录】按钮时,首先会验证用户是否填写信息,如果没 有填写则提示用户填写,如果已经填写了,则判断用户是否是合法用户。 protected void Button1_Click(object sender, EventArgs e) 564 string str = “server=(local);database=login;uid=sa;pwd=sa“;/连接数据库 SqlConnection con = new SqlConnection(

32、str);/创建连接 con.Open();/打开连接 string strsql = “select * from login where username=“+TextBox1.Text+“ and password=“+TextBox2.Text+“; SqlDataAdapter da = new SqlDataAdapter(strsql, con);/创建适配器 DataSet ds = new DataSet();/创建数据集 int count=da.Fill(ds, “table“);/填充数据集 if (count 0)/登录成功 Session“name“ = TextB

33、ox1.Text;/赋予 Session Session“password“ = TextBox2.Text; /赋予 Session Session“login“ = “yes“;/赋予 Session else Label3.Text = “登录失败“;/登录失败 当需要判断一个用户是否为合法用户时,只需要在数据库中查询出该用户即可,如果查询出该用 户,则说明这个用户是存在的;如果查询不出该用户,则说明这个用户是不存在的。查询用户可以使 用 ADO.NET 的 DataSet 对象,示例代码如下所示。 “select * from login where username=“+TextBo

34、x1.Text+“ and password=“+TextBox2.Text+“; SqlDataAdapter da = new SqlDataAdapter(strsql, con);/创建适配器 DataSet ds = new DataSet();/创建数据集 int count=da.Fill(ds, “table“);/填充数据集 上述代码使用 DataSet 对象和 SqlDataAdapter 对象进行数据填充,DataSet 对象的 Fill 方法会返回 受影响的行数,当执行查询语句时,如果返回受影响的行数大于 0,则说明存在这个用户,如果受影响 的行数小于等于 0,则说明不

35、存在该用户。 注意:在验证用户时一定要同时进行用户名和密码的判断,如果不这样判断,很可能非法用户会猜 出用户名就能够进行登录。 如果查询出的结果大于 0,则说明用户是合法用户,可以为用户赋予 ASP.NET 内置对象,以保存 用户状态,示例代码如下所示。 Session“name“ = TextBox1.Text;/赋予 Session Session“password“ = TextBox2.Text; /赋予 Session Session“login“ = “yes“;/赋予 Session 上述代码当用户登录成功时,给每个用户一个 Session 对象,如果在一定时间内不进行操作或者用

36、 户关闭了浏览器进程,系统就会注销该用户。为了保证用户无法重复多次进行登录,可以在登录页面 添加一个计数器,这里可以使用一个 Label 控件进行计数控制,Label 控件可以设置为不可见,初始值 为 0,示例代码如下所示。 在执行登录代码时,首先要判断该控件的值。这里设置登录 4 次后就无法登录了,示例代码如下 所示。 if (Convert.ToInt32(Label4.Text) 0)/判断登录次数 Session“name“ = TextBox1.Text;/赋予 Session Session“password“ = TextBox2.Text; /赋予 Session Sessio

37、n“login“ = “yes“;/赋予 Session else Label3.Text = “登录失败“;/提示登录失败 int times = Convert.ToInt32(Label4.Text);/登录次数 Label4.Text = (times + 1).ToString();/登录次数加一 else Label3.Text = “您已经被禁止登录,请稍后再登录“;/静止登录 上述代码首先会判断计数器中的值是不是小于 4,如果小于 4,则可以进行登录操作,否则就会禁 止用户登录。在登录失败时,必须让计数器的值加 1,否则计数器的值永远小于 4。 23.5.2 邮件发送页面 在用

38、户需要索取自己的密码时,系统对用户进行邮件发送功能的实现和使用,这样就保证了用户 信息的机密性,而用户可以在自己的邮箱中获取密码。邮件发送示例代码如下所示。 protected void TextBox1_TextChanged(object sender, EventArgs e) string str = “server=(local);database=login;uid=sa;pwd=sa“;/创建连接字串 SqlConnection con = new SqlConnection(str);/创建连接对象 con.Open();/打开连接 string strsql = “selec

39、t * from login where username=“ + TextBox1.Text + “;/编写 SQL 语句 SqlDataAdapter da = new SqlDataAdapter(strsql, con);/创建适配器 DataSet ds = new DataSet();/创建数据集 int count = da.Fill(ds, “table“);/填充数据集 if (count 0)/查找用户 Label5.Text = ds.Tables“table“.Rows0“ask“.ToString();/提示用户信息 Label2.Text = “;/清空错误信息 e

40、lse Label2.Text = “没有这个用户“;/提示用户信息 当用户填写用户名并失去焦点时,系统会在数据库中查询相关的用户信息,如果包括该用户,则 会提示这个用户的提问信息;如果没有这个用户,则提示没有这个用户,如图 23-7 所示。 566 图 23-7 搜索用户信息 当用户填写完用户名和用户提示问题答案后,系统会判断用户答案是否正确,如果用户的答案是 正确的,就会发送邮件到用户邮箱;如果用户答案不正确,则会提示用户再次输入答案,示例代码如 下所示。 protected void Button1_Click(object sender, EventArgs e) string str

41、 = “server=(local);database=login;uid=sa;pwd=sa“;/创建连接字串 SqlConnection con = new SqlConnection(str);/创建连接对象 con.Open();/打开连接 string strsql = “select * from login where username=“ + TextBox1.Text + “;/配置 SQL 语句 SqlDataAdapter da = new SqlDataAdapter(strsql, con);/创建适配器 DataSet ds = new DataSet();/填充数

42、据集 int count = da.Fill(ds, “table“);/获取数据 if (count 0)/如果存在用户 if (TextBox2.Text != ds.Tables“table“.Rows0“answer“.ToString()/对比问题 Label2.Text = “提示问题答案回答出错,请再次输入答案“;/出现错误 else SendUserMail(ds.Tables“table“.Rows0“email“.ToString(), /发送邮件 ds.Tables“table“.Rows0“password“.ToString();/实现邮件发送 else Label5

43、.Text = “没有这个用户“;/声明没有用户 上述代码会判断用户回答的问题是否和本身用户在注册时设置的问题相同,如果相同,就执行 SendUserMail 函数。SendUserMail 函数实现代码如下所示。 private bool SendUserMail(string recevie,string password) try 567 System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); client.Host = “SMTP 服务器“;/SMPT 服务器信息 client.UseDefaultCredentials = false; client.EnableSsl = false; client.Credentials = new System.Net.NetworkCredential(“邮件发送邮箱“, “发送邮箱密码“); client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; System.Net.Mail.MailMe


注意事项

本文(北京第二外国语学院 .doc)为本站会员(瓦拉西瓦)主动上传,文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文库网(点击联系客服),我们立即给予删除!




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

文库网用户QQ群:731843829  微博官方号:文库网官方   知乎号:文库网

Copyright© 2025 文库网 wenkunet.com 网站版权所有世界地图

经营许可证编号:粤ICP备2021046453号   营业执照商标

1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png