為了兌現我對大家的承諾,我們現在立即就將“借助數據庫和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
%>