7.4.1 用户注册、登录与退出系统
为了综合本章所学的知识,这里以常用的用户注册与登录为例,详细介绍数据库的存取应用。
用户注册要用到查询和插入记录集,先查询该用户名是否已经存在,若用户名已经存在则返回注册失败信息,若用户名不存在则插入当前用户名到数据库表中。
用户登录时,要用到查询记录集,查询条件为用户名和用户密码,与用户输入的登录名和密码一致,若查询记录集为空则登录失败,若不为空则登录成功。登录成功的同时要把用户名存入Session对象中,标志用户已经登录。当然也可以使用cookies来记录用户名等信息,这里为了简单把用户名记录在Session对象中。
用户退出登录的过程,就是清除记录用户名的Session对象的过程,没有了此标志则说明用户没有登录,即退出了登录。
为了避免使用过多网页而造成混淆,这里把以上三种功能整合在一个网页reg_logAction.asp中。
在访问网页主页的时候会先判断记录用户名的Session对象是否为空,为空则显示登录表单,不为空则显示欢迎信息。
共使用了1个数据库文件和4个ASP文件,它们分别是:
(1)db1.mdb——数据库文件;
(2)conn.asp——连接数据库,建立Connection对象;
(3)index.asp——用户登录网页的第一个页面;
(4)regForm.asp——用户填写注册信息的页面;
(5)reg_logAction.asp——用户注册登录和退出登录功能页面。
下面依次建立各个文件。
1. 数据库文件db1.mdb
该数据库文件在第7.1节已经建立,这里只用到其中的一张表Users。该数据表(见图7-23)有id、name、pwd、depts和grade五个字段,里面已经有了几条记录。在这里将name字段设为主键。
图7-23 users数据表的结构
2. 连接数据库文件Conn.asp
------------------------------清单 conn.asp-------------------------
<%
Dim conn
set conn=Server.CreateObject("ADODB.Connection")
conn.open "Driver={Microsoft Access Driver
(∗.mdb)};Dbq="&Server.MapPath("db1.mdb")
%>
--------------------------------------------------------------------
3. 用户访问网站的首页index.asp
这里使用了条件语句,根据条件成立与不成立来显示不同的信息:登录表单(见图7-24)和欢迎信息(见图7-25)。
------------------------------清单 index.asp------------------------
<!--#include file="conn.asp" -->
<html>
<head>
<title>用户注册与登录</title>
</head>
<body>
<%if session("userName")="" then %>
<!--如果没有登录则显示登录表单 -->
<table width="90%" border="0" cellpadding="5" cellspacing="1"
bgcolor="#666666">
<!-- 注意表单的Action后面带的URL参数-->
<form name="form1" method="post"
action="reg_logAction.asp?action=log">
<tr>
<td bgcolor="#dddddd"> 用户登录:
用户名:<input name="userName" type="text" id="userName" size="12">
密码:<input name="passWord" type="password" id="passWord"
size="12">
<input type="submit" name="Submit" value="登录">
<a href="regForm.asp">注册</a></td>
</tr>
</form>
</table>
<%else%>
<!--如果已经登录则显示欢迎信息 -->
<table width="98%" border="0" cellpadding="5" cellspacing="1"
bgcolor="#666666">
<tr>
<td bgcolor="#dddddd">
欢迎您:<% =session("userName")%>
今天是:<%=date()%>
<!-- 注意链接后面带的URL参数-->
<a href="reg_logAction.asp?action=exit">退出</a> </td>
</tr>
</table>
<%end if%>
</body>
</html>
--------------------------------------------------------------------
图7-24 用户未登录时显示登录界面
图7-25 用户已登录时显示欢迎信息
4. 用户填写注册信息的页面regForm.asp
----------------------------清单 regForm.asp------------------------
<html>
<head>
<title>用户注册</title>
</head>
<body>
<form name="form1" method="post"
action="reg_logAction.asp?action=reg">
<table width="98%" border="0" cellpadding="5" cellspacing="1"
bgcolor="#666666">
<tr bgcolor="#dddddd">
<td colspan="2"> => 填写注册信息</td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="150">用户名:</td>
<td><input name="userName" type="text" id="userName"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="150">密码:</td>
<td><input name="passWord" type="password" id="passWord"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="150">重复密码:</td>
<td><input name="passWord2" type="password" id="passWord2"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="150">所在系部:</td>
<td><input name="department" type="text" id="department"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td colspan="2" align="center">(必须填写所有信息)
<input type="submit" name="Submit" value="确定">
<input name="Submit2" type="reset" value="重填"></td>
</tr>
</table>
</form>
</body>
</html>
--------------------------------------------------------------------
调试结果如图7-26所示。
图7-26 用户填写注册信息页面
5. 注册登录和退出登录功能页面 reg_logAction.asp
这个网页较为复杂,请参照说明仔细阅读。
-----------------------清单 reg_logAction.asp -----------------------
<!--#include file="conn.asp" -->
<%
Dim rs,str
'str变量中存储登录/注册/退出的相关信息
'rs为记录集
set rs=Server.CreateObject("ADODB.Recordset")
select case Request.QueryString("Action")
'使用分支语句,依据URL后面的不同参数执行不同的分支
'----------------------用户登录---------------------------------
case "log"
rs.Open "Select ∗ from Users where
name='"&request.Form("userName")&"' and
pwd='"&request.Form("passWord")&"'",conn
'使用eof 和 bof 来判断记录集是否为空
if not rs.eof and not rs.bof then
Session("userName")=request.Form("userName")
str="1. 登录成功<br>2. 3 秒后返回主页"
else
str="1. 登录失败<br>2. 3 秒后返回主页"
end if
'----------------------退出登录----------------------------------
case "exit"
'清除Session("username")
Session("userName")=""
str="1. 用户退出成功<br>2. 3 秒后返回主页"
'----------------------注册新用户---------------------------------
case "reg"
if request.form("userName")<>"" and request.form("passWord")<>"" and
request.form("passWord2")=request.form("passWord")and
request.form("department")<>"" then
rs.open "select ∗ from Users where
Name='"&request.Form("userName")&"'",conn
'判断用户名是否已经存在
if not rs.eof and not rs.bof then
str="1. 用户名已经存在,请重新选择用户名<br>2. 3秒后返回主页"
'插入记录,注册新用户
else
conn.execute "insert Into Users(Name,Pwd,depts)Values
('"&request.form("userName")&"',
'"&request.form("passWord")&"','"&request.form("department")&"')"
str="1. 用户注册成功<br>2. 3秒后返回主页"
end if
else
'用户注册信息不正确,注册失败
str="1. 用户注册信息不正确,注册失败<br>2. 3秒后返回主页"
end if
'------------------------------------------------------------
case Else
Response.write "请选择事件"
end Select
%>
<html>
<head>
<title>登录/注册/退出 结果</title>
<!--3秒后返回index.asp -->
<meta http-equiv="refresh" content="3;URL=index.asp">
</head>
<body>
<table width="90%" border="0" cellpadding="5" cellspacing="1"
bgcolor="#666666">
<tr bgcolor="#dddddd">
<td>>> 登录/注册 结果</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><%=str%></td>
</tr>
</table>
</body>
</html>
--------------------------------------------------------------------
调试结果如图7-27、图7-28所示。
图7-27 用户登录成功、失败与退出的界面
图7-28 用户注册成功/失败的界面
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。