欢迎光临
我们一直在努力

【编程】开源(OpenSource) – 反向链接(Referrers)系统-ASP教程,ASP应用

建站超值云服务器,限时71元/月

反向链接(referrers)系统可以很好的显示反向链接,目前很多站点上显示的最新来源(referer)统计都是用的是stephen的referrer统计系统,比如 booso 反向链接(referrers)统计系统,还有一个朱传伟的反向链接统计服务不知道是不是他自己实现的。

总之,网上提供这些反向链接(referrers)系统不是服务不好,就是定制性不好,所以,干脆,我烦了,自己花一天时间写了一个,并且公开源代码,基本上架构和功能都用了,但是还需要完善。

由于我没有支持 asp + access 的主机,所以无法为大家提供服务,希望有哪个同仁可以提供这个服务?或者 csdn 会提供这个服务给我?效果图如下:

基本架构:

采用 asp + access

用下列脚本在需要统计的页面增加反向链接记录

<script language=javascript src="/lib/refadd.js"></script>

用下列脚本在需要显示的页面增加反向链接显示

<script language=javascript src="/lib/refcnt.js"></script>

数据库:

数据库只需要一张表即可

id:整数

ip:字符串(255)

agent:字符串(255)

to:字符串(255)

name:字符串(255)

from:字符串(255)

date:日期时间

其中"name"字段的值是对 from 处理后的结果,比如 from="http://www.google.com/" 则name="google"

分析:

只需要简单一个 sql 查询即可:

select [name],count(*) from [referrer] group by [name] order by count(*) desc"

如果需要,还可以加上必要的条件,比如显示访问次数大于3次的记录:

select [name],count(*) from [referrer] group by [name] having count(*)>3 order by count(*) desc"

基本功能:

反向链接记录

反向链接显示(支持多种参数)

文件列表:

lib/refadd.asp

lib/refadd.js

lib/refcnt.asp

lib/refcnt.js

lib/refcon.asp

lib/images/percent.gif

dat/refdb.mdb

源代码:

由于 csdn 不提供文件下载功能,所以我还要找一个地方上传源代码,不知道哪里有,各位同仁请告知道

default.asp

<html>

<head>

<title>top 100 refering sites</title>

<meta http-equiv="content-type" content="text/html; charset=gb2312">

</head>

<body>

<script language=javascript src="/lib/refadd.js"></script>

<script language=javascript src="/lib/refcnt.js"></script>

</body>

</html>

refadd.asp

<%@language=javascript%>

<!–#include file="refcon.asp" –>

<%

function makeurl(sname,surl)

{

if(surl.indexof("http://") == 0)

{

surl = surl.substring(7);

}

return "<a href=\\\"http://" + surl + "\\\">" + sname+ "</a>";

}

function getname(sip, surl)

{

var sname = surl.tolowercase();

if(sname == "")

{

sname = makeurl("direct refrence", sip);

}

else

{

if(sname.indexof("http://") == 0)

{

sname = sname.substring(7);

}

if(sname.indexof("www.") == 0)

{

sname = sname.substring(4);

}

var nindex = sname.indexof("/");

if(nindex > 0)

{

sname = sname.substring(0, nindex);

}

if(sname.indexof(".") == 0)

{

sname = makeurl("not avalible", surl);

}

else

{

if(sname.indexof("google") == 0)

{

sname = makeurl("google", surl);

}

else

if(sname.indexof("yahoo") == 0)

{

sname = makeurl("yahoo", surl);

}

else

{

sname = makeurl(surl, surl);

}

}

}

return sname.substring(0,255);

}

var nct = parseint("" + request.querystring("ct")); if(isnan(nct)) nct = 8;

var sip = "" + request.servervariables("remote_addr"); if(sip == "undefined" || sip == "null") sip = "";

var sql = "select [id] from [referrer] where [ip]=" + sip + " and datediff(h,[date],now())<" + nct;

var ors = oconnect.execute(sql)

if(ors.eof && ors.bof)

{

var srf = "" + request.querystring("fr"); if(srf == "undefined" || srf == "null") srf = "";

var sto = "" + request.querystring("to"); if(sto == "undefined" || sto == "null") sto = "";

var sag = "" + request.servervariables("http_user_agent");

srf = srf.substring(0,255);

sto = sto.substring(0,255);

sag = sag.substring(0,255);

sql = "insert into [referrer]([date],[ip],[name],[from],[to],[agent])values("

+ "now()"

+ "," + sip + ""

+ "," + sqlstr(getname(sip,srf)) + ""

+ "," + sqlstr(srf) + ""

+ "," + sqlstr(sto) + ""

+ "," + sqlstr(sag) + ""

+ ")";

oconnect.execute(sql);

}

ors.close();ors = null;

oconnect.close();oconnect = null;

%>

refadd.js

function __refadd()

{

document.write("<sc");

document.write("ript language=javascript src=/lib/refadd.asp?ct=8&fr=" + document.referrer + "&to=" + document.location + ">");

document.write("</sc");

document.write("ript>");

}

__refadd();

refcnt.asp

<%@language=javascript%>

<!–#include file="refcon.asp" –>

document.write("<table width=\"100%\"><tr><td width=\"100%\" align=center valign=top height=520><font size=\"+2\"><strong>");

<%

var sto = "" + request.querystring("to"); if(sto == "undefined" || sto == "null") sto = ""; else sto = sto.substring(0,255);

var sql;

var ors;

var spr = " where [to]=" + sqlstr(sto) + "";

var sst = "" + request.querystring("st"); if(sst == "undefined" || sst == "null") sst = "";

if(sst != "")

{

spr += " and [date]>=#" + sst + "#";

var sed = "" + request.querystring("ed"); if(sed == "undefined" || sed == "null") sed = "";

if(sed != "")

{

spr += " and [date]<=#" + sqlstr(sed) + "#"

}

}

else

{

var nct = parseint("" + request.querystring("ct")); if(isnan(nct)) nct = 0;

if(nct > 0)

{

spr += " and datediff(h,[date],now())<" + nct;

}

}

sql = "select count(*) from [referrer]" + spr;

ors = oconnect.execute(sql)

if(!ors.eof)

{

ntotal = ors(0).value;

}

ors.close();

sql = "select [name],count(*) from [referrer]" + spr + " group by [name] order by count(*) desc";

ors = oconnect.execute(sql);

var n = 0;

var odata = new array();

while(!ors.eof)

{

odata[n] = new array();

odata[n][0] = ors(0).value;

odata[n][1] = ors(1).value;

n++;

ors.movenext();

}

ors.close();

if(n > 0)

{

disptop();

}

else

{

dispnone();

}

ors = null;

oconnect.close(); oconnect = null;

function write(shtml)

{

response.write("document.write(\"" + shtml + "\");\n");

}

function makeurl(sname,surl)

{

if(surl.indexof("http://") == 0)

{

surl = surl.substring(7);

}

return "<a href=\\\"http://" + surl + "\\\">" + sname + "</a>";

}

function dispnone()

{

write("<h1><br>there is no data in the range you requested</h1>");

}

function disptop()

{

// 显示

write("<br><font color=#0080ff face=georgia, times new roman, times, serif>top refering sites</font><br><br>");

write("<table>");

write("<tr><td align=center>&nbsp;rank&nbsp;</td>")

write("<td align=center>&nbsp;refering site&nbsp;</td>");

write("<td align=center>&nbsp;times&nbsp;</td>");

write("<td align=center>&nbsp;graph&nbsp;</td>")

write("<td align=center>&nbsp;percent&nbsp;</td></tr>");

for(i=0;i<n;i++)

{

if(odata[i][1] > 0)

{

write("<tr>");

write("<td align=center>" + (i + 1) + "</td>");

if(odata[i][0] == "not avalible")

{

write("<td>&nbsp;&nbsp;</td><td align=center>" + odata[i][1] + "</td>");

}

else

{

write("<td>&nbsp;" + odata[i][0] + "&nbsp;</td><td align=center>" + odata[i][1] + "</td>");

}

write("<td>");

// 百分比

var npct = odata[i][1]/ntotal*100;

write("<img src=/lib/images/percent.gif border=0 height=10px width=" + npct*2 + "px>");

write("</td>");

write("<td align=center>&nbsp;" + npct + "%&nbsp;</td>");

write("</tr>");

}

}

write("</table>");

}

%>

document.write("</strong></font></td><td> </td></tr></table>");

refcnt.js

function __refcnt()

{

document.write("<sc");

document.write("ript language=javascript src=/lib/refcnt.asp?to=" + document.location + ">");

document.write("</sc");

document.write("ript>");

}

__refcnt();

refcon.asp

<%

var oconnect = server.createobject("adodb.connection");

oconnect.open("provider=microsoft.jet.oledb.4.0;data source=e:\\osproject\\public\\referrer\\dat\\refdb.mdb;persist security info=false");

function sqlstr(ssql)

{

return ssql.replace("", "");

}

%>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 【编程】开源(OpenSource) – 反向链接(Referrers)系统-ASP教程,ASP应用
分享到: 更多 (0)