返回列表 发帖

■ 留言薄制作 > 第七章:留言管理设置密码验证

当你在网上冲浪时,相信你一定见过不少的网页,想进入就得输入正确的“用户名称和密码”,每当来到这些地方你心里是否感觉很不爽呢?而且你当时就狠狠地想:“有朝一日我也要给自己的网页加密。”
  现在为了给留言簿增加远程留言管理功能,我正准备先给留言管理的界面加密。看到这里是不是有点迫不及待了,别着急,我现在就为你细细道来,只要你真的认真看完了本章的教程后,我担保你不仅会为自己的网页加密,而且还能应用两种不同的方法来实现呢。
  要给网页加密其实并不难,假如你安装的Web服务器是IIS,那么你可以先通过IIS所提供的“Internet服务管理器”进行目录安全设置。如何设置的步骤如下所示:
步骤一:启动“Internet 服务管理器”,如下图所示:
  
步骤二:展开左窗口的“默认Web站点”,并在其所展开的目录中选中我们想对其进行加密的目录(如:guestbook7),然后单击鼠标右键,我们选取弹出菜单的“属性”选项。这时会出现“guestbook7属性”的界面,如下图所示:

步骤三:接下来我们按下“guestbook7属性”对话框中“匿名访问及验证控件”域中的“编辑”按钮。这时将进入另一界面:“验证方法”对话框,如下图所示:
 
步骤四:在“验证方法”对话框中,我们将“允许匿名访问”选项取消,然后选取“基本验证(密码用明文送出)”选项。最后按“确定”退出即可。 
  在完成了对目录的安全设置之后,为了令上网者只有在输入用户名称和密码后方可浏览放在该目录下的网页,我们当然还要利用“域用户管理器”设置用户的名称及密码啦。其具体的步骤如下所示: 
步骤一:通过选取“开始-->程序-->系统管理工具(公用)-->域用户管理器”,启动“域用户管理器”。界面如下图所示:
步步骤二:给域用户添加新用户,设置过程是:“用户-->新用户-->在‘新用户’窗口中为我们的新用户输入‘用户名及密码’等等,同时取消‘用户下次登录时须改变密码’选项。 
  至此,利用IIS服务器来给网页加密的设置过程可以说是全部完成了。这时假如你想访问安全目录下的网页,我们只须在出现的“输入网络密码”窗口中(见下图所示)输入我们刚刚为新用户所设置的“用户名及密码”即可进入含有安全设置的目录。 
 
  安装了IIS服务器的朋友算你们幸运,但没有安装IIS服务器的朋友也不用灰心,只要我们安装了PWS,即使不能像IIS的朋友那么轻松容易实现密码验证的功能,至少我们可以借助数据库和ASP程序,编写出可以同时适用于IIS和PWS的安全网页。
  因此为了让其余只安装了PWS服务器的朋友也能过把“网管”隐,在第二部分我将着重介绍用来验证密码的ASP程序(password.asp)。 
为了兑现我对大家的承诺,我们现在立即就将“借助数据库和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
%> 

返回列表 回复 发帖