< %
strPW1 = Request.Form("txtPW")
if strPW1 < > "" then
Response.Cookies("PassWord") = strPW1
end if 'strPW1 < > ""
strPW2 = Request.Cookies("PassWord")
If strPW2 < > "123456" Then
Response.Redirect("secure.htm")
End if 'strPW2 < > "123456"
%>
一旦管理員的身分識別驗證通過,他們能夠通過Admin.asp執行的操作包括:
查看Guests表中的所有記錄
編輯或
刪除指定的記錄
向所有郵件清單中的使用者發送郵件
管理頁面admin.asp如圖4所示。顯示Guests表的記錄時先從資料庫提取這些記錄,然後使用一個For Each ... Next結構遍曆記錄集的欄位集合,提取欄位名字並設定表格的表頭。在這個頁面中我們不再顯示Guest_ID欄位,但每個使用者記錄的前面都加上了一個“刪除”和“編輯”功能的連結。使用者名稱字欄位Guest_Name與郵件欄位Guest_Email被轉換為mailto連結,單擊名字可以單獨向該使用者發送郵件。其它要格式化的欄位還包括是否發送郵件(Mail_List)以及使用者留言(Guest_Comment)。產生表頭的代碼為:
' 從資料庫選取記錄
strSQL_Select = "SELECT Guests.Guest_ID, Guests.Guest_Email, " & _
" Guests.Guest_Name, Guests.Mail_List, " & _
" Guests.Guest_Comment, Guests.Sign_Date " & _
" FROM Guests ORDER BY Guests.Guest_Name; "
Set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open strDSNPath
Set rsGbook = oConn.Execute(strSQL_Select)
if rsGbook.BOF = True and rsGbook.EOF = True then
...資料庫空提示,略...
else
rsGbook.MoveFirst
%>
< table BORDER="0" cellpadding="5" cellspacing="2" align="center">
< tr>
< % for each Head in rsGbook.Fields
if Head.Name = "Guest_ID" then %>
..."刪除"與"編輯"表頭,略...
< % else %>
< td VALIGN="middle" align="center">< font face=Arial size=2>
< % select case Head.Name
case "Guest_Name"
Response.Write "名 字"
case "Mail_List"
Response.Write "郵件清單"
case "Guest_Comment"
Response.Write "留 言"
end select
%>
< /font>< HR>< /td>
< % end if 'Head.Name = "Guest_ID"
next %>
< /tr>
為在表格的其餘位置顯示使用者註冊記錄,我們用兩個嵌套的迴圈遍曆所有記錄的所有欄位,即在一個Do While ...迴圈裡面嵌入一個For Each ... Next 迴圈。資料的格式化工作放在For Each ... Next迴圈內。其實現代碼類如:
< % Do While Not rsGbook.EOF %>
< tr>
< % For Each Field in rsGbook.Fields
if Field.Name = "Guest_ID" then %>
< td VALIGN="middle" ALIGN="center">
...刪除功能的連結,略...
< /td>
< td VALIGN="middle" ALIGN="center">
...編輯功能的連結,略...
< /td>
< % else %>
< td VALIGN="middle" align="center">
< % if isNull(Field) then
Response.Write " "
else
if Field.Name = "Guest_Name" then
Response.Write ...使用者名稱字的mailto連結,略...
elseif Field.Name = "Mail_List" then
...輸出"是"或"否",略...
elseif Field.Name = "Guest_Comment" then
...輸出使用者留言,略...
end if 'Field.Name
end if 'isNull(Field)%>
< /td>
< % end if 'Field.Name = "Guest_ID"
Next
rsGbook.MoveNext %>
< /tr>
< % loop %>
< /table>
< %
iGuestID = Request.Querystring("ID")
if iGuestID < > "" then
'從資料庫刪除由ID標識的記錄
strSQL_Delete = "DELETE FROM Guests " & _
" WHERE Guest_ID=" & iGuestID
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open strDSNPath
on error resume next
oConn.Execute strSQL_Delete
oConn.Close
Set oConn = Nothing
if err.number < > 0 then
Response.Redirect("admin.asp?Error_Del=True")
else
Response.Redirect("admin.asp?Error_Del=False")
end if
else
Response.Redirect("admin.asp")
end if 'iGuestID < > ""
%>