直播中
管理部分共有12個asp文件,這些腳本的主要功能分別如下:
BannerAdminLogin.asp:管理功能的登錄頁面。默認(rèn)的用戶名稱是“ADMIN USER”,密碼是“PASSWORD”。
CheckBannerAdministrationPassword.asp:檢查使用管理功能的用戶的密碼。
NotLoggedIn.asp:“沒有登錄”提示頁面,如果在登錄之前訪問管理頁面,則顯示該頁面。
BannerAdministration.asp:這是管理功能的主界面,列出了所有的廣告,并提供兩個按鈕。這兩個按鈕分別用于新增廣告和新增廣告客戶。點擊廣告客戶名字可以編輯該廣告客戶,點擊廣告文本可以編輯該廣告。
Advertisement.asp:輸入新廣告的信息,或編輯當(dāng)前廣告信息,或調(diào)用DeleteAdvertisement.asp刪除當(dāng)前廣告。
Advertiser.asp:輸入新廣告客戶的信息,或編輯當(dāng)前廣告客戶信息,或調(diào)用
DeleteAdvertiser.asp刪除當(dāng)前廣告客戶。
AddAdvertisement.asp:新增廣告記錄,從Advertisement.asp表單獲取信息,存儲到數(shù)據(jù)庫。
AddAdvertiser.asp:新增廣告客戶記錄,從Advertiser.asp表單獲取信息,存儲到數(shù)據(jù)庫。
UpdateAdvertisement.asp:從Advertisement.asp表單獲取信息,更新數(shù)據(jù)庫中與當(dāng)前廣告具有相同AdvertisementID的記錄。
UpdateAdvertiser.asp:獲取Advertiser.asp表單信息,更新數(shù)據(jù)庫中與當(dāng)前廣告客戶具有相同AdvertiserID的記錄。
DeleteAdvertisement.asp:根據(jù)當(dāng)前選中廣告的AdvertisementID,刪除數(shù)據(jù)庫中的相應(yīng)記錄。注意:刪除并返回管理主界面后有時需要重新刷新。
DeleteAdvertiser.asp:根據(jù)當(dāng)前選中廣告客戶的AdvertiserID,刪除相應(yīng)的數(shù)據(jù)庫記錄。
【圖1】
完整代碼請從本文后面下載。假設(shè)所有文件均在inetpubScripts目錄下,則登錄管理功能的URL為:http://localhost/scripts/BannerAdminLogin.asp。所有其他功能均可從此開始訪問。
接下來我們介紹管理功能腳本中的一些關(guān)鍵問題。
㈠ 安全
大多數(shù)執(zhí)行管理功能的頁面受密碼保護,這些頁面在執(zhí)行其任務(wù)之前都會檢查一個SESSION變量以確認(rèn)用戶已經(jīng)成功地登錄。檢查代碼如下所示:
' 檢查用戶是否已經(jīng)登錄
If SESSION( "LoggedIn" ) <> true Then
Response.Redirect( "NotLoggedIn.asp" )
End If
這里所采用的安全機制較為簡單,更多的說明參見《在ASP應(yīng)用中驗證用戶身份》。
㈡ 列出所有的廣告
BannerAdministration.asp頁面啟動時會列出數(shù)據(jù)庫中的所有廣告記錄。這部分功能通過一個簡單的查詢和一個記錄集對象完成,如下所示:
'列出數(shù)據(jù)庫中的所有廣告
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
' 根據(jù)廣告客戶編號(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
系統(tǒng)假定數(shù)據(jù)庫db.mdb的ODBC DSN為BannerBuddy,因此在運行程序之前必需設(shè)置好這個DSN。有關(guān)數(shù)據(jù)庫連接和操作的更多說明,參見《ASP應(yīng)用中數(shù)據(jù)庫記錄的選取與過濾》。
在廣告清單中,單擊廣告客戶名字可以編輯該廣告客戶的信息,單擊“文本/圖形”欄中的文本可以編輯該廣告的信息,單擊圖片鏈接可以查看圖片。
㈢ 新增、修改廣告和廣告客戶
AddAdvertisement.asp和AddAdvertiser.asp這兩個腳本的任務(wù)是獲取提交給它們的表單數(shù)據(jù),創(chuàng)建廣告客戶或廣告數(shù)據(jù)庫記錄。下面的代碼用于新增廣告記錄,新增廣告客戶(AddAdvertiser.asp)的代碼也類似,此處略。
' 連接到數(shù)據(jù)庫,創(chuàng)建記錄集對象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
' 根據(jù)所選擇的廣告客戶名字,獲取其編號
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( nAdvertisementID ) + " )"
rs.Close
rs.Open strSql, cn
修改廣告、廣告客戶信息分別由UpdateAdvertiser.asp和UpdateAdvertiser.asp完成,這兩個腳本和AddAdvertisement.asp、AddAdvertiser.asp非常相似,只是把增加記錄操作改成了修改記錄。刪除廣告、廣告客戶的腳本很簡單(分別為DeleteAdvertisement.asp和DeleteAdvertiser.asp),此處略。