一個基於ASP的標題廣告管理系統(二)

- 中國WEB開發者網絡 (http://www.webasp.net)
-- 技術教程 (http://www.webasp.net/article/)
--- 一個基於ASP的標題廣告管理系統(二) (http://www.webasp.net/article/1/345.htm)
-- 作者:未知
-- 發佈日期: 2003-04-14
   二、管理功能

   管理部分共有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( nAdvertisementID ) + " )"
 
 rs.Close
 rs.Open strSql, cn
   修改廣告、廣告客戶信息分別由UpdateAdvertiser.asp和UpdateAdvertiser.asp完成,這兩個腳本和AddAdvertisement.asp、AddAdvertiser.asp非常相似,只是把增加記錄操作改成了修改記錄。刪除廣告、廣告客戶的腳本很簡單(分別為DeleteAdvertisement.asp和DeleteAdvertiser.asp),此處略。

webasp.net