如果你拥有自己的网站,是不是经常同其它人交换友情链接?每次当你用手工的方法添加他人链接的时候,有没有想过拥有一套能自动登记网站信息并产生友情链接页面的自动友情链接系统?如果这两个问题的答案都是“Yes”,那么,请跟我来,你很快会得偿心愿的。
一个自动友情链接系统至少应该具备两个功能:一是能采集并存储网站信息;另一点就是能根据存储的信息自动产生Web页面。要实现这两个功能,仅仅用HTML语言显然是不够的,必须借助于其它方法,比如用CGI或ASP编程。
目前国外已有服务商提供现成的CGI程序,用来自动产生友情链接,这些程序当然可以满足上面两点基本要求,但它至少有两个缺点:一是速度慢,CGI程序本身效率就不很高,再加上还要访问国外站点,最终的速度就可想而知了。另一点就是缺乏灵活性,别人的CGI程序是死的,使用者基本上没有多少改变的余地,这样就无法创建富有个性的页面。
而使用ASP(Active Server Pages)技术则可以弥补上述不足。ASP代码不仅具有充分的灵活性,而且执行速度也比CGI程序要快,因此ASP是网站主人一个合适的选择。
一、用ASP实现自动友情链接简单的原理。
1、友情网站的信息收集
为了收集友情网站的各种信息(包括姓名、网站名称、地址等),我们只需使用标准HTML的Form技术即可。即在页面中放置一个Form,其中放置若干个文本框和一个“提交”按钮,文本框供用户输入信息,Form的Action属性设定为信息处理页面的名称,即asp文件的名称(下例中的autolink.asp),数据传输的方法Method设定为Post。
2、友情网站信息的保存
autolink.asp文件执行时,首先使用Request对象的form属性读取各个参数;然后用Server对象的CreateObject方法创建一个ADO(Active Data Object)对象,并根据数据库的类型、位置、名称等设置相应的DNS,再使用ADO对象的Open方法建立数据库连接;连接建立完成后,使用一条标准的SQL语句向数据库中添加一条记录(SQL语句中嵌入变量的写法请参照下面的代码)。这样就实现了保存信息的目的。
3、友情链接页面的生成
为了读取数据库的信息,首先要使用SQL语句创建一个记录集rs,然后用rs的Field属性读取每个字段内容,并根据字段的值生成标准的HTML语句。
二、实例
下面是一个具体的实例。
首先,我们需要建立一个数据库,用来存放所有友情网站的信息,本例我们用Access建立一个简单的数据库autolink.mdb,该数据库仅包含一个表autolink,表的结构如下:
字段名
数据类型
字段长度
必要字段否
字段描述
name
字符型
20
Yes
网站的名称
address
字符型
60
Yes
网站的地址
logoaddress
字符型
60
Yes
网站标识图标的地址
description
字符型
120
Yes
网站的简短介绍
接下来,我们需要创建两个页面:autolink.htm和autolink.asp。
autolink.htm是一个标准的HTML页面,用来收集其它网站的信息,其代码如下(为节约版面,代码中省去了所有的修饰语句和数据完整性检查语句):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>自动链接系统--请输入您的网站资料</title>
</head>
<form method="post" action="autolink.asp">
<p>网站名称:<input type="text" name="name" ></p>
<p>网站地址:<input type="text" name="address"></p>
<p>图标地址:<input type="text" name="logoaddress"></p>
<p>网站描述:<textarea rows="2" name="description"></textarea></p>
<p><input type="submit" value="填好了,提交" name="Submit"> </p>
</form>
</body>
</html>
以上代码建立了包含三个单行文本框、一个多行文本框和一个提交按钮的表单(Form),这个表单负责接收用户的输入(包括网站名称、地址、图标和描述),当用户按下“提交”按钮时,表单将用户输入的信息用Post方法传送给autolink.asp页面。由于是纯Html页面,因此我们可以非常轻松的使用诸如FrontPage 98之类的可视化工具产生这些代码。
autolink.asp页面的代码如下(同样省去了修饰语句):
<%@ Language=VBScript %>
<html>
<head>
<meta NAME="GENERATOR" Content="Microsoft FrontPage 3.0">
<title>我的友情链接</title>
</head>
<body>
<%
name=Request.form("name")
address=Request.form("address")
logoaddress=Request.form("logoaddress")
description=Request.form("description")
'建立数据库连接
set conn=server.CreateObject("adodb.connection")
myDSN="DRIVER={Microsoft Access Driver (*.mdb)};"
myDSN=myDSN & "dbq=" & server.MapPath("autolink")
Conn.Open myDSN
'增加一个记录
sqlstring="insert into autolink (name,address,logoaddress,description) values("
sqlstring=sqlstring & "'" & name & "','" & address & "','" & logoaddress & "','" & description & "')"
Conn.Execute sqlstring
'打开记录集
sqlstring="select * from autolink"
set rs=Conn.Execute(sqlstring)
%>
<table border="1" width="72%" cellpadding="2">
<tr>
<td width="27%">网站名称</td>
<td width="73%">网站图标和链接</td>
</tr>
<% do while not rs.eof%>
<tr>
<td width="27%"> <%=rs("name")%> </td>
<td width="73%">
<a href="<%=rs("address")%>">
<img src="<%=rs("logoaddress")%>" alt="<%=rs("description")%>"></a></td>
</tr>
<%
rs.movenext
loop
%>
</table>
'关闭连接
<%
set rs=nothing
conn.close
set conn=nothing
%>
</body>
</html>
将上面两个