《案例1-网站会员注册与登录》由会员分享,可在线阅读,更多相关《案例1-网站会员注册与登录(16页珍藏版)》请在金锄头文库上搜索。
1、案例1-网站会员 注册与登录学习重点掌握会员注册功能的实现. 了解验证控件的使用. 了解MD5加密技术. 掌握会员登录功能的实现. 了解验证码技术设计思路功能概述判断用户输入的会员名和密码是否正确; 利用验证码来防止用户的非法操作; 用户登录成功添加登录日志; 注册新的会员; 判断注册新会员名是否已经被使用; 判断用户输入的一些资料是否合法; 用户注册成功添加注册日志。设计思路业务流程图本案例主要包括两种操作:用户登录和用户注册。用户是否注册判断验证码、会员名、 密码是否正确登录是否进入首页是注册否注册信息是否 合法返回登录页是否数据库设计LoginInfo表LoginInfo表用来存储后台会
2、员名称、密码和基本资料。LoginLog表LoginLog表用来存储会员注册日志,记录会员注册的时间。EntryLog表EntryLog表用来存储会员登录日志,记录会员登录时间。文件组织结构登录成功后跳转的页面 登录页面 注册页面 产生验证码页面 网站配置文件会员注册关键技术MD5加密技术(单向加密),根据指定的密码和散 列算法生成一个合适于存储在配置文件中的散列密 码。命名空间为:System.Web.Security语法为:Public static string HashPasswordForStoringInConfigFile(string password,string passw
3、ordFormat)语法为: Public static string HashPasswordForStoringInConfigFile(string password,string passwordFormat) 参数说明: password:要进行散列运算的密码。 passwordFormat:要使用的散列算法。是string类型。在用户添加注册信息时需要判断其输入信息的合法性,主 要考虑的有:会员名不能为空、两次密码是否一致等。判断 这些信息需要使用服务器验证控件。RequiredFieldValidator 非空验证控件CompareValidator 比较验证控件RegularE
4、xpressionValidator 正则表达式验证控件例如:*解释: ControlToValidate属性设置为 “TextName”ErrorMessage属性设置为“必须填写”会员登录关键技术1.防止SQL注入式攻击在判断用户输入的会员名和密码是否和数据库中的相等时, 需要注意SQL注入式攻击,它是指利用设计上的漏洞,在目标 服务器上运行SQL命令以及进行其他方式的攻击。例如在输入 会员名的文本框中输入名“mr”,然后用SQL语句查找数据库 中符合条件的记录有几条。SQL语句如下: Select count(*) from LoginInfo where Name=mr如果在文本框中输
5、入 “mror1”那么SQL语句如下: Select count(*) from LoginInfo where Name=mror1这样一条SQL语句作用是查找出LoginInfo表中所有记录, 为了防止这样的SQL语句注入攻击,通常使用: SqlCommand.Parameters属性传参的方法将非法字符过滤 掉。代码见下页:SqlCommand com=new SqlCommand (“select count(*)from logininfo where Name=name ”, con); com.Parameters.Add (new SqlParameter(“name”,Sql
6、DbType.VarChar,50); com.Parameters“name”.Value=TextName.Text;2.验证码技术所谓验证码就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰像素,由用户肉眼识别其中的验证码信息,输 入表单提交网站验证,成功后才能使用某些功能。验证码技术:在验证码产生的页面ValidateCode.aspx的page_load 事件中实现了该技术。首先在page_load中调用了自定义方 法CreateRandomCode产生4个随机字符,在将随机字符保 存到session中便于判断验证码输入的对错。最后调用自定义 方法CreateImag
7、e对4位随机字符产生干扰。protected void Page_Load(object sender, EventArgs e)string checkCode = CreateRandomCode(4);Session“CheckCode“ = checkCode;CreateImage(checkCode);在CreateImage方法中,绘制验证码需要应用Graphics类封 装一个绘图图面、Font类定义字体字号和字形属性、Brush 类定义填充图形的形状、Pen类定义用于绘制直线和曲线的对 象,使用这几个类要添加命名空间using.System.Drawing 最终实现在红色画布上输出白色字体的验证码,并加上蓝色的 干扰线。如图所示: