為了兌現我對大家的承諾,我們現在立即就將“藉助資料庫和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")都等於Null 字元串,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
%>