求网站用用户列表代码?(UP 有分)
求网站用用户列表代码?
要求能判断用户是否用关闭浏览器来离开网站(有些代码太简单,不能同步)
邮件:
vzxq@sohu.com
问题点数:100、回复次数:42Top
1 楼vzxq(灵感人)回复于 2004-08-02 14:41:24 得分 0
来个人看看啊!Top
2 楼Raimond(麦克老狼)回复于 2004-08-02 14:42:32 得分 5
UPTop
3 楼vzxq(灵感人)回复于 2004-08-02 14:50:01 得分 0
helpTop
4 楼goody9807(http://goody9807.cnblogs.com)回复于 2004-08-02 14:50:49 得分 5
统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能,从而可以直观的了解到网站的吸引力或者网站程序的效率。现在,我们就介绍一个简单明了的方法来统计在线用户的多少,该方法的特点就是充分的利用了ASP.NET的特点,结合global.asax文件,用Application和Session巧妙的实现在线用户的统计,由于程序中只用到一个Application,所以,程序占用系统资源几乎可以忽略不及,当然,这也是网站管理者最关心的问题之一。
一、用户显示页面的使用
首先,我们来看看怎样现实当前网站的访问用户数量,程序代码如下:
<%@ Page Language="c#" debug="true" %>
<html>
<head>
<SCRIPT LANGUAGE="c#" RUNAT="server">
private void Page_Load(object sender, System.EventArgs e)
{
Visitors.Text = "本站当前有: <b>" + Application["user_sessions"].ToString() + "" + "</b> 位访问者 !";
}
<title>在线用户</title>
</head>
<body>
<asp:label id="visitors" runat="server" /><br>
</body>
</html>
可以看出,以上的程序特别简单,就是调用Application。当然,我们不必要专门设计一个页面来显示在线用户数量,在网站的任何页面,我们都可以直接调用Application("user_sessions").ToString()来显示当前用户数量。
二、global.asax文件实现
global.asax文件的作用我们自不必说,现在,我们直接来看统计当前在线用户数量如何实现:
<script language="c#" runat="Server">
protected void Application_Start(Object sender, EventArgs e)
{
Application["user_sessions"] = 0;
}
protected void Session_Start(Object sender, EventArgs e)
{
Application.Lock();
Application["user_sessions"] = (int)Application["user_sessions"] + 1;
Application.Unlock();
}
protected void Session_End(Object sender, EventArgs e)
{
Application.Lock();
Application["user_sessions"] = (int)Application["user_sessions"] - 1;
Application.Unlock();
}
</script>
以上代码很容易理解,当网站开始服务的时候(Application开始的时候),程序设置Application["user_sessions"]为零,然后,当用户进入网站(Session开始的时候)的时候,锁定Application,然后,将application("user_sessions")加一,用户退出网站的时候,application("user_sessions")减一。这样,就很巧妙的实现了在线用户的统计。Top
5 楼bccu(风雨中人)回复于 2004-08-02 14:53:57 得分 5
upTop
6 楼vzxq(灵感人)回复于 2004-08-02 14:59:04 得分 0
goody9807()
谢谢!你所说的用户数量统计我早已经实现 了。用户列表没有实现!Top
7 楼zedan(kk)回复于 2004-08-02 15:02:02 得分 5
顶,
学习!!!Top
8 楼huaisha83(怀)回复于 2004-08-02 15:03:04 得分 5
upTop
9 楼pgwron2004(小猪小猪我爱你)回复于 2004-08-02 15:04:58 得分 5
顶,学习学习再学习!Top
10 楼nicemood(冰度咖啡)回复于 2004-08-02 15:13:26 得分 0
顶,用户列表Top
11 楼Jasonchen82(梦回光辉岁月)回复于 2004-08-02 15:16:18 得分 5
来晚了。Top
12 楼vzxq(灵感人)回复于 2004-08-02 15:23:40 得分 0
有没有高手啊!Top
13 楼hnsmxzb(飞翔鸟)回复于 2004-08-02 15:29:38 得分 5
关注Top
14 楼zooo(其实我是个程序员!)回复于 2004-08-02 15:35:15 得分 5
顶
我也只会用asp的方法!Top
15 楼cc65yecunjian(建)回复于 2004-08-02 15:37:05 得分 0
UPTop
16 楼zooo(其实我是个程序员!)回复于 2004-08-02 15:43:01 得分 5
goody9807()
鄙视你!
copy我也会
你用用脑子看看人家问的什么!
带星就可以随便整些垃圾出来!
我穿一个绿裤衩的鄙视你两个星的!Top
17 楼Gzipis(藤原拓海(Fujiwara Takum)回复于 2004-08-02 15:57:22 得分 5
近来学习学习~!Top
18 楼anythingbutgirl(孔曰成仁)回复于 2004-08-02 16:00:32 得分 5
学习Top
19 楼flower16(十六)回复于 2004-08-02 16:12:50 得分 2
学习Top
20 楼vzxq(灵感人)回复于 2004-08-02 16:45:23 得分 0
大家来帮帮忙!Top
21 楼zcl7919(跑不了)回复于 2004-08-02 16:51:55 得分 3
up!!!Top
22 楼lookydd(苦苦咖啡)回复于 2004-08-02 17:09:06 得分 2
我来帮你顶!
UP。。。Top
23 楼tailer88(水)回复于 2004-08-02 17:16:16 得分 5
顶!
可我不太会用
楼主,不好意思
学习~Top
24 楼hnshuer(舒尔)回复于 2004-08-02 17:23:48 得分 2
upTop
25 楼owenbeckham()回复于 2004-08-02 17:27:39 得分 5
顶!
可我不太会用
楼主,不好意思
学习~
顶!
可我不太会用
楼主,不好意思
学习~
Top
26 楼yidao(一刀)回复于 2004-08-02 17:44:09 得分 2
效果一样嘛,建个在线用户表,添用户数量的时候,同时添加用户名称就可以了。
反之亦然。Top
27 楼yipiaoqingshui(一瓢清水)回复于 2004-08-02 17:52:29 得分 5
asp中是添加数据.建一个在线用户表.不是很容易了?Top
28 楼vzxq(灵感人)回复于 2004-08-03 10:27:16 得分 0
思路 明白,不知道如何具体实现!(已经实现了简单的功能)
高手来!Top
29 楼vzxq(灵感人)回复于 2004-08-03 13:09:01 得分 0
大家帮忙UPTop
30 楼jason5468()回复于 2004-08-03 14:52:41 得分 2
UP!Top
31 楼pgwron(情伤无痕)回复于 2004-08-03 14:58:51 得分 0
能力有限,一边学习,一边拿分Top
32 楼vzxq(灵感人)回复于 2004-08-05 13:23:45 得分 0
主要是如何判断用户是否离开。Top
33 楼casual12(想做狂人)回复于 2004-08-05 13:39:50 得分 2
TO zooo(其实我是个程序员!):
呵呵!有意思!Top
34 楼casual12(想做狂人)回复于 2004-08-05 13:41:47 得分 2
gzTop
35 楼binny0532(苏打水)回复于 2004-08-05 13:46:18 得分 2
upTop
36 楼cat_hsfz(我的新Blog在http://cathsfz.cnblogs.com)回复于 2004-08-05 15:38:39 得分 2
没有办法保证知道用户是否关闭浏览器了!
因为http是无状态、非连续连接,用户获取了Response之后干什么,没有任何“义务”向你汇报。所以只能在用户不再请求n分钟或当作离开,但不能有100%获取用户是否已关闭浏览器的办法。Top
37 楼vzxq(灵感人)回复于 2004-08-09 08:36:05 得分 0
没有什么好的办法了吗?
有没有高手来啊!Top
38 楼uno(钢盅郭子)回复于 2004-08-09 08:55:01 得分 2
写一个客户端的控件(ActiveX)
由它来管客户端
希望你的客户端同意安装你的控件:PTop
39 楼vzxq(灵感人)回复于 2004-08-09 08:57:34 得分 0
楼上的高手,亲人!有代码吗?
msn 留一下也行!Top
40 楼jianyi0115(随意)回复于 2004-08-09 09:07:29 得分 2
Global.asax中写如下代码:
protected void Session_Start(Object sender, EventArgs e)
{
//Session["user"] = "jianyi";
Application.Lock();
Application["visitorCount"] = 1+ (int)Application["visitorCount"] ;
Application.UnLock();
if( (bool)Application["trackVisitorInfo"] )
{
DataTable visitorInfoTable = createXmlDB.createVisitorInfoTable();
DataRow row = visitorInfoTable.NewRow();
row["sessionID"] = Session.SessionID;
row["uName"] = "";
row["time"] = DateTime.Now;
row["IP"] = Request.UserHostAddress ;
row["language"] = Request.UserLanguages[0];
row["browerType"] = Request.Browser.Type;
row["OSType"] = Request.Browser.Platform;
visitorInfoTable.Rows.Add( row );
}
}
protected void Session_End(Object sender, EventArgs e)
{
////online users
///
Application.Lock();
if( Session["user"] != null )
{
DataTable onUserTable = (DataTable)Application["onUser"];
DataRow[] rows = onUserTable.Select("uName='" + Session["user"].ToString() + "'");
if( rows.Length > 0 )
{
rows[0].Delete();
Application["onUserCount"] = (int)Application["onUserCount"] - 1;
}
}
Application["visitorCount"] = (int)Application["visitorCount"] - 1 ;
Application.UnLock();
////
///
if( (bool)Application["trackVisitorInof"] )
{
DataTable visitorInfoTable = createXmlDB.createVisitorInfoTable();
DataRow[] rows = visitorInfoTable.Select( "sessionID='" + Session.SessionID + "'" );
if( rows.Length > 0 ) rows[0].Delete();
}
}
--------------以上是一个论坛程序的部分代码,其中createXmlDB.createVisitorInfoTable()是一个静态方法,建立内存中的用户信息表。
Top
41 楼vzxq(灵感人)回复于 2004-08-10 08:38:37 得分 0
这部分功能我已经实现了,可是怎么才能正确判断用户离开,如关掉了浏览器。而不是等到Session到期才改变用户列表。Top
42 楼vzxq(灵感人)回复于 2004-08-10 14:09:55 得分 0
各位有做过的吗?
再不行就结了Top




