admin管理员组

文章数量:1532201

2023年12月24日发(作者:)

江苏技术师范学院09信息W陈文华(请勿抄袭!)

JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY

网站会员登录与注册系统

实验报告

学 院: 计算机工程学院

专 业: 信息管理与信息系统

学 号: 09142102

学生姓名: 陈文华

指导教师: 余小军

完成时间: 2012.05.03

用于学习交流使用,请勿抄袭!

1

江苏技术师范学院09信息W陈文华(请勿抄袭!)

网站会员登录与注册系统实验报告

一、 实验要求

网站会员登录与注册系统运用广泛,几乎所有的正规网站都需要注册会员,在进入该网站时也必须通过登录、验证操作才能使用网站中的功能。为此,设计网站会员登录与注册系统的必要性即比较突出了。在开发会员注册和会员登录时需要考虑到网络的安全问题,例如在登录时使用非法程序破解密码等等一些问题。

本次设计主要运用Visual Studio 2005开发动态网页,并辅以SQL Server 2005进行数据库的设计。本系统主要实现的功能是:会员进入某网页时会出现登录界面,如果已经注册过会员那么就可以点击立即登录直接登录网站;如果还没有注册过会员那就点击立即注册账号,转入注册会员界面,在输入必要信息之后就可以注册会员了,之后再登录网站时就可以直接登录不需要注册了。

会员注册时所填的信息将会添加到数据库“cwh”的“LoginInfo”数据表中,会员的注册信息会添加到数据库“cwh”的“LoginLog”数据表中,会员的登录信息会添加到数据库“cwh”的“EntryLog”数据表中。通过与数据库的连接才可以实现这些功能,下面将会介绍如何连接数据库。

该系统主要实现会员登录与注册的系统。实现的功能有:

1、会员登录界面。会员输入用户名,密码,验证码进入网站。

2、会员注册界面。新会员可以进入注册界面,输入一些必要的信息(用户名必须是不一样的,即不能出现和原数据库中有的用户名)即可注册会员,下次登录时就可输入用户名,密码,就可以立即登录了。

3、验证码。为防止用户用特定的程序暴力破解方式进行不断的登录尝试,来破解密码。

二、 设计思路

现在很多的网站都需要是会员才能使用的功能,例如在网站上下载一些资料,查看某些文章,留言等。这就需要开发人员给网站设计登录和注册功能。使用户成为会员后能使用更多的功能。

用于学习交流使用,请勿抄袭!

2

江苏技术师范学院09信息W陈文华(请勿抄袭!)

本系统主要包括两项操作,即用户登录和用户注册。运行登录页面后,如

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

用户

是否登录

注册

登录

注册信息是否合法

会员名、密码、验证码是否正确

返回登录页

进入首页

图2-1 会员注册与登录系统业务流程图

用于学习交流使用,请勿抄袭!

3

江苏技术师范学院09信息W陈文华(请勿抄袭!)

本系统主要实现会员注册以及登录功能。(1)、注册系统:会员注册界面包括会员登录名、真实姓名、Email、地址等 “text单行文本框”,密码、确认密码“password密码框”,性别“radio单选按钮”,注册“submit提交按钮”,取消“reset重置按钮”等。(2)、会员登录界面包括会员名“text单行文本框”,

密码“password密码框”,验证码“text单行文本框”,登录按钮,验证码,以及跳转到注册界面的注册按钮。

三、 数据库设计

利用SQL Server 2005数据库,建立一个名为“cwh”的数据库,并创建三个表,分别为会员基本资料表—“LoginInfo”,会员注册表—“LoginLog”,会员登录表—“EntryLog”。

1. 数据库创建过程

打开“Microsoft SQL Server 2005”,选择“企业管理器”,打开后展开窗口左侧“服务

器”树形图,点击“数据库”,右击“数据库”—“新建数据库”,数据库命名为“cwh”。

2. 数据表创建过程

(1) LoginInfo表

数据表LoginInfo用于存储后台会员名称、密码、联系方式等一系列的资料。

展开数据库“cwh”树形结构,右击“表”—“新建表”,输入列名,数据

类型,长度,是否允许空等,输入完毕后关闭,出现提示框,点击“是”,输入表名称“LoginInfo”。表格如下表3-1所示。

表3-1 LoginInfo表结构

字段

ID

Name

Password

Sex

TrueName

Phone

Email

Address

类型

Varchar

Varchar

Varchar

Char

Varchar

Varchar

Varchar

Varchar

长度

20

12

20

2

12

22

50

50

允许空

说明

主键

会员名

密码

性别

真实姓名

联系电话

电子邮件

居住住址

新建好“LoginInfo”表后,右击“LoginInfo”表—返回所有行,即可看到表中内容。以下列举部分会员注册信息。如下表3-2所示。

用于学习交流使用,请勿抄袭!

4

江苏技术师范学院09信息W陈文华(请勿抄袭!)

表3-2会员注册信息

ID Name Password Sex TrueName Phone Email Address

2101

2102

2103

2104

2127

2128

饭饭

文子

西西

Y_

叶子

F_

2101

2102

2103

2104

2127

2128

帅帅

文华

曦曦

芳芳

松子

鱼泳

1235

1236

1263

1325

1621

1963

************************************************************…

1#2-507

1#2-507

1#2-507

1#2-507

10#501

10#501

(2) LoginLog表

数据表LoginLog用于会员注册日志,记录会员注册的时间。

展开数据库“cwh”树形结构,右击“表”—“新建表”,输入列名,数据

类型,长度,是否允许空等,输入完毕后关闭,出现提示框,点击“是”,输入表名称“LoginLog”。表格如下表3-3所示。

表3-3 LoginLog表结构

字段

ID

Name

Logindate

(3) EntryLog表

数据表EntryLog用于会员登录日志,记录会员登录的时间。

展开数据库“cwh”树形结构,右击“表”—“新建表”,输入列名,数据

类型,长度,是否允许空等,输入完毕后关闭,出现提示框,点击“是”,输入表名称“EntryLog”。表格如下表3-4所示。

表3-4 EntryLog表结构

字段

ID

Name

Logindate

类型

int

Varchar

Datetime

长度

4

12

8

允许空

说明

主键

会员名

会员登录时间

类型

int

Varchar

Datetime

长度

4

12

8

允许空

说明

主键

会员名

会员注册时间

四、 会员注册

(一) 实现关键技术

用于学习交流使用,请勿抄袭!

5

江苏技术师范学院09信息W陈文华(请勿抄袭!)

会员注册主要是将用户输入的相应信息存储到数据库中,这里使用到了连接

数据库技术。使用SQLConnection对象连接数据库。将连接数据库对象封装成一个自定义方法CreateLoginConn在需要用到数据库连接时调用此方法。CreateLoginConn方法的代码如下。

Protect SqlConnection CreateLoginConn()

{

SqlConnection con=new SqlConnection(“

Data Source=localhost;Initial Catalog=cwh;”+”Intergrated Security =True;

User ID=sa;Password=09142102;”);

Return con;…………………….连接数据库cwh,用户名sa,密码09142102

}

用户在添加注册信息时需要判断一下用户输入的信息是否合法:

(1)用户名

会员名不能为空,必须是3—6个字符,只能输入字母,数字或下划线,同时要检测会员名是否已经存在。ControlToValidate属性设置为TextName,ErrorMessage1属性设置为“必须填写”。

代码如下:

*

 

OnClick="Button3_Click"Text="检测会员名" />

runat="server" ControlToValidate="TextName"

ErrorMessage="必须填写"

Font-Bold="True" Font-Size="10pt">

(2)密码:

两次输入的密码必须要一致,密码为6—16个字符,区分大小写。ControlToValidate属性设置为TextPass,ErrorMessage1属性设置为“必须填写”。

代码如下:

用于学习交流使用,请勿抄袭!

6

江苏技术师范学院09信息W陈文华(请勿抄袭!)

TextMode="Password" Width="125px">

style="color: #ff0033">*

ID="RequiredFieldValidatorPass" runat="server"

ControlToValidate="TextPass"

ErrorMessage="必须填写,"

Font-Bold="True" Font-Size="10pt">

(3)电子邮件

电子邮件不能为空和电子邮件的地址是否正确。ControlToValidate属性设置为:TextE-mail,ValidationExpression属性设置为:w+([-+.’]w)*@w+([-.]w+)*.

w+([-.]w+)*

代码如下:

EnableViewState="False">

style="color: #ff0066">*

ID="RequiredFieldValidatorEmail"runat="server"

ControlToValidate="TextEma"

ErrorMessage="必须填写"

Font-Bold="True" Font-Size="10pt">

(二) 功能实现

注册页面的运行结果如图4-2-1所示。

用于学习交流使用,请勿抄袭!

7

江苏技术师范学院09信息W陈文华(请勿抄袭!)

图4-2-1 注册页面

主要操作步骤如下:

(1) 创建Web窗体,命名为。

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

表4-2-1 页面中的控件及其用途

控件类型

标准/TextBox控件

控件名称

TextName

TextPass

TextQrPass

TextTrueName

TextPhone

TextEmail

用途

输入会员名

输入密码

确认密码

输入真实姓名

输入电话

输入电子邮件

用于学习交流使用,请勿抄袭!

8

江苏技术师范学院09信息W陈文华(请勿抄袭!)

TextAddress

标准/Button控件

ButtonLogin

ButtonCancle

标准/Button控件

标准/RadioButton控件

ButtonisName

RadioButtonMan

RadioButtonWoman

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

输入地址

将信息添加到数据库

返回到登录窗口

判断用户名是否存在

选择男

选择女

“检测会员名”按钮用于判断会员是否存在。在“检测会员名”按钮的Click事件中调用自定义方法isName,判断isName方法返回的整数是否大于0,如果大于0说明数据库中已经存在用户输入的会员名,否则说明数据库中不存在该会员名,并给出相应的提示。实现代码如下:

Protected void Button3_Click(object sender,EventArgs e)

{

int i=isName();

if(i>0)

{

RegisterStartupScript(“yes”,””);

}

else

{

RegisterStartupScript(“no”,” ”)

}

}

自定义方法的isName用来检测会员名并返回一个整数值(值为1会员名存在,值为0会员名不存在)。在该方法中先获取用户输入的用户名并将其赋给变量name,然后使用SQL语句。isName方法的代码如下:

protected int isName()

{

用于学习交流使用,请勿抄袭!

9

江苏技术师范学院09信息W陈文华(请勿抄袭!)

int i;

string name=;

if(()!=””)

{

SqlConnection con=createLoginConn();

();

SqlCommand com=new SqlCommand(“select count(*)from loginInfo

where Name=””+name+”””,con);

();

return i= 32(eScalar());

}

else

return i=1;

}

自定义方法add用于将会员输入的密码使用MD5加密和其他的注册信息一起添加到数据库,如果添加成功将返回布尔值True。Add方法的代码如下:

public bool add()

{

string name=;

string

pass=sswordForStoringInConfigFile(,”MD5”);

string sex;

if(d)

{

sex=”男”;

}

else

{

用于学习交流使用,请勿抄袭!

10

江苏技术师范学院09信息W陈文华(请勿抄袭!)

sex=”女”;

}

string trueName=;

string phone=;

string address=;

string email=;

string sql=”insert into loginInfo values

(“’+id+’”,”’+name+’”,”’+pass+’”,”’+sex+’”,”’+trueName+’”,”’+phone+’”,”’+email+’”,”’+address+’”)”;

SqlConnection con=LoginConn();

();

SqlConnection con=new SqlCommand(sql,con);

int i=32(eNonQuery());

if(i>0)

{

return true;

}

else

return false;

();

}

界面实现部分代码如下:

会员登录名:

用于学习交流使用,请勿抄袭!

11

江苏技术师范学院09信息W陈文华(请勿抄袭!)

maxlength="50" size="15">

*

(3-16个字符,只能输入字母,数字或下划线)

性别:

checked>男   

     

五、 会员登录

会员登录功能主要通过判断用户输入的会员名和密码是否与数据库中的会员名和密码相等,相等则登录成功。利用验证码技术,阻止一些非法的操作。

(一) 关键技术实现方法

用于学习交流使用,请勿抄袭!

12

江苏技术师范学院09信息W陈文华(请勿抄袭!)

验证码技术

所谓验证码,就是将一串随即产生的数字或符号,生成一幅图片,图中加上了一些干扰像素,由用户肉眼识别其中的验证码信息,输入表单提交到网站进行验证,验证成功后才能使用某些功能。验证码的作用是防止用户用特定程序暴力破解方式进行不断的登录尝试来破解密码。实际上用验证码是现在很多网站通过的方式,虽然登录略显麻烦,但是这个功能还是很有必要的,也很重要的。不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。验证码技术的具体实现代码如下所示。

protected void Page_Load(object sender, EventArgs e)

{

string checkCode=CreateRandomCode(4);

Session[“CheckCode”]=checkCode;

CreatImage(checkCode);

}

自定义方法CreateRandomCode用于产生随即字符,主要使用字符串数组存放数字和大写字母,使用随机数产生数组的下标,把字符取出放入字符串中。CreateRandomCode方法的代码如下:

private string CreateRandomCode(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,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z”;

string[] allCharArray=(‘,’);

string randomCode=””;

int temp;

Random rand=new Random();

for(int i=0;i

{

int t=(35);

temp=t;

randomCode+=allCharArray[t];

用于学习交流使用,请勿抄袭!

13

江苏技术师范学院09信息W陈文华(请勿抄袭!)

}

return radomCode;

}

把取出的字符串通过自定义方法CreateImage添加一些干扰元素,在CreateImage方法中绘制验证码需要使用Graphics类封装一个绘图图面、Font类定义字体字号和自行属性、Brush类定义填充图形的形状、Pen类定义用于绘制直线和曲线的对象,使用这几个类需要添加命名空间g。

CreateImage方法的代码如下。

private void CreateImage(string checkCode)

{

int iwidth = (int)(*10.5);

image = new (iwidth,20);

Graphics g = age(image);

Font f = new

("Arial",10,);

SolidBrush();

Brush b = new rush();

();

ring(checkCode,f,b,3,3);

Pen blackPen = new pen(,0);

Random rand = new Random();

for(int i=0;i<4;i++)

{

}

Stream ms = new Stream();

(ms,);

ontent();

tType="image/Jpeg";

用于学习交流使用,请勿抄袭!

14

int y = ();

ne(blackPen,0,y,iamge,Width,y);

江苏技术师范学院09信息W陈文华(请勿抄袭!)

}

Write(y());

se();

e();

(二) 功能实现

登录页面的运行结果如图5-2-1所示。

主要实现步骤如下:

(1) 创建Web窗体,命名为。

图5-2-1 登录页面

(2) 在Default窗体中添加控件,添加的主要控件及用途如表5-2-1所示。

表5-2-1 页面中控件及其用途

控件类型

标准/TextBox控件

控件名称

TextName

TextPass

TextBoxYzm

标准/Button控件

Html/Input(Resrt)控件

ButtonLanding

Reset1

用于学习交流使用,请勿抄袭!

用途

输入会员名

输入密码

输入验证码

“登录”密码

用于重置

15

江苏技术师范学院09信息W陈文华(请勿抄袭!)

标准/Image控件

标准/LinkButton控件

Image1

LinkButton1

LinkButton2

用于显示验证码

用于链接注册页面

重新链接验证码

会员登录界面部分代码如下所示:

height="144">

会员名:

size="22">*

密码:

*

用于学习交流使用,请勿抄袭!

16

江苏技术师范学院09信息W陈文华(请勿抄袭!)

验证码:

*

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

在“登录”按钮的Click事件中判断验证码、用户输入的会员名和密码是否正确,如果正确需要把当前的会员名和当前登录时间添加到登录日志数据库中。Click事件的代码如下:

protected void Button1_Click(object sender,EventArgs e)

{

SqlConnection con = new SqlConnection

(“server=.;database=login;uid=sa;pwd=;”);

if(Session["CheckCode"].ToString().Equals(ng()))

{

try

{

();

SqlCommand com = new SqlCommand("select count(*) from

loginInfo where Name=@name and Pass=@ps",con);

(new

SqlParameter("@name",r,50));

用于学习交流使用,请勿抄袭!

17

江苏技术师范学院09信息W陈文华(请勿抄袭!)

ters["@name"].Value=;

(new

SqlParameter("@ps",r,50));

ters["@ps"].Value=

PasswordForStoringInConfigFile(,"MD5");

int i = (int)eScalar();

if(i>0)

{

com=new SqlCommand("insert

EntryLog values("'++'","'+

ng()+'")",con);

}

}

eNonQuery();

;

ct("");

else

{

}

("");

catch(Exception error)

{

}

(ng()):

else

}

("");

登陆成功后的效果如图5-2-2所示。

用于学习交流使用,请勿抄袭!

18

江苏技术师范学院09信息W陈文华(请勿抄袭!)

图5-2-2 登录成功页面

在此页面的Page_Load事件中需要通过Image1控件的ImageUrl属性来绑定验证码。Page_Load事件的代码如下:

protect void Page_Load(object sender,EventArgs e)

{

if(!IsPostBack)

{

rl=””;

}

}

为了防止验证码看不清,需要在验证码后面添加LinkButton控件,重新绑定一下Image控件的ImageURL属性。LinkButton2控件的Click事件响应代码如下。

protect void Page_Load(object sender,EventArgs e)

用于学习交流使用,请勿抄袭!

19

江苏技术师范学院09信息W陈文华(请勿抄袭!)

{

rl=””;

}

六、 总结

本系统主要涉及两个技术,即用户登录和用户注册技术。虽然只有两个看似简单的技术,但对于初学者的我来说,在试验过程还是碰到许多的难题,当然在一次次的失败中也获得了很多的经验教训。先将试验的心得总结如下:

一、前台网页与数据库的连接:

由于刚开始没有注意在数据库连接语句中加入“ent”该条语句,导致连接数据库时出现错误。经过改正后,能从前台看到数据库中的会员信息了。

二、控件信息的获取:

由于没有学过相关的控件知识,做到这步还是有点困惑的。在通过上网查阅资料,以及询问同学之后,了解到,其实和以前学过的eclipse开发类似,都是通过封装技术“即所谓的get,set”。

三、验证码技术:

显然,验证码技术也没有学过,这部分还是比较难以下手的。通过上网查阅资料,还是一知半解,不得已,寻求了学长的帮助,在同学的帮助之下,完成了该部分的内容,虽然现在还是不能自己做到,但是相信在以后的自学能自己完成,哪怕比较拙劣。

四、页面设计:

作为女孩子的我,比较热心与做界面的美化设计,虽然比较浪费时间,但是我觉得还是很有必要的。营销学上学过,一个网站的好坏,很大部分反映在界面的设计上。不管网站功能有多么的强大,页面不够美观的话,我相信一定不会有很多人感兴趣,“第一映像”还是很重要的。一个过于“朴素”的界面,你会去关心它吗?当然,界面的美观是重要的一部分,网站的功能也是很重要的。我在这方面还是比较欠缺技术的。相信在以后的学习过程,能加强这两方面的技术,在实现功能的基础上加以美化,在美化的前提下,获得强大功能!

总之,整个系统的设计过程还是充满着乐趣的。很好的锻炼了自学能力,也用于学习交流使用,请勿抄袭!

20

江苏技术师范学院09信息W陈文华(请勿抄袭!)

增强了检索资料的能力,和与人沟通的交际能力。这不是一次单纯的实验,单纯的作业任务,而是一次很好的锻炼机会。在疑问中学会提出问题,在失败,获得经验教训,是自己的技术水平得到提升。

用于学习交流使用,请勿抄袭!

21

本文标签: 会员注册登录输入数据库