| 网站首页 | 硬件维修 | 应用学院 | 网络组建 | 网站制作 | 菜鸟黑客 | 编程之道 | 数码大全 | 娱乐休闲 | 软件下载 | 在线视频 | 请您留言 | 技术论坛 | 
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
  • HTML页面如何象asp一样接受参…

  • 如何实现iframe(嵌入式帧)的…

  • 如何制作浮动广告

  • 鼠标在文本上移动时层的显示…

  • 在线播放器代码大全

  • 使用Web标准建站第5天:head…

  • CSS语法手册(四)文本填充,…

  • CSS语法手册(三)文本填充,…

  • CSS在IE和Nascape的显示差别

  • javascript基础实例:如何…

  • Q
    您现在的位置: 我是IT人 >> 网站制作 >> ASP.NET >> 文章正文
    如何显示在线人数和所在位置         
    如何显示在线人数和所在位置
    作者:网络 文章来源:转载 点击数: 更新时间:2005-8-10
    [ 字体:缩小 正常 放大 | 双击自动滚屏 ]
    请选择合适的字体颜色:

    一、原理
    在.net中的global.asax中有Application_AuthenticateRequest事件和Application_BeginRequest事件是在每次访问aspx文件都会触发。但是Application_BeginRequest中不能对已经经过FROMS身份验证的身份ticket票进行识别。所以只能放到Application_AuthenticateRequest中去。

    我的实现原理是:每次访问aspx文件时候都会判断在线表里面是否有这个用户(已经登录了的记录用户名,没有登录的记录IP地址),如果不存在,则将该用户的身份、最后访问时间、最后访问IP、和最后访问的URL存入数据库。如果数据库中已经曾在,则更新该记录,把最后访问时间,IP以及最后访问URL更新。

    同时,删除数据库中与当前时间间隔20分钟以上的数据(20分钟没操作当为超时)。

    二、优点
    这样,你不仅仅可以看到当前在线的准确人数,还知道是那些人在线,以及是否登陆,和访问人数中已经是会员的比例,以及所在位置,并计算某个页上的人数。

    三、数据库结构:
    主键    字段            类型    长度    是否为空说明
    1uson_serialint40序号
    0uson_uservarchar200用户名(没登陆则为IP)
    0uson_companyvarchar1000公司名(没登陆则为'游客')
    0uson_ip        varchar200IP地址
    0uson_datedatetime80最后操作时间
    0uson_urlvarchar1000最后操作页面路径

    四、程序
    注意:
    1、程序位于global.asax中
    2、我是使用的FORMS身份验证
    3、请using System.Web.Security

    protected void Application_AuthenticateRequest(Object sender, EventArgs e)
    {
    string strUserID = string.Empty;
    string strCompany = string.Empty;
    if (Request.IsAuthenticated)
    {
    FormsIdentity identity = (FormsIdentity)User.Identity;
    FormsAuthenticationTicket ticket = identity.Ticket;
    strUserID = User.Identity.Name;
    strCompany = ticket.UserData.Split("|".ToCharArray())[2];
    }
    else
    {
    strUserID = Request.UserHostAddress;
    strCompany = "游客";
    }

    MemberOnlineInfo objOnline = new MemberOnlineInfo(strUserID, Request.UserHostAddress, DateTime.Now.ToString(), Request.FilePath, strCompany);

    MemberAccount account = new MemberAccount();
    if (!account.CheckUserOnline(strUserID))
    account.AddOnline(objOnline);
    else
    account.UpdateOnline(objOnline);

    //删除超时的会员
    account.DeleteOnline();
    }

     


    (

    [1]

    文章录入:小秦    责任编辑:小秦 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 关于我们 | 友情链接 | 版权申明 |