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