• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > ASP.NET MVC 3实现访问统计系统

ASP.NET MVC 3实现访问统计系统

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了asp net mvc,asp net mvc 4,asp net mvc 5,精通asp.net mvc 5,精通asp.net mvc 4等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

运营网站,我们经常需要分析用户的行为、用户的习惯,用户看重网站的哪一部分,哪一部分是对用户有用的之类的信息,这些信息从哪里来,这时我们就需要用到访问统计系统了。 网上已经有很多的统计系统,如站长统计、百度统计、谷歌分析之类的,别人的东西始终是别人的,为什么我们不自己实现统计的功能呢,而且自己写的可以实现一些特殊的功能,如登录,下单行为,能够更好的融合自己的系统!

下面我们就用ASP.NET MVC 3来实现一个访问统计系统!首先,使用程序生成一段js代码,包括读写Cookie,及写入一个唯一值到Cookie中,用来判断独立访客者,再写入访问次数及上一个访问页面ID值;然后就是获取客户端时间,分辨率之类的。

string guid = Guid.NewGuid().ToString(); 
#region 生成js 
html.Append("function WriteCookie(cookieName, cookieValue, expiry) {"); //js写cookie 
html.Append(" var expDate = new Date();"); 
html.Append(" if (expiry) {"); 
html.Append(" expDate.setTime(expDate.getTime() + expiry);"); 
html.Append(" document.cookie = cookieName + \"=\" + escape(cookieValue) + \"; path=/;expires=\" + expDate.toGMTString();"); 
html.Append(" }"); 
html.Append(" else {"); 
html.Append(" document.cookie = cookieName + \"=\" + escape(cookieValue) + \"; path=/;\""); 
html.Append(" }"); 
html.Append("}"); 
html.Append("function ReadCookie(name) {"); //js读取cookie 
html.Append(" var cookieValue = \"\";"); 
html.Append(" var search = name + \"=\";"); 
 html.Append(" if (document.cookie.length >0) {"); 
html.Append(" offset = document.cookie.indexOf(search);"); 
html.Append(" if (offset != -1) {"); 
html.Append(" offset += search.length;"); 
html.Append(" end = document.cookie.indexOf(\";\", offset);"); 
html.Append(" if (end == -1)"); 
html.Append(" end = document.cookie.length;"); 
html.Append(" cookieValue = unescape(document.cookie.substring(offset, end))"); 
html.Append(" }"); 
html.Append(" }"); 
html.Append(" return cookieValue;"); 
html.Append("}"); 
html.Append("DateFormatString = function(datetime, format) {"); 
html.Append(" var year = datetime.getFullYear();"); 
html.Append(" var month = datetime.getMonth()+1;"); 
html.Append(" var date = datetime.getDate();"); 
html.Append(" var hour = datetime.getHours();"); 
html.Append(" var minutes = datetime.getMinutes();"); 
html.Append(" var second = datetime.getSeconds();"); 
html.Append(" format = format.replace(/YY/g, year).replace(/MM/g, month).replace(/DD/g, date).replace(/hh/g, hour).replace(/mm/g, minutes).replace(/ss/g, second);"); 
html.Append(" return format;"); 
html.AppendLine("}"); 
html.Append("var cookieEnabled = (navigator.cookieEnabled) ? true : false;"); //判断浏览器是否支持cookie 
html.Append("if (typeof navigator.cookieEnabled == \"undefined\" &&!cookieEnabled) {"); 
html.Append(" document.cookie = \"testcookie\";"); 
html.Append(" cookieEnabled = (document.cookie == \"testcookie\") ? true : false;"); 
html.Append(" document.cookie = \"\";"); 
html.Append("}"); 
html.Append("var firstshow;"); 
html.Append("var visittotal;"); 
 html.Append("var isLogin;"); 
html.Append("var loginName;"); 
html.Append("if (cookieEnabled == true) {"); 
html.Append(" var HBCountShowCookie = ReadCookie(\"HBCountShowCookie\");"); //访客浏览器唯一ID 
html.Append(" var HBCountVisitTotalCookie = ReadCookie(\"HBCountVisitTotalCookie\");"); //访客浏览次数 
html.Append(" var HBClientIDCookie = ReadCookie(\"HBClientIDCookie\");"); //访客上一个点击页面ID 
html.Append(" var HBLoginNameCookie = ReadCookie(\"HBLoginNameCookie\");"); //记录登录的用户名 
html.Append(" if (HBCountShowCookie == \"\") {"); 
html.Append(" sparetime = 1000 * 60 * 60 * 24 * 3650;"); //有效期为一年 
html.Append(" WriteCookie('HBCountShowCookie', \"" + guid + "\", sparetime);"); 
html.Append(" HBCountShowCookie = ReadCookie(\"HBCountShowCookie\");"); 
html.Append(" firstshow = 1;"); 
html.Append(" }"); 
html.Append(" else {"); 
html.Append(" firstshow = 0;"); 
html.Append(" }"); 
html.Append(" if (HBCountVisitTotalCookie == \"\") {"); //游客统计 
html.Append(" sparetime = 1000 * 60 * 60 * 24 * 3650;"); 
html.Append(" WriteCookie('HBCountVisitTotalCookie', 1, sparetime);"); 
html.Append(" visittotal = 1;"); 
html.Append(" }"); 
html.Append(" else {"); 
html.Append(" if (firstshow == 1) {"); 
html.Append(" visittotal = parseInt(HBCountVisitTotalCookie) + 1;"); 
html.Append(" sparetime = 1000 * 60 * 60 * 24 * 3650;"); 
html.Append(" WriteCookie('HBCountVisitTotalCookie', visittotal, sparetime);"); 
html.Append(" }"); 
html.Append(" else {"); 
html.Append(" visittotal = parseInt(HBCountVisitTotalCookie);"); 
html.Append(" }"); 
html.Append(" }"); 
html.Append(" try {"); 
html.Append(" if (HBStat != undefined || HBStat.isLogin != undefined || HBStat.loginName != undefined) {"); //此为登录用户统计 
html.Append(" if (HBStat.isLogin == 1 &&HBStat.loginName != \"\") {"); 
html.Append(" sparetime = 1000 * 60 * 60 * 24 * 120;"); 
html.Append(" WriteCookie('HBLoginNameCookie', HBStat.loginName, sparetime);"); 
html.Append(" HBLoginNameCookie = ReadCookie(\"HBLoginNameCookie\");"); 
html.Append(" }"); 
html.Append(" isLogin=HBStat.isLogin;"); 
html.Append(" }"); 
html.Append(" else{isLogin=0;}"); 
html.Append(" }"); 
html.Append(" catch (e) { isLogin=0; }"); 
html.Append(" loginName=HBLoginNameCookie;"); 
html.Append("} else {"); //不支持cookie 
html.Append(" firstshow = 0;"); 
html.Append(" visittotal = 1;"); 
 html.Append(" var HBCountShowCookie = \"\";"); 
html.Append(" isLogin=0;"); 
html.Append(" loginName=\"\";"); 
html.Append("}"); 
html.Append("var ly = escape(document.referrer);"); 
html.Append("var currweb = escape(location.href);"); 
html.Append("var d = new Date();"); 
html.Append("var currdate=DateFormatString(d,'YY-MM-DD hh:mm:ss');"); 
html.Append("var screenwidth=screen.width;"); 
html.Append("var screenheight=screen.height;"); 
html.Append("var screencolordepth=screen.colorDepth;"); 
html.Append("document.write('<script src=\"" + websiteUrl + "CountGet/?SiteID=" + SiteID + "&assort=" + assort + "&isLogin='+isLogin+'&loginName='+loginName+'&FirstShow='+firstshow+'&VisitTotal='+visittotal+'&Ly='+ly+'&CurrWeb='+currweb+'&cookid='+HBCountShowCookie+'&screenwidth=' + screenwidth + '&screenheight=' + screenheight + '&screencolordepth=' + screencolordepth + '&currdate='+currdate+'&ranstr=' + Math.random() + '\"></script>');"); 
#endregion 
</div>

生成之后再去执行下一个Action,用来写入一些统计数据,如客户端IP,浏览器信息,访问页面来源,当前页、访问时间、离开时间等!根据上一个访问页面地址、当前地址及上一个访问页面ID来判断是否是刷新操作还是新的访问页面,如果是刷新操作则写入刷新时间,否则写入上一个页面的离开时间,由于js的跨域问题,

if (assort.Equals(0)) 
{ 
ly = Request.QueryString["Ly"]; //获取来源URL 
currWeb = Request.QueryString["CurrWeb"]; //获取当前URL 
} 
else 
{ 
ly = Request.ServerVariables["Http_Referer"]; 
currWeb = ly; 
} 
string firstShow = Request.QueryString["FirstShow"]; //是否第一次访问 
string visitTotal = Request.QueryString["VisitTotal"]; //获取浏览次数 
string ip = Helper.Utils.ClientIP(); //获取客户端IP地址 
string strAgent = Request.ServerVariables["HTTP_USER_AGENT"]; 
bool isAlexa = false; 
if (strAgent.IndexOf("alexa") >-1) //判断是否安装alexa工具栏 
isAlexa = true; 
string browerName = Request.Browser.Browser; //浏览器名称 
string browerVersion = Request.Browser.Version; //浏览器版本 
string os = Helper.Utils.GetClientOS(); //客户端操作系统 
string langage = Helper.Utils.GetLangage(); //客户端语言 
string spider = Helper.Utils.GetSpiderBot(); //搜索引擎爬虫信息 
bool isSpider = false; 
if (!string.IsNullOrEmpty(spider)) 
isSpider = true; 
HttpContext.Application.Lock(); 
ClickDataAccess clientBasic = new ClickDataAccess(); 
 //刷新操作 需要根据上一个地址和当前地址 来判断 
if (HttpContext.Application["HBCurrWeb_" + SiteID] != null 
&&HttpContext.Applic



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解ASP.NET MVC 常用扩展点:过滤器、模型绑定
  • ASP.NET MVC从视图传参到控制器的几种形式
  • ASP.NET MVC 4 中的JSON数据交互的方法
  • ASP.NET MVC制作404跳转实例(非302和200)
  • 详解ASP.NET MVC 利用Razor引擎生成静态页
  • 详解ASP.NET MVC 解析模板生成静态页(RazorEngine)
  • ASP.NET MVC4 利用uploadify.js多文件上传
  • ASP.NET mvc4中的过滤器的使用
  • Asp.net MVC下使用Bundle合并、压缩js与css文件详解
  • 详解Asp.Net MVC——控制器与动作(Controller And Action)

相关文章

  • 2017-05-11asp.net textbox javascript实现enter与ctrl+enter互换 文本框发送消息与换行(类似于QQ)
  • 2017-05-11获取DataRow[]的值示例
  • 2017-05-11C#使用正则表达式实例
  • 2017-05-11通过RadioButton对DataList控件进行单选实例说明
  • 2017-05-11ASP.NET 字符串截取
  • 2017-05-11asp.net 获取某个时间段的星期并以表格形式排列出来
  • 2017-05-11有关于JSON的一些资料
  • 2017-05-11XslTransform.Transform将结果输出到字符串里的方法
  • 2017-05-11asp.net javascript 文件无刷新上传实例代码第1/2页
  • 2017-05-11asp.net 独立Discuz头像编辑模块分离打包

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • VS2010制作第一个简单网站
    • ASP.NET中MVC传递数据的几种形式总结
    • .net前台调用后台函数的简单实例
    • asp.net(vb)实现金额转换成大写的函数
    • VS2010/VS2013项目创建 ADO.NET连接mysql/sql server详细步骤
    • .NET性能调优之一:ANTS Performance Profiler的使用介绍
    • asp.net(c#)ref,out ,params的区别
    • VS Code 1.26 发布 有你想要的新特性?
    • asp.net中控制反转的理解(文字+代码)
    • MVC+EasyUI+三层新闻网站建立 主页布局的方法(五)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有