第七章：给留言簿的留言管理设置密码验证（二）

为了兑现我对大家的承诺，我们现在立即就将“借助数据库和ASP程序”编写出来的，可以同时适用于IIS和PWS的安全网页看个仔细。 先睹为快，还是让我们首先就来看看该ASP程序(password.asp)。

< %
Function CheckPassword( Name, Password )
Dim conn, param, rs
Set conn = Server.CreateObject("ADODB.Connection")
param = "driver={Microsoft Access Driver (*.mdb)};"
conn.Open param & ";dbq=" & Server.MapPath("book2.mdb")
sql = "Select * From key Where Name='" & Name & "' And Password = '" & Password & "'"
Set rs = conn.Execute( sql )
If rs.EOF Then
'如果没有数据记录存在
CheckPassword = False
Else
CheckPassword = True
End If
End Function
%>
'编写一Function函数，利用这个函数向数据库book2.mdb传入Name和Password（即用户名和密码）；然后利用Select指令从key数据表中选取具有与函数传入的Name和Password相吻合的数据记录；最后用If...Then...Else语句来判断数据表key中是否存在有符合条件的数据记录，并据此，给Function返回相应的结果。
< %
If IsEmpty(Session("Passed")) Then Session("Passed") = False
'判断上网者的Session("Passed")是否为空，即是否没有Session信息，如果是的话则说明上网者是第一次启动以下的程序。
Head = "请输入您的姓名和密码"
Name = Request("Name")
Password = Request("Password")
If Name = "" Or Password = "" Then
Head = "请输入您的姓名和密码"
'因为是初来者，所以Name = Request("Name")和Password = Request("Password")都等于空字符串，Session("Passed") = False，语句：If Not Session("Passed")（见下面）成立，于是将输入“用户名称及密码”的页面(见下图）显示出来。
ElseIf Not CheckPassword( Name, Password ) Then
Response.write "用户名称或密码错误"
Response.end
'如果上网者输入的“用户名称及密码”不正确的话，则显示说明信息："用户名称或密码错误"
Else
Session("Passed") = True
End If
'当然，当上网者输入的“用户名称及密码”是正确的话，则Session("Passed")将等于 True。
If Not Session("Passed") Then
'如果If Not Session("Passed") Then不成立的话，将不会显示输入“用户名称及密码”的页面，而是直接进入加密的网页。
%>
'我们可以使用Session对象来存储特定用户的Session信息，即使该客户端由一个Web页面跳到另一个Web页面，该Session信息仍然存在。所以我们在这里用Session对象来存储上网者的信息，只要你通过了该密码验证，Session("Passed")就记下你已通过了该密码验证，因此在Session对象的有效期限内，你如果再次访问该网页时就不用再输入用户名称及密码就可以直接进行被加密的页面。
'-=在此省去了输入用户名称及密码页面的HTML代码=-
输入用户名称及密码的页面如下所示：
< %
Response.End
End If
%>