二、管理功能
管理部分共有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),此处略。
管理部分共有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),此处略。