為最終用戶提供的功能主要由一個HTML文件和兩個ASP文件提供,它們負責接受用戶的訂閱申請以及退出郵件列表申請。
用戶的個人信息在圖1所示的登記表單中輸入,其實現(xiàn)文件是homepage.htm。當用戶提交表單,系統(tǒng)對用戶輸入數(shù)據(jù)進行必要的驗證,然后把它們保存到數(shù)據(jù)庫并提示注冊成功信息。這部分功能可以在signbook.asp文件找到,下面的代碼用于將用戶輸入數(shù)據(jù)保存到數(shù)據(jù)庫:
' 如果用戶輸入數(shù)據(jù)驗證通過則將它保存到數(shù)據(jù)庫
if blnValid = True then
' 在數(shù)據(jù)庫中插入新記錄
strSQL_Insert = "INSERT INTO Guests ( Guest_Name, Guest_Email, " & _
" Mail_List, Guest_Comment )" & _
" VALUES ('" & strName & "', '" & strEmail & _
"', '" & blnMailList & "', '" & strComments & "');"
Set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open strDSNPath
On error resume next
oConn.Execute strSQL_Insert
oConn.Close
Set oConn = Nothing
' 記錄插入是否成功
if err.number < > 0 then
' 出現(xiàn)錯誤
strValid = ...數(shù)據(jù)庫操作錯誤提示信息,略...
else
'記錄插入成功
strValid = ...注冊成功提示信息,略...
end if 'err.number < > 0
else '用戶輸入數(shù)據(jù)錯誤
strValid = ...用戶輸入數(shù)據(jù)錯誤提示,略...
end if 'blnValid = True
這些代碼實現(xiàn)了面向最終用戶的第一個功能:將個人信息注冊到登記簿并將用戶加入到郵件列表。
每一個從郵件列表接收郵件的用戶可以在郵件的最后發(fā)現(xiàn)一個鏈接(類如http://www.mycompany.com/unsubscribe.asp),以及用戶ID和郵件帳號的提示。單擊這個鏈接可以訪問取消訂閱的unsubscribe.asp頁面,其界面如圖2所示。當用戶提供了正確的Email地址和ID號,unsubscribe.asp中的腳本修改該用戶注冊記錄的Mail_List標記,從而使得系統(tǒng)不再向該用戶發(fā)送郵件。下面是這部分功能的實現(xiàn)代碼:
【圖2 ASPMailingList_2.gif】
< %
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
iGuestID = Request.Form("txtID")
sGuestEmail = Request.Form("txtEmail")
if iGuestID < > "" and sGuestEmail < > "" then
'在數(shù)據(jù)庫中更新用戶記錄
strSQL_UnSubs = "UPDATE Guests SET Guests.Mail_List=" & 0 & _
" WHERE Guests.Guest_ID=" & iGuestID & _
" AND Guests.Guest_Email='" & sGuestEmail & "';"
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open strDSNPath
oConn.Execute strSQL_UnSubs, iUpdates
on error resume next
oConn.Close
Set oConn = Nothing
if err.number < > 0 then
sError = ...SQL語句執(zhí)行失敗提示信息, 略...
else
if iUpdates < > 0 then
sError = ...取消訂閱成功提示信息,略...
else
sError = ...不能找到數(shù)據(jù)庫記錄提示信息,略...
end if 'iUpdates < > 0
end if 'err.number < > 0
else
Response.Redirect("homepage.htm")
end if 'iGuestID < > ""
end if 'REQUEST_METHOD = "POST"
%>
執(zhí)行SQL命令時提供的iUpdates變量反映了該SQL語句所影響的記錄數(shù)。如果該值為0,即可假定用戶沒有正確地輸入ID或Email地址。上述代碼實現(xiàn)了面向用戶的第二個功能,接下來我們要實現(xiàn)的是登記簿的管理功能。