廣告 二、管理功能
管理部分共有12個asp檔案,這些指令碼的主要功能分別如下:
BannerAdminLogin.asp:管理功能的登入頁面。預設的使用者名稱稱是“ADMIN USER”,密碼是“PASSWORD”。
CheckBannerAdministrationPassword.asp:檢查使用管理功能的使用者的密碼。
NotLoggedIn.asp:“沒有登入”提示頁面,如果在登入之前訪問管理頁面,則顯示該頁面。
BannerAdministration.asp:這是管理功能的主介面,列出了所有的廣告,並提供兩個按鈕。這兩個按鈕分別用於新增廣告和新增廣告客戶。點擊廣告客戶名字可以編輯該廣告客戶,點擊廣告文本可以編輯該廣告。
Advertisement.asp:輸入新廣告的資訊,或編輯當前廣告資訊,或調用DeleteAdvertisement.asp刪除當前廣告。
Advertiser.asp:輸入新廣告客戶的資訊,或編輯當前廣告客戶資訊,或調用
DeleteAdvertiser.asp刪除當前廣告客戶。
AddAdvertisement.asp:新增廣告記錄,從Advertisement.asp表單擷取資訊,儲存到資料庫。
AddAdvertiser.asp:新增廣告客戶記錄,從Advertiser.asp表單擷取資訊,儲存到資料庫。
UpdateAdvertisement.asp:從Advertisement.asp表單擷取資訊,更新資料庫中與當前廣告具有相同AdvertisementID的記錄。
UpdateAdvertiser.asp:擷取Advertiser.asp表單資訊,更新資料庫中與當前廣告客戶具有相同AdvertiserID的記錄。
DeleteAdvertisement.asp:根據當前選中廣告的AdvertisementID,刪除資料庫中的相應記錄。注意:刪除並返回管理主介面後有時需要重新重新整理。
DeleteAdvertiser.asp:根據當前選中廣告客戶的AdvertiserID,刪除相應的資料庫記錄。
【圖1】
完整代碼請從本文後面下載。假設所有檔案均在inetpubScripts目錄下,則登入管理功能的URL為:http://localhost/scripts/BannerAdminLogin.asp。所有其他功能均可從此開始訪問。
接下來我們介紹管理功能指令碼中的一些關鍵問題。
㈠ 安全
大多數執行管理功能的頁面受密碼保護,這些頁面在執行其任務之前都會檢查一個SESSION變數以確認使用者已經成功地登入。檢查代碼如下所示:
' 檢查使用者是否已經登入
If SESSION( "LoggedIn" ) <> true Then
Response.Redirect( "NotLoggedIn.asp" )
End If
這裡所採用的安全機制較為簡單,更多的說明參見《在ASP應用中驗證使用者身份》。
㈡ 列出所有的廣告
BannerAdministration.asp頁面啟動時會列出資料庫中的所有廣告記錄。這部分功能通過一個簡單的查詢和一個記錄集對象完成,如下所示:
'列出資料庫中的所有廣告
Set cn = Server.CreateObject( "ADODB.Connection" )
cn.Open "BannerBuddy"
Set rs = Server.CreateObject( "ADODB.RECORDSET" )
Set rs2 = Server.CreateObject( "ADODB.RECORDSET" )
strSql = "SELECT * FROM Advertisement"
rs.Open strSql, cn
strCRLF = Chr( 13 ) + Chr( 10 )
While not rs.EOF and not rs.BOF
' 根據廣告客戶編碼(AdvertiserID)尋找客戶名稱
strSql = "SELECT Name From Advertiser where AdvertiserID = " + _
CStr( rs.Fields( "AdvertiserID" ) )
rs2.Open strSql, cn
strAdvertiser = ""
If not rs2.EOF and not rs2.BOF Then
strAdvertiser = rs2.Fields( "Name" )
End If
Response.Write( "</tr>" + strCRLF )
rs2.Close
rs.MoveNext
Wend
系統假定資料庫db.mdb的ODBC DSN為BannerBuddy,因此在運行程式之前必需設定好這個DSN。有關資料庫連接和操作的更多說明,參見《ASP應用中資料庫記錄的選取與過濾》。
在廣告清單中,單擊廣告客戶名字可以編輯該廣告客戶的資訊,單擊“文本/圖形”欄中的文本可以編輯該廣告的資訊,單擊圖片連結可以查看圖片。
㈢ 新增、修改廣告和廣告客戶
AddAdvertisement.asp和AddAdvertiser.asp這兩個指令碼的任務是擷取提交給它們的表單資料,建立廣告客戶或廣告資料庫記錄。下面的代碼用於新增廣告記錄,新增廣告客戶(AddAdvertiser.asp)的代碼也類似,此處略。
' 串連到資料庫,建立記錄集對象rs,略...
strStartDate = Request.Form( "StartMonth" ) + "/" + _
Request.Form( "StartDay" ) + "/" + _
Request.Form( "Startyear" )
strEndDate = Request.Form( "EndMonth" ) + "/" + _
Request.Form( "EndDay" ) + "/" + _
Request.Form( "Endyear" )
nStatus = 1
If UCase( Request.Form( "Status" ) ) = "INACTIVE" Then
nStatus = 0
End If
' 根據所選擇的廣告客戶名字,擷取其編號
nAdvertiserID = 1
strSql = "select AdvertiserID from Advertiser where Name = '" + _
Request.Form( "Advertiser" ) + "'"
rs.Open strSql, cn
If not rs.EOF and not rs.BOF Then
nAdvertiserID = rs.Fields( "AdvertiserID" )
If IsNull( nAdvertiserID ) Then
nAdvertiserID = 1
End If
End If
' 產生一個新的廣告編號
nAdvertisementID = 1
strSql = "select AdID=Max( AdID ) from Advertisement"
rs.Close
rs.Open strSql, cn
If not rs.EOF and not rs.BOF Then
nAdvertisementID = rs.Fields( "AdID" ) + 1
If IsNull( nAdvertisementID ) Then
nAdvertisementID = 1
End If
End If
' 插入新廣告記錄的SQL命令
strSql = "insert into Advertisement " + _
"( AdvertiserID, Status, ImageURL, " + _
"ImageWidth, ImageHeight, Link, " + _
"AltText, Weight, StartDate, EndDate, " + _
"ViewLimit, ClicksLimit, AdID ) Values ( "
strSql = strSql + CStr( nAdvertiserID ) + ", "
' 加上其他欄位值,略...
strSql = strSql + CStr( nAd