搜档网
当前位置:搜档网 › 网站会员登录与注册系统

网站会员登录与注册系统

随着科学技术的进步,计算机行业的迅速发展,大大提高人们的工作效率。在科技技术飞跃发展的现在,网站已经成为网络的实际载体,但是以前网站提供的服务已经不能满足广大网民们日益增长的需求,而一些稍微大一些的权限和特殊功能的开发,却使得网站的开发与后期的生存越来越困难,网站的注册与登录让越来越多的网民对网站有亲切感和归属感,同时这方面的操作方便容易,技术上也比较成熟,所以,会员登录和注册系统已经得到了广泛应用。

一、实验要求

在很多网站中,会员注册与登录用得越来越广泛,这既是给网站的安全添加了一份保障,很多资料的下载或者更深入的访问都需要使用到这个系统,同时系统的设置和构造也让使用的用户感到一种归属感和幸福感,每次登录就有一种亲切感。

在会员注册系统的设计方面:

会员注册时用户第一次访问某个网站或者页面的时候需要用到的,第一次使用时需要用户把自己的个人资料输入进去,然后由系统保存到数据库中,个人资料包括很多,各个网站都是不一样的,有的需要的资料多点,有的需要的资料少点,但最基本的用户名和密码是必须要的。当系统保存了后,下次用户就变成是会员了,不用再注册,而是进行简单的登录就可以访问上次访问的网站了。

在会员注册上用到的技术有连接数据库技术和密码的加密技术,当然还需要用到判断用户名是否为空等信息所需要的服务器验证控件。连接数据库用到SQLConnection对象和自定义方法CreateLoginConn。加密技术用到的是MD5技术,这是一种单向加密技术。验证控件的类型和属性在下面的用户注册这块有详细说明。

在会员登录系统的设计方面:

会员进行登录时,只要输入之前注册过的信息就行了。在这里需要注意的是,密码和验证码一定要输入正确,特别是验证码,比较容易看错。当登录成功后,就进入登录成功特有的页面。

这时,会员就可以访问想要看的网站或者页面了。

二、实验设计思路

2.1、功能概述

(1)判断用户输入的会员名和密码是否正确;

(2)利用验证码来防止用户的非法操作;

(3)用户登录成功添加登录日志;

(4)注册新的会员;

(5)判断注册新会员名是否已经被使用;

(6)判断用户输入的一些资料是否合法;

(7)用户注册成功添加注册日志。

2.2、业务流程图

业务流程图就是用一些规定的符号及连线来表示某个具体业务处理过程。业务流程图是一种描述系统内各单位、人员之间业务关系、作业顺序和管理信息流向的图表,利用它可以帮助分析人员找出业务流程中的不合理流向,它是物理模型。

这里主要包括两种操作:用户登录和用户注册。

如果要完成用户登录,则一定要有一个表单页面,此页面可以输入登录用户名和密码,然后将这些信息提交到一个验证的jsp页面上进行数据库的操作验证,如果可以查询到用户名和密码,那么就表示此用户是合法用户,则可以跳转到登录成功页。如果没有查询到表示此用户是非法用户,应该跳转到错误页面提示。

运行登录页面后,如果没有注册会员,可以单击“会员注册”按钮跳转到会员注册页面,在此页面中可以先判断用户输入的会员名是否存在,如果存在,则需要重新选择会员名,如果不存在,用户可以继续输入个人资料来完成注册,完成注册后,添加注册日志。如果用户已经注册过,则直接输入会员名、密码和验证码,单击“登录”按钮进行登录。在单击“登录”按钮时,系统首先判断用户输入的验证码是否正确,如果正确,再判断用户输入的会员名和密码是否正确,都正确后,登录就成功了。

会员注册与登录系统的业务流程图如下图所示:

业务流程图的绘制是按照业务的实际处理步骤和过程进行的。业务流程图是一种系统分析人员都懂的共同语言, 用来描述系统组织结构、业务流程。

2.3、文件组织结构

用户

是否登录 登录

输入用户名和密码

用户名和密码正确

登陆成功跳转到首页

是 是

注册

注册信息是否合法

返回登录页

错误信息提示

其中:index.aspx 是登录成功后跳转的页面

Landing.aspx 是登录页面

Login.aspx 是注册页面

Web.config 是网站配置文件

ValidateCode.aspx 是产生验证码页面

接下来对Web.config 网站配置文件进行简单说明:

应用程序配置文件Web.config——用于应用程序特定的设置。配置Web.config 文件需要两步:1)设置SessionState SessionState称为会话状态,可以在SessionState节中指定一个Session是否超时、是否启用或支持Cookies等。 2)用户身份验证与授权https://www.sodocs.net/doc/a69431354.html,中提供了4种身份验证方式:None、Windows、Forms、Passport。

三、数据库设计

数据库是整个系统的基石,数据库的设计优劣直接影响到整个系统的设计成败,在此对数据库的设计进行专门阐述。

数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。

在设计和操作维护数据库时,关键的步骤就是要确保数据正确地分布到数据库的表中。使用正确的数据结构,不仅便于对数据库进行相应的存取操作,而且可以极大地简化应用程序的其他内容(查询、窗体、报表、代码等)。

这个系统需要使用数据库来存储相关的信息,数据库是整个系统的基础,只有将数据库框架搭建起来,才能完成子模块的编辑、实施。为方便数据的维护和数据的有效扩充,这里采用的数据库开发工具是Microsoft SQL Server 2005

3.1、数据库以及表的建立

首先,进入Microsoft SQL Server 2005,并新建数据库

右击数据库,选择新建数据库

接下来新建数据库,名字为MemberLanding

接下来,进入到数据库MemberLanding,添加三张表格,分别是信息表LoginInfo、注册日志表LoginLog、登陆日志表EntryLog。如图:

3.2、数据库以及表的信息

数据库名称为MemberLanding,在此数据库中创建三个表,分别为:(1)信息表,表名:LoginInfo

(2)注册日志表,表名:LoginLog

(3)登陆日志表,表名:EntryLog

并设置相应的字段,管理各功能模块中的详细内容。

LoginInfo表用来存储后台会员名称、密码和基本资料。在进行会员注册时,会输入如下表格中的信息,然后进行注册,经过注册,会把所有的信息全部保存到数据库中,这样下次会员登录时就可以直接输入用户名和密码了。

具体表格如下:

LoginLog表用来存储会员注册日志,记录会员注册的时间。会员每次注册,系统会把用户注册的名字和时间保存到LoginLog表格中。

具体表格如下:

EntryLog表用来存储会员登录日志,记录会员登录时间。会员每次登录,系统会把会员登录的名字和时间保存到EntryLog表格中。

3.3、数据库连接代码

创建连接:

SqlConnection con= new SqlConnection("Data Source=localhost;Initial Catalog=MemberLanding;Integrated

Security=True;UserID=sa;Password=;");

四、会员注册

在开发网站或其他系统时,会员注册的使用非常普遍,会员注册有很大的好处,不仅使得被访问的网站更安全,同时也拉近了和用户的距离。会员注册需要考虑用户添加的注册信息是否合法,会员名是否被使用等。

4.1、关键技术之加密技术

密码的安全性是很重要的,加密主要有单向和双向,单向就是只能对数据进行加密,但是不能解密。而双向就不一样了,双向加密也是很常用的,既可以加密,也可以解密。当然在本系统设计中,我们采用单向加密MD5技术。

MD5是信息-摘要算法的缩写,被广泛用于加密和解密技术上,它可以说是文件的“数字指纹”。任何一个文件,无论是可执行程序、图像文件、临时文件或者其他任何类型的文件,也不管它体积多大,都有且只有一个独一无二的MD5信息值,并且如果这个文件被修改过,它的MD5值也将随之改变。因此,我们可以通过对比同一文件的MD5值,来校验这个文件是否被“篡改”过。

MD5加密技术(单向加密),根据指定的密码和散列算法生成一个合适于存储在配置文件中的散列密码。

命名空间为:

System.Web.Security

语法为:

Public static string

HashPasswordForStoringInConfig

password,string passwordFormat)

语法为:

Public static string

HashPasswordForStoringInConfig

password,string passwordFormat)

参数说明:

password:要进行散列运算的密码。

passwordFormat:要使用的散列算法。是string类型。

4.2、关键技术之验证控件

在用户添加注册信息时需要判断其输入信息的合法性,主要考虑的有:会员名不能为空、两次密码是否一致等。判断这些信息需要使用服务器验证控件。RequiredFieldValidator 非空验证控件

CompareValidator 比较验证控件

RegularExpressionValidator 正则表达式验证控件

......

验证控件及其主要设置属性和用途如下表所示:

4.3、功能实现

4.3.1、注册页面的运行结果如图所示:

4.3.2、主要操作步骤是:

(1)创建Web窗体,命名为login.aspx.

(2)在Default窗体中添加控件。添加的主要控制及其用途如表所示:

控件类型控件名称用途

标准/TextBox控件TextName 输入会员名

TextName 输入昵称

TextPass 输入密码

TextQrPass 确认密码

TextTrueName 输入真实姓名

TextPhone 输入电话

TextEmail 输入电子邮件

TextAddress 输入地址

标准/Button控件ButtonLogin 将信息添加到数据库

ButtonCancel 返回到登录页面

标准/Button控件ButtonisName 判断用户是否存在标准/RadioButton控制RadioButtonWoman 选择女

4.3.3、主要代码

调用自定义方法,并把注册时间和会员名添加到日志数据库中。代码如下:

if (add()) {

SqlConnection con = this.createLoginConn();

con.Open();

SqlCommand com = new SqlCommand("insert LoginLog values('" + DateTime.Now.ToString() + "','" + TextName.Text + "','" + DateTime.Now.ToString() + "')", con);

com.ExecuteNonQuery();

Response.Write("");

con.Close();

}

else

Response.Write("");

}

加密后获取用户注册的相关信息的代码如下:

public bool add()

{

string name = TextName.Text;

string name 1= TextName1.Text;

//使用MD5把用户添加的密码进行加密string pass = FormsAuthentication.HashPasswordForStoringInConfig, "MD5");

string sex;

if (RadioButtonMan.Checked)

{

sex = "男";

}

else

{

sex = "女";

}

string trueName = TextTrueName.Text;

string phone = TextPhone.Text;

string address = TextAddress.Text;

string email = TextEmail.Text;

string sql = "insert into loginInfo values('"+ DateTime.Now.ToString() +"','"+ name + "','" + pass + "','" + sex + "','" + trueName + "','" + phone + "','" + 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();

}

五、会员登录

本模块主要是用户通过会员管理系统的登录界面进入该系统。用户输入正确的用户名和密码,系统会根据用户的身份进行相应权限划分;如果登录信息有错

误,则系统提示登入错误的信息,并且禁止系统用户进行任何操作。

会员登录主要是通过判断用户输入的会员名和密码是否和之前注册时存储在数据库中的会员名和密码相等,如果相等的话,那么登录就成功了。同时,现在很多网站在登录页面中采用了验证码技术,这一技术的使用,有效防止了很多非法操作的产生。

5.1、防止SQL注入式攻击

在判断用户输入的会员名和密码是否和数据库中的相等时,需要注意SQL注入式攻击,它是指利用设计上的漏洞,在目标服务器上运行SQL命令以及进行其他方式的攻击。例如在输入会员名的文本框中输入名“mr”,然后用SQL语句查找数据库中符合条件的记录有几条。SQL语句如下:

Select count(*) from LoginInfo where Name=‘mr’

如果在文本框中输入“mr’or’1’”那么SQL语句如下:

Select count(*) from LoginInfo where Name=mr’or’1’

这样一条SQL语句作用是查找出LoginInfo表中所有记录

为了防止这样的SQL语句注入攻击,通常使用: SqlCommand.Parameters属性传参的方法将非法字符过滤掉。代码如下:

SqlCommand com=new SqlCommand

(“select count(*)from logininfo where Name=@name ”, con);

com.Parameters.Add (new SqlParameter(“@name”,SqlDbType.VarCha r,50));

com.Parameters[“@name”].Value=TextName.Text;

5.2、验证技术

在网站登录、发表评论时,往往都需要用户输入验证码,所谓验证码就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰像素,由用户肉眼识别其中的验证码信息,输入表单提交网站验证,成功后才能使用某些功能。

验证码的主要用途是用于防止有人利用机器人自动批量注册、对特定的用户用特定程序暴力破解方式进行不断的登录、灌水。在一些常见的大型网站,用户在未登录的情况下进行发帖就需要输入验证码,这样可以避免某些恶意的大规模匿名回帖的攻击。

一般来讲,自动注册或者表单自动填写程序不能有效识别图片验证码中的数

字或者字符,因此从一定程度上实现了阻挡攻击的作用。

在验证码产生的页面ValidateCode.aspx的page_load事件中实现了该技术。首先在page_load中调用了自定义方法CreateRandomCode产生4个随机字符,在将随机字符保存到session中便于判断验证码输入的对错。最后调用自定义方法CreateImage对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 最终实现在画布上输出字体的验证码,并加上干扰线。

5.3、登录功能的实现

主要操作步骤:

(1)创建web窗体,命名为landing.aspx。此文件就表示登录页面了。

登录成功后,进入如下页面:

用户在登录页面写好用户名和密码,选择登录,登录成功则跳转到系统的首页,否则提示错误信息。

(2)在Default窗体中添加控件,添加的主要控件及用途如下表所示:

控件类型控件名称用途

标准/TextBox控件Textname 输入会员名

TextPass 输入密码

TextBoxYzm 输入验证码

标准/Button控件ButtonLanding “登录”按钮

HTML/Input(Reset)控件Reset1 用于重新设置

标准/Image控件Image1 用于显示验证码

标准/Linkbutton控件LinkButton1 用于链接注册页面

LinkButton2 重新链接验证码

(3)主要程序代码如下:

判断验证码正确后判断用户名和密码,代码如下:

if (Session["CheckCode"].ToString().Equals(TextBoxYzm.Text.ToString()))

{

try

{

con.Open();

SqlCommand com = new SqlCommand("select count(*) from loginInfo where Name= @name and Pass=@ps", con);

com.Parameters.Add(new SqlParameter("@name", SqlDbType.VarChar, 50));

com.Parameters["@name"].Value = TextName.Text;

com.Parameters.Add(new SqlParameter("@ps", SqlDbType.VarChar, 50));

com.Parameters["@ps"].

Value = FormsAuthentication.HashPasswordForStoringInConfig, "MD5");

int i = (int)com.ExecuteScalar();

if (i > 0)

{

添加登录日志代码如下:

com = new SqlCommand("insert EntryLog values('"+DateTime.Now.ToString() + "','" + TextName.Text + "','" + DateTime.Now.ToString() + "')", con);

com.ExecuteNonQuery();

con.Close();

Response.Redirect("index.aspx");

}

else

{

Response.Write("");

}

}

catch (Exception error)

{

Response.Write(error.ToString());

}

}

else

Response.Write("");

}

六、实验总结:

经过几个月的不断学习和设计开发,加上查阅了大量资料,终于完成了这次题目“网站会员登录与注册系统”的基本功能。

网站会员登陆与注册系统是一套比较流行的方式,在日常网站开发中都会用到该系统,它防止了一些非法用户登录网站并破坏网站,提高了网站的安全性。

总体而言我的课设算是达到了老师的基本要求。总结一下有以下体会。

1、网络是个好东西,通过它能找到很多有用的资料,这样就能加深对课程的理解,对做相关的课程设计非常有帮助。当然网上的东西很乱很杂,自己要能够学会筛选。要非常的谨慎,尽量少出差错,节省时间。多找个几个参照资料,相互比较,慢慢研究,最后才能事半功倍。

2、面对困难不退缩,有克服它的坚定的信心和勇气。越是难的问题,越是要有挑战的心理。这样就能够达到废寝忘食的境界。当然这也是不提倡熬夜的,毕竟有了精力才能够打持久战。但是做课设一定要有状态,能够在吃饭,睡觉都想着要解决的问题,这样不成功都难。

3、要重于实践操作。看书看几遍都不知所云,操作中就会发现问题,加深印象,知道这个是怎么用,有些东西是书上找不到的,用的时候就知道了。在数据库设计阶段尝试了几个不同版本的数据库,它们在配置操作上各有不同,又各有优缺点,使得我在它们的一些基本操作上也有了进一步提高。

4、保持勤学勤问的好习惯。对于课程设计最大的讨论伴侣应该是同学了。能和学长学姐讨论当然再好不过了,没有这个机会的话,和自己班上同学讨论也是能够受益匪浅的。大家都在研究同样的问题,讨论起来,更能够把思路理清楚,相互帮助,可以大大提高效率。

5、坚持写错误笔记。之前在高中的时候,英语老师会让我们把错误点记录下来,多看看,效果蛮好的。在学计算机的课程中,我们也可以这么做。这样在写实验报告时能够比较完整的回忆起中间遇到的各种问题。比如当时我遇到我以前从未遇到的段错误的问题,让我都不知道从何下手。在经过大量的资料查阅之

后,我对段错误有了一定的了解,并且能够用相应的办法来解决。

在整个系统开发的过程中,我学到了很多新的知识,以前学过的许多知识点在运用过程中也有了更为深入的分析,在这个过程中也体会到了如何将书本知识转化到实际的应用中。

这次是大四前最后几次课程设计了,也是自己做得很投入的一次实训,与以前的课程设计相比,以前的都是以掌握某种实训技能为主,而这次则不仅掌握了网站的制作技术而且还制作出了自己的成果,自己非常高兴。经过这次小学期,我领悟到任何东西都要“学以至用”,学习了还不行还要看自己掌握了没,掌握了还不行还要看自己熟练了没,熟练了还不行还要做出一定成果。总体感觉这次的课程设计很充实。

相关主题