< % 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 < > "" %>