asp.net下判断用户什么时候离开,以什么方式离开

站点用户统计是每一个站点比有得功能,但是很少有人实现在线用户统计得绝对精确或者说是相对精确,基于Web得原理,服务器不会主动知道用户通过关闭浏览器离开站点,这时候只能依靠服务器端变量Session得过期来判断用户是否离开,但用户浏览器是可以知道自己何时关闭得,代码也非常简单

如下:

function body_onunload()

{

if(window.event.clientX<0)

{

alert('the broswer is closing...');

}

else

{

alert('the user is refreshing or navigating away...);

}

}

以上代码就会判断用户是关闭浏览器还是刷新或者导航到其他页面了!

---------------------------------------------------------------------------------------------------

下午的时候,用代码测试了一下,主要是利用上面的js函数,结合ajax技术,由于对ajax技术了解的不是很透彻,前后尝试了三次。

现将尝试结果与大家分享,大家也多给点意见

首先我尝试了在ajax方法中访问Application,企图用Application变量来记录在线人数。尝试代码:

[AjaxPro.AjaxMethod]

public int Logoff()

{

Application["onlineCount"]=Convert.ToInt32(Application["onlineCount"])-1;

return      Convert.ToInt32(Application["onlineCount"]);

}

尝试失败!估计是ajax不能访问应用程序的静态变量和Application变量。第一次使用AjaxPro不知道如何设置可以访问Session,以前使用的是ajax.dll,设置成可以读写Session,尝试结果可能发生改变!

第二种我尝试了用文本文件记录在线人数,仍然失败!

第三中,采用数据库!尝试成功。

代码如下:

[AjaxPro.AjaxMethod]

public int Logoff()

{

SqlConnection conn = new  SqlConnection("server=.;database=test; uid=sa;pwd=123");

SqlCommand cmd = new SqlCommand("update OnlineCount set num=num-1",conn);

try

{

conn.Open();

cmd.ExecuteNonQuery();

}

catch(Exception ex)

{

EventLog.WriteEntry(ex.Source,ex.Message);

}

finally

{

conn.Close();

}

cmd = new SqlCommand("select top 1 num from OnlineCount",conn);

try

{

conn.Open();

return Convert.ToInt32(cmd.ExecuteScalar());

}

catch(Exception ex)

{

EventLog.WriteEntry(ex.Source,ex.Message);

}

finally

{

conn.Close();

}

return 0;

}

前台页面缩

1    <script language="javascript">

2<!--

3       function leave()

4       {

5          alert(window.event.clientX);

6          if(window.event.clientX<0)

7          {

8            WebApplication3.WebForm1.Logoff().value;

9          }

10       }

11//-->

12        </script>

13    </HEAD>

14    <body onunload="leave()">

这样的话,在对安全行和及时性要求比较严格的情矿下,将一个页面设置为主页面,如果该页面关闭,表示用户已经退出。电子邮件系统就可以使用该方法。

(0)

相关推荐

  • asp.net下判断用户什么时候离开,以什么方式离开

    站点用户统计是每一个站点比有得功能,但是很少有人实现在线用户统计得绝对精确或者说是相对精确,基于Web得原理,服务器不会主动知道用户通过关闭浏览器离开站点,这时候只能依靠服务器端变量Session得过期来判断用户是否离开,但用户浏览器是可以知道自己何时关闭得,代码也非常简单 如下: function body_onunload() { if(window.event.clientX<0) { alert('the broswer is closing...'); } else { alert('

  • asp下通过HTTP_USER_AGENT判断用户是从手机上访问,还是电脑IE上访问

    通过HTTP_USER_AGENT判断用户是从手机上访问,还是电脑IE上访问. asp代码片段:主要使用了正则匹配手机环境,大家可以补充手机平台. 复制代码 代码如下: set regex = new regexp regex.ignorecase = true regex.global = true regex.pattern = "mini 9.5|vx1000|lge |m800|e860|u940|ux840|compal|wireless| mobi|ahong|lg380|lgku|

  • 如何判断用户是否非正常离开聊天室?

    如何判断用户是否非正常离开聊天室?total = application("AllPeople") ' 聊天总人数.    aryHuman = split(total,";")    for i = lbound(aryHuman) to ubound(aryHuman) - 1    if application("user" & i) = "online" then    if int(timer) - int(

  • 判断用户的在线状态 onbeforeunload事件

    获得用户登陆状态不用说了,判断离开的话就有一点问题了,如果说用户都是按照设计者的规定触发退出事件离开的话那就没什么难度了,但是用户的离开方式多种多样,怎么在用户非法离开的时候即时的判断离开呢?最常见的非法离开就是关闭浏览器了. 复制代码 代码如下: <BODY onbeforeunload="body_onUnload()"> <script> window.onbeforeunload = function() { if (window.event.clien

  • 使用vue-router beforEach实现判断用户登录跳转路由筛选功能

    在开发webApp的时候,考虑到用户体验,经常会把不需要调用个人数据的页面设置成游客可以访问,而当用户进入到一些需要个人数据的,例如购物车,个人中心,我的钱包等等,在进行登录的验证判断,如果判断已经登录,则显示页面,如果判断未登录,则直接跳转到登录页面提示用户登录,今天就来分享下如何使用vue-router的beforEach方法来实现这个需求. 实现 本篇文章默认您已经会使用 webpack 或者 vue-cli 来进行环境的搭建,并且具有一定的vue基础,如果您目前是一个新手,那么网上搜索一

  • asp.net5中的用户认证与授权(1)

    就在最近一段时间,微软又有大动作了,在IDE方面除了给我们发布了Viausl Studio 2013 社区版还发布了全新的Visual Studio 2015 Preview. asp.net5中,关于用户的认证和授权提供了非常丰富的功能,如果结合ef7的话,可以自动生成相关的数据库表,调用也很方便. 但是,要理解这么一大堆关于认证授权的类,或者想按照自己项目的特定要求对认证授权进行定制,确实很头疼.为了解决这个问题,需要从根本上理解认证和授权的机制,不过这不是个简单的事情,一些概念也比较抽象,

  • Asp.Mvc 2.0用户的编辑与删除实例讲解(5)

    这一节来给大家演示下怎么对用户信息进行修改和删除用户,主要包括以下内容 1.显示所有用户 2.编辑用户 3.删除用户 1.显示所有用户   我们把所有用户信息查询出来,以表格形式在页面上显示,效果图如下: 首先把所有用户信息显示在index页面上.找到index页面对应的controller,然后查找出所有用户信息,把查找出的用户集合放在viewdata里面  Controller代码: public ActionResult Index() { //查询出所有用户 DataSet ds = n

  • linux下判断文件和目录是否存在的方法(总结)

    1.前言 工作中涉及到文件系统,有时候需要判断文件和目录是否存在.我结合APUE第四章文件和目录,总结一下如何正确判断文件和目录是否存在,方便以后查询. 2.stat系列函数 stat函数用来返回与文件有关的结构信息.stat系列函数有三种情况,分别对应文件名称.文件描述符和符号链接文件.stat结构描述了文件的属性,主要包括文件的类型.文件大小等等.详细stat结构如下所示: struct stat { mode_t st_mode; // file type & mode(permissio

  • js中判断用户输入的值是否为空的简单实例

    在js中判断用户输入的值是否为空,这是大家用得非常多的. 这没有什么好写的. 而我却写了. 原因只是自以为是的认为我的这些代码写得不错, 供大家参考一下. 这是摘自的我一个项目的中的用户注册页面.对于大多数人来说,这都几乎是100%经历过的.贴代码吧,这些代码都是用js写的. 不难,很容易看懂. 看的时候,只要区别两个js类就行了.前台页面代码:reguser.aspx 复制代码 代码如下: <%@ Page language="c#" Codebehind="RegU

  • 百度地图PC端判断用户是否在配送范围内

    最近接了个项目,其中有项目需求是这样的: 在pc端设置商家的配送范围,用户在下单时,根据用户设置的配送地点判断是否在可配送范围内,并给用户相应的提示. 下面说下我的实现思路: 1.用百度地图在PC端设置配送范围,可拖拽选择 2.根据用户设置的配送地址判断是否在配送范围内 一.百度地图PC端获取范围 改动百度地图官网的demo,设置配送范围. 思路:获取多边形的顶点,以json的形式保存到数据库. 百度API关于多边形覆盖物: 构造函数: Polygon(points:Array<Point>[

随机推荐