編程|連結|連結 反向連結(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 + "'&qu