国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

(轉(zhuǎn))做自己網(wǎng)站的訪問(wèn)記錄系統(tǒng),用于推廣統(tǒng)計(jì)

2019-11-17 02:54:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

(轉(zhuǎn))做自己網(wǎng)站的訪問(wèn)記錄系統(tǒng),用于推廣統(tǒng)計(jì)

為了了解網(wǎng)站的訪問(wèn)情況,很多網(wǎng)站用了第三方的統(tǒng)計(jì),比如google統(tǒng)計(jì),百度統(tǒng)計(jì),51.la,CNZZ等,但是統(tǒng)計(jì)的準(zhǔn)確性不能而之,有的網(wǎng)站干脆放多個(gè)第三方的統(tǒng)計(jì),以便做個(gè)比較,得到更準(zhǔn)確的結(jié)果。

根據(jù)筆者對(duì)第三方統(tǒng)計(jì)的使用經(jīng)驗(yàn),第一:第三方統(tǒng)計(jì)有一定的水分存在,第二:因?yàn)榫哂型ㄓ眯?,并不能得到個(gè)性化的統(tǒng)計(jì)結(jié)果。第三:無(wú)法確定某個(gè)推廣源的統(tǒng)計(jì)信息。因?yàn)檫@種問(wèn)題的存在,公司有新的需要,便開(kāi)發(fā)了一個(gè)簡(jiǎn)單的推廣訪問(wèn)記錄功能。

說(shuō)起來(lái)并不復(fù)雜,只要用Ajax方法在后臺(tái)添加訪問(wèn)記錄即可,系統(tǒng)并沒(méi)有根據(jù)Cookie來(lái)做跟蹤記錄,只是根據(jù)ip來(lái),所以統(tǒng)計(jì)結(jié)果上可能有點(diǎn)出入,會(huì)少統(tǒng)計(jì)些。如果要更真實(shí)的統(tǒng)計(jì)結(jié)果,還是根據(jù)cookie統(tǒng)計(jì)為好,好了,下面就來(lái)介紹這個(gè)功能的實(shí)現(xiàn)。

思路是這樣的,頁(yè)面中只有加入一個(gè)js文件,就能統(tǒng)計(jì)到該頁(yè)面的訪問(wèn)信息,如果運(yùn)用了模板功能,就只要在模板中加入此js即可,此js我們暫命名為visit.js,放在根目錄下,建議鏈接放在頁(yè)面的底部即可。js文件里通過(guò)xmlhttPRequest這個(gè)對(duì)象把訪問(wèn)記錄信息添加到數(shù)據(jù)庫(kù)Visit表中,表設(shè)計(jì)的字段如下:

下面來(lái)介紹js的實(shí)現(xiàn),js方法需異步調(diào)用后臺(tái)方法,這個(gè)文件我們定義為AJAX.aspx,方法比較簡(jiǎn)單,就是獲取js文件當(dāng)中傳遞過(guò)來(lái)的參數(shù),然后添加到數(shù)據(jù)庫(kù)中去。

js中代碼如下:

  1 Visit.js  2   3 var req;  4 var visitID;  5 creatReq();  6   7 function creatReq() {  8   9     // 獲取當(dāng)前網(wǎng)站的更目錄,這比較重要,全局通用的保證 10     var path = getRootPath(); 11     // 后臺(tái)處理的文件地址,注意,必須把這個(gè)文件的前臺(tái)頁(yè)面大部分清空,只留下第一行 12     var url = path + "AJAX.aspx"; 13  14     if (window.xmlhttpRequest) { 15         req = new XMLHttpRequest; 16     } 17     else if (window.ActiveXObject) { 18         req = new ActiveXObject("Microsoft.XMLHttp"); 19     } 20     if (req) { 21         // 獲取當(dāng)前的網(wǎng)址 22         var link = window.location.href; 23         // 獲取上頁(yè)地址 24         var oldlink = document.referrer; 25         // 獲取當(dāng)前訪問(wèn)頁(yè)的標(biāo)題 26         var titleName = document.title; 27         // 屏幕分辨率 28         var screen = window.screen.width + "*" + window.screen.height;     29         // 異步請(qǐng)求發(fā)送 30         req.open("GET", url + "?id=" + escape(link) + "&oldlink=" + escape(oldlink) + "&title=" + escape(titleName) + "&sys=" + getSysInfo() + "&s=" + screen + "&b=" + GetBrowserType() + " " + GetBrowserVersion() + "&p=" + remote_ip_info.province + "&c=" + remote_ip_info.city + "&k=" + GetKeyWord(oldlink), true); 31         req.onreadystatechange = callback; // 制定回調(diào)函數(shù) 32         req.send(null);  33     } 34 } 35  36 // 獲取當(dāng)前網(wǎng)站的更目錄,這比較重要,全局通用的保證 37 function getRootPath() { 38     return window.location.protocol + "http://" + window.location.host + "/"; 39 } 40  41  42 // 獲取來(lái)自搜索引擎的關(guān)鍵詞 43 function GetKeyword(url) { 44     if (url.toString().indexOf("baidu") > 0) { 45         return request(url, "wd"); 46     } 47     else if (url.toString().indexOf("google") > 0) { 48         return request(url, "q"); 49     } 50     else if (url.toString().indexOf("sogou") > 0) { 51         return request(url, "query"); 52     } 53     else if (url.toString().indexOf("soso") > 0) { 54         return request(url, "w"); 55     } 56     else { 57         return ""; 58     } 59 } 60  61 // 獲取鏈接地址中某個(gè)參數(shù)的值 62 function request(url, paras) { 63     var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&"); 64     var paraObj = {} 65     for (i = 0; j = paraString[i]; i++) { 66         paraObj[j.substring(0, j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=") + 1, j.length); 67     } 68     var returnValue = paraObj[paras.toLowerCase()]; 69     if (typeof (returnValue) == "undefined") { 70         return ""; 71     } else { 72         return returnValue; 73     } 74 } 75  76  77 // 回調(diào)函數(shù),可以獲取添加后的訪問(wèn)ID,以便其他操作。 78 function callback() { 79     if (req.readyState == 4) { 80         if (req.status == 200) { 81             visitID = req.responseText.toString(); 82         } 83         else { 84              85         } 86     } 87     else { 88          89     } 90 } 91  92  93 // 獲取系統(tǒng)信息 94 function getSysInfo() { 95  96     var ua = navigator.userAgent.toLowerCase(); 97     isWin7 = ua.indexOf("nt 6.1") > -1 98     isVista = ua.indexOf("nt 6.0") > -1 99     isWin2003 = ua.indexOf("nt 5.2") > -1100     isWinXp = ua.indexOf("nt 5.1") > -1101     isWin2000 = ua.indexOf("nt 5.0") > -1102     isWindows = (ua.indexOf("windows") != -1 || ua.indexOf("win32") != -1)103     isMac = (ua.indexOf("macintosh") != -1 || ua.indexOf("mac os x") != -1)104     isAir = (ua.indexOf("adobeair") != -1)105     islinux = (ua.indexOf("linux") != -1)106     var broser = "";107     if (isWin7) {108         sys = "Windows 7";109     } else if (isVista) {110         sys = "Vista";111     } else if (isWinXp) {112         sys = "Windows xp";113     } else if (isWin2003) {114         sys = "Windows 2003";115     } else if (isWin2000) {116         sys = "Windows 2000";117     } else if (isWindows) {118         sys = "Windows";119     } else if (isMac) {120         sys = "Macintosh";121     } else if (isAir) {122         sys = "Adobeair";123     } else if (isLinux) {124         sys = "Linux";125     } else {126         sys = "Unknow";127     }128     return sys;129 }130 131 // 獲取瀏覽器類型132 function GetBrowserType() {133 134     var ua = navigator.userAgent.toLowerCase();135 136     if (ua == null) return "ie";137 138     else if (ua.indexOf('Chrome') != -1) return "chrome";139 140     else if (ua.indexOf('Opera') != -1) return "opera";141 142     else if (ua.indexOf('msie') != -1) return "ie";143 144     else if (ua.indexOf('safari') != -1) return "safari";145 146     else if (ua.indexOf('Firefox') != -1) return "firefox";147 148     else if (ua.indexOf('gecko') != -1) return "gecko";149 150     else return "ie";151 152 }153 154 // 獲取瀏覽器版本155 function GetBrowserVersion() {156 157     var ua = navigator.userAgent.toLowerCase();158 159     if (ua == null) return "null";160 161     else if (ua.indexOf('chrome') != -1) return ua.substring(ua.indexOf('chrome') + 7, ua.length).split(' ')[0];162 163     else if (ua.indexOf('opera') != -1) return ua.substring(ua.indexOf('version') + 8, ua.length);164 165     else if (ua.indexOf('msie') != -1) return ua.substring(ua.indexOf('msie') + 5, ua.length - 1).split(';')[0];166 167     else if (ua.indexOf('safari') != -1) return ua.substring(ua.indexOf('safari') + 7, ua.length);168 169     else if (ua.indexOf('gecko') != -1) return ua.substring(ua.indexOf('firefox') + 8, ua.length);170 171     else return "null";172 173 }
Visit.js

這里有一個(gè)特殊說(shuō)明,根據(jù)IP來(lái)獲取省份和城市信息,目前用的是新浪提供的js文件,沒(méi)有用網(wǎng)上流傳的IP庫(kù)信息,用新浪的這個(gè)js有時(shí)候獲取的是亂碼信息,這個(gè)問(wèn)題偶爾會(huì)出現(xiàn)。

這是新浪的地址引用:<script language='javascript' type='text/Javascript' src='http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js'></script>

下面說(shuō)后臺(tái),AJAX.aspx文件的前臺(tái)刪除大部分內(nèi)容,只留下第一行信息,后臺(tái)就是獲取js傳遞過(guò)來(lái)的信息,代碼如下:

AJAX.ASPX//放在Page_load里面的內(nèi)容            visitModel.VisitReferrer =   Request.QueryString["oldlink"].ToString() ;            visitModel.VisitReferrerType = int.Parse(GetVisitReferrerType(Request.QueryString["oldlink"].ToString()));            visitModel.VisitResolution = Request.QueryString["s"].ToString();            visitModel.VisitURL = Request.QueryString["id"].ToString();            visitModel.VisitTimeIn  = System.DateTime.Now;            visitModel.VisitIP = GetClientIP();            visitModel.VisitOS = Request.QueryString["sys"].ToString();            visitModel.VisitURLTitle = Request.QueryString["title"].ToString();            visitModel.VisitBrowserType = Request.QueryString["b"].ToString();            visitModel.VisitReferrerKeywords = ;            visitModel.VisitProvince = Request.QueryString["p"].ToString();            visitModel.VisitCity = Request.QueryString["c"].ToString();            // 獲取source后面的內(nèi)容]            string url = Request.QueryString["id"].ToString();            if (ur
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 抚宁县| 清丰县| 汶上县| 许昌市| 乐清市| 合肥市| 夏河县| 西贡区| 章丘市| 绥德县| 遵化市| 江源县| 高邮市| 上犹县| 乐昌市| 都昌县| 龙井市| 神木县| 固始县| 平遥县| 澄迈县| 洪雅县| 商南县| 蒙城县| 尤溪县| 长沙县| 洛川县| 方正县| 交城县| 瓦房店市| 阳春市| 互助| 蒙自县| 黄陵县| 滕州市| 白沙| 惠安县| 睢宁县| 五华县| 扎囊县| 梅河口市|