对于"删除"、"编辑"和"回复"的数据绑定很简单,主要是在链接的参数中传递当前留言的ID号,参考"QQ"的绑定方式,完成后的链接地址分别为:
"删除":delete.asp?id=<%=(rs.Fields.Item("ID").Value)%>
"编辑":edit.asp?id=<%=(rs.Fields.Item("ID").Value)%>
"回复":reply.asp?id=<%=(rs.Fields.Item("ID").Value)%>
需要注意的是,由于admin.asp页是由index.asp页另存来的,而index.asp页所建的记录集里没有选择到"ID"字段,所以在这里必须把"ID"字段选进来,方法:
1)在服务器行为面板中双击"Recordset(rs)",重新选择字段
2)也可以直接在源码中找到rs.Source = "SELECT Content, Date, Email, Homepage, ICON, IP, Name, QQ, RDate, Reply FROM main ORDER BY Date DESC" 这行,改为rs.Source = "SELECT ID, Content, Date, Email, Homepage, ICON, IP, Name, QQ, RDate, Reply FROM main ORDER BY Date DESC"
对于IP的相关绑定,完成后代码为:
来自:<%=ip(rs.Fields.Item("IP").Value)%>[IP:<%=(rs.Fields.Item("IP").Value)%>]
这里用到一个叫ip的Function过程来查询访客IP在数据库表address中对应的国家和城市,代码如下:
<%
Function ip(sip)
Dim iparr,iprs,country,city
IP为127.0.0.1时相当于192.168.0.1
If sip="127.0.0.1" then sip= "192.168.0.1"
‘以点"."为界切割字符串sip,如果sip为“192.168.0.1”,则切割后得到的数组iparr(0)="192",iparr(1)="168",iparr(2)="0",iparr(3)="1"
iparr=split(sip,".")
通过计算转换,使IP地址跟数据库中的数据联系起来
sip=cint(iparr(0))*256*256*256+cint(iparr(1))*256*256+cint(iparr(2))*256+cint(iparr(3))-1
连接数据库,查询数据库字段ip1和ip2满足关系ip1<=sip<=ip2的记录
Set iprs = Server.CreateObject("ADODB.Recordset")
iprs.ActiveConnection = MM_conn_STRING
iprs.Source = "SELECT Top 1 city, country FROM address WHERE ip1 <=" & sip & " and " & sip & "<=ip2"
iprs.CursorType = 0
iprs.CursorLocation = 2
iprs.LockType = 1
iprs.Open()
判断数据库中有无记录即无相应IP地址的信息时的处理
If iprs.bof and iprs.eof then
country="未知地区"
city=""
Else
country=iprs.Fields.Item("country").Value
city=iprs.Fields.Item("city").Value
End If
ip=country&city
iprs.Close()
Set iprs = Nothing
End Function
%>
有管理页,当然就有登陆页,只有验证通过后才能进入到管理页进行管理。还是用老方法,随便用一个之前做好的页面(比如insert.asp)另存为login.asp,然后删除有服务器行为和一些不必要的表格:
光标定位到第三行的单元格,然后通过“Forms"工具组的按钮和表格完成如下表单的制作:
"用户"输入框代码:
"密码"输入框代码:
表单制作完成后应用服务器行为面板上的"Log In User"命令:
在弹出的"Log in User"对话框里设置如下:
保存后在IE里测试,不过别忘了先在数据库中添加管理员帐号:这样只有当输入用户名admin和密码admin后才跳转到admin.asp页,否则一直在login.asp页,不过,现在直接输入admin.asp看看,是不是不登陆也可以直接进入管理页?这就对了,因为我们没有对admin.asp添加页面保护,重新打开admin.asp,在服务器行为面板上给页面应用"Restrict Access To Page"命令:
有登陆当然就有退出登陆,所以选中admin.asp里的"管理"修改为"退出",并应用服务器行为"Log Out User"
参照图70的做法,另存出一页delete.asp,并修改如下:再单击"HTML"工具组中的"Refresh"项(图80),弹出"Refresh"对话框,设置如下:
点击服务器行为面板上的"Command"命令,在弹出的对话中设置如上:
参照75、76的方法,给delete.asp页也添加页面保护