文件大小:
軟件介紹
三、顯示廣告
這部分程序主要有如下四個目的:第一,參考各個廣告的顯示等級,隨機選擇本次顯示的廣告;第二,更新數(shù)據(jù)庫中該廣告的顯示次數(shù);第三,輸出標(biāo)題廣告的HTML代碼;第四,在數(shù)據(jù)庫歷史表中保存顯示和點擊歷史紀錄。
實現(xiàn)上述功能的腳本主要有兩個:
ShowBanner.asp:確定本次調(diào)用要顯示的廣告,更新顯示次數(shù)記錄,生成標(biāo)題廣告的HTML代碼。
Redirect.asp:重定向頁面。ShowBanner.asp生成的廣告HTML代碼將調(diào)用該腳本,由該腳本記錄點擊歷史數(shù)據(jù)、重定向到廣告客戶指定的頁面。
本文下載包中的ShowBanner.asp同時也是一個廣告顯示示例頁面,每次刷新該頁面可以顯示出不同的廣告。下面我們按照ShowBanner.asp的執(zhí)行過程,介紹其中的關(guān)鍵步驟。
㈠ 計算顯示等級總和
本系統(tǒng)采用的廣告選擇算法是:首先計算出當(dāng)前所有可用廣告的顯示等級總和,然后根據(jù)這個和值生成一個隨機數(shù),再根據(jù)這個隨機數(shù)來確定本次顯示的廣告。下面的代碼用于計算可用廣告的顯示等級總和:
nTotalWeight = 0
strSql = "SELECT SUM( Weight ) As SumWeight FROM " + _
"Advertisement WHERE Status=1"
rs.Open strSql, cn
If not rs.EOF and not rs.BOF Then
nTotalWeight = rs.Fields( "SumWeight" )
nTotalWeight有可能為空值
If IsNull( nTotalWeight ) Then
nTotalWeight = 1
End If
End If
在計算出nTotalWeight之后,我們可以根據(jù)該值生成一個隨機數(shù),如下所示:
Randomize
nRandomNumber = Int( Rnd * nTotalWeight ) + 1
程序?qū)臄?shù)據(jù)庫讀取可用廣告記錄(參見下面的代碼),累計已讀取記錄的weight總和,當(dāng)這個新的總和超過這里生成的隨機數(shù)時,就將當(dāng)前記錄作為本次顯示的廣告。
㈡ 分析可用廣告記錄
接下來的任務(wù)是執(zhí)行一個查詢,提取所有可用廣告記錄。如前所述,在遍歷這些可用廣告記錄時,記錄已讀取記錄的weight值總和nWeightCount ,當(dāng)nWeightCount 等于或大于前面生成的隨機數(shù)nRandomNumber時,程序就認為找到了本次要顯示的廣告。具體如下:
strSql = "SELECT * FROM Advertisement WHERE Status=1"
rs.Close
rs.Open strSql, cn
bDone = false
已讀取記錄的Weight值總和
nWeightCount = 0
清除變量
strImageURL = ""
strAltText = ""
strLink = ""
nImageWidth = 0
nImageHeight = 0
nWeight = 0
nAdID = 0
nAdvertiserID = 0
nViewLimit = 0
nImPRessions = 0
While not rs.EOF and not rs.BOF and not bDone
將數(shù)據(jù)庫值賦給變量
這種算法不利于效率,但簡化了控制結(jié)構(gòu)
strImageURL = rs.Fields( "ImageURL" )
strAltText = rs.Fields( "AltText" )
strLink = rs.Fields( "Link" )
nImageWidth = rs.Fields( "ImageWidth" )
nImageHeight = rs.Fields( "ImageHeight" )
nWeight = rs.Fields( "Weight" )
nAdID = rs.Fields( "AdID" )
nAdvertiserID = rs.Fields( "AdvertiserID" )
nViewLimit = rs.Fields( "ViewLimit" )
nImpressions = rs.Fields( "Impressions" )
nWeightCount = nWeightCount + nWeight
rs.MoveNext
nWeightCount是否等于或大于隨機變量值
If nWeightCount >= nRandomNumber or rs.EOF Then
bDone= true
End If
Wend
㈢ 更新當(dāng)前廣告的顯示次數(shù)
在確定本次要顯示的廣告之后,程序就可以更新該廣告記錄的Impressions字段。如果新的Impressions值超過了顯示次數(shù)限制(nViewLimit),還必需設(shè)置Status字段為0(即本廣告不可再顯示)。實現(xiàn)代碼如下:
nStatus = 1
nImpressions = nImpressions + 1
If nImpressions >= nViewLimit Then
nStatus = 0
End If
strSql = "UPDATE Advertisement Set Status=" + _
CStr( nStatus ) + ", Impressions=" + _
CStr( nImpressions ) + " WHERE AdID=" + _
CStr( nAdID )
rs.Close
rs.Open strSql, cn
㈣ 生成HTML代碼
在完成上述準備工作之后,接下來就可以輸出顯示廣告的HTML代碼。所輸出的HTML代碼可以分成如下幾個部分:
重定向頁面 --> 目標(biāo)URL --> 其他參數(shù) --> 圖片標(biāo)記
為什么不是直接鏈接到廣告客戶指定的URL呢?這是因此,雖然這種方法更簡單,但我們希望能夠記錄廣告的點擊數(shù)量,在重定向頁面中我們就可以更新該廣告的ClickThroughs字段值。
在顯示廣告的HTML代碼中,重定向頁面本文假定為Redirect.asp,目標(biāo)URL來自數(shù)據(jù)庫,其他參數(shù)主要是廣告編號、廣告客戶編號等,Redirect.asp利用這些參數(shù)記錄點擊歷史紀錄。具體實現(xiàn)如下:
strHtmlCode = _
"<a href=Redirect.asp?" + _
"Link=" + strLink + _
"&AdvertisementID=" + CStr( nAdID ) + _
"&AdvertiserID=" + CStr( nAdvertiserID ) + Chr( 34 ) + _
" target=newFrame><" + Chr( 13 ) + Chr( 10 ) + _
"></A>" + Chr( 13 ) + Chr( 10 )
這里的strHtmlCode即為顯示廣告的HTML代碼。
㈤ 記錄其他信息
為了給廣告客戶提供更多的信息,同時也為了便于進一步分析,除了記錄顯示次數(shù)之外,程序還在數(shù)據(jù)庫表中記錄其他一些信息(瀏覽本次廣告時,瀏覽者所在的ip地址以及瀏覽時間、廣告編號、廣告客戶編號),如下所示:
strSql = "INSERT INTO BannerHistory " + _
"(AdvertiserID, AdID, IPAddress, Type) Values (" + _
CStr( nAdvertiserID ) + ", " + _
CStr( nAdID ) + ", " + _
Request.ServerVariables( "REMOTE_HOST" ) + _
", 1)"
rs.Open strSql, cn
瀏覽的日期時間值在access數(shù)據(jù)庫內(nèi)設(shè)置,即設(shè)置字段默認值為Now()。
㈥ 重定向頁面
本文提供一個簡單的重定向頁面Redirect.asp,其功能是記錄廣告點擊數(shù)量,然后生成歷史表BannerHistory中的記錄,最后重定向到目標(biāo)URL,如下所示:
連接數(shù)據(jù)庫,創(chuàng)建記錄集對象rs,略...
增加廣告的點擊計數(shù),如點擊計數(shù)超過限制值,
則設(shè)置Status為0
strSql = "UPDATE Advertisement " + _
"Set ClickThroughs=ClickThroughs+1, " + _
"status=iif(ClickThroughs>=ClicksLimit,0,1) " + _
" WHERE AdID=" + Request.QueryString( "AdvertisementID" )
rs.Open strSql, cn
生成廣告點擊歷史紀錄
strSql = "INSERT INTO BannerHistory " + _
"(AdvertiserID, AdID, IPAddress, Type) Values (" + _
Request.QueryString( "AdvertiserID" ) + ", " + _
Request.QueryString( "AdvertisementID" ) + ", " + _
Request.ServerVariables( "REMOTE_HOST" ) + ", 2)"
rs.Open strSql, cn
重定向到廣告客戶指定的頁面
Response.Redirect( Request.QueryString( "Link" ) )
Next Steps
版權(quán)聲明:
1 本站所有資源(含游戲)均是軟件作者、開發(fā)商投稿,任何涉及商業(yè)盈利目的均不得使用,否則產(chǎn)生的一切后果將由您自己承擔(dān)!
2 本站將不對任何資源負法律責(zé)任,所有資源請在下載后24小時內(nèi)刪除。
3 若有關(guān)在線投稿、無法下載等問題,請與本站客服人員聯(lián)系。
4 如侵犯了您的版權(quán)、商標(biāo)等,請立刻聯(lián)系我們并具體說明情況后,本站將盡快處理刪除,聯(lián)系QQ:2499894784
- 千億體育手機版本v2.0.1 安卓版
- tplink物聯(lián)電腦版(原tplink安防) v2.12.17.
- Sandboxie Plus v1.9.8 / v5.64.8 開源電腦
- 字魂100號方方先鋒體字體包免費版
- 奧維互動地圖奧維地圖PC破解版VIP V9.0.6
- 蘭博對戰(zhàn)平臺 V1.38.6 官方最新版 / 蘭博玩
- reWASD(Xbox One手柄映射工具) V6.0.1.5190
- mtool修改器 V2023.11 官方最新版 / mtool
- 115轉(zhuǎn)存助手ui優(yōu)化版腳本 V3.9.1 綠色免費
- iSecure Center電腦客戶端 V1.5.0 官方版
點擊加載更多評論>>