怎么判断一个用户是否在线? asp.net 怎么判断一个用户是否在线?用Session怎么弄?使用SessionID该怎么做?本人新手,请大侠们 多多指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在global.asax中的session_start中写处理代码。 参考 http://blog.sina.com.cn/s/blog_4e6dffee0100mbru.html 数据库表的用户字段加一个IsOnLineLogin的时候,设置为trueLogout的时候,设置为false另外Session_End的时候,也设置为false。 4楼的方法我已经做了用户表已经存在一个是否在线的字段.就是不知道Session_End的时候能否去修改isonline这个字段. 每30秒更新一次字段lastUpdateTime,获取在线用户Select * From sys_user Where datediff(ss,lastUpdateTime,getdate())<=60 你判断此用户的“最后一次访问时间”是否超时就可以判断他是否在线了。(通常这需要ajax方式随便、定时访问一下)跟“sql作业”没有关系。 Session_End里面写 回话结束自动清除登录状态,更新字段,与断电、死机没干系 楼上正解,如果楼主感觉还是不保险的话,就用sql吧。 ajax轮询呗,Client端不发送信号了,就是离线了. 登录成功的时候声明一个sessino["一个名称标识"]=那个账号每当登录的时候判断这个session存在不,就可以知道他登录没有 写个方法判断session是不是为空,如果是 页面跳转到登陆页public static void Islogin() { if (System.Web.HttpContext.Current.Session["userid"] == null) { System.Web.HttpContext.Current.Response.Write("<script>parent.location.href='login.aspx';</script>"); } } Session_Start(object sender, EventArgs e),Session_End(object sender, EventArgs e)这两个事件里面判断修改在线的值状态在线与否在数据库统计。 加一个字段,时间型,操作页面的时候更新一下时间。然后SQL作业。长时间这个字段没有更新的就说明不在线了。 你可以记录一些关键的动作的时间,如果用户超过了10分钟没有动作,就可以认为该用户已经离开,或者在你所有的页面上都写上ajax,每个一分钟,发送一个信息回去,表明用户还是打开本网站中的一个网页的 但是如果别人直接关了游览器怎么办..Session默认保存20分钟..这段时间还是当他在线的吗? 还是用ajax判断~隔一点的时间更新 判断用户是否超时就行了·· 不能精确判断用户是否在线,这是由于HTTP无状态确定的只能查询时间,最后一次多久也刷新时间,就视为离线 一般用AJAX,刷新吧,但时间间隔太短,会弄死服务器,太长,又不精确, using System;using System.Collections.Generic;using System.Web;using System.Web.Security;using System.Web.SessionState;namespace Liang.Web{ public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { Application["online"] = 0; } protected void Session_Start(object sender, EventArgs e) { Application.Lock(); Application["online"] = (int)Application["online"] + 1; Application.UnLock(); } protected void Application_BeginRequest(object sender, EventArgs e) { } protected void Application_AuthenticateRequest(object sender, EventArgs e) { } protected void Application_Error(object sender, EventArgs e) { } protected void Session_End(object sender, EventArgs e) { if (Session["user_id"] != null) { int id = Convert.ToInt32(Session["user_id"]); new BLL.user().UpdateField(id, "is_online=0"); } Application.Lock(); Application["online"] = (int)Application["online"] - 1; Application.UnLock(); } protected void Application_End(object sender, EventArgs e) { if (Session["user_id"] != null) { int id = Convert.ToInt32(Session["user_id"]); new BLL.user().UpdateField(id, "is_online=0"); } } }}这个是统计当前的在线人数的。不知道怎么弄某个用户是否在线。 这个是统计在线人员,会员在线啊,都可以,一般是这样,不过这个统计不精准,只能一个段时间不上线就判断,是否在线,不过,HTTP原理就是这样,没有办法,少整这闹心的事,没啥用 b/s很难弄出准确结果的。 ajax保持心跳访问,是一种解决办法。 关于带事务的存储过程!老是实现不了 散分一百,请教一个关于下载文件名编码的疑难问题 嵌套repeater动态添加数据后的显示问题,暂时不保存到数据库中,在线等啊 新手提问 如何计算字符串的字节长度 使用Ture DBGrid時,z-Index無效了 高手请教GridView1的翻页问题 网页乱码问题 Failed to map the path '/Web/Resume/1.xml'. 99乘法表 主键约束问题· 数据库表间关系问题,求解!
Login的时候,设置为true
Logout的时候,设置为false
另外Session_End的时候,也设置为false。
用户表已经存在一个是否在线的字段.
就是不知道
Session_End的时候
能否去修改isonline这个字段.
Select * From sys_user Where datediff(ss,lastUpdateTime,getdate())<=60
你判断此用户的“最后一次访问时间”是否超时就可以判断他是否在线了。(通常这需要ajax方式随便、定时访问一下)跟“sql作业”没有关系。
更新字段,与断电、死机没干系
每当登录的时候判断这个session存在不,就可以知道他登录没有
public static void Islogin()
{
if (System.Web.HttpContext.Current.Session["userid"] == null)
{
System.Web.HttpContext.Current.Response.Write("<script>parent.location.href='login.aspx';</script>");
}
}
Session_Start(object sender, EventArgs e),
Session_End(object sender, EventArgs e)这两个事件里面判断修改在线的值状态在线与否在数据库统计。
但是如果别人直接关了游览器怎么办..Session默认保存20分钟..这段时间还是当他在线的吗?
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;namespace Liang.Web
{
public class Global : System.Web.HttpApplication
{ protected void Application_Start(object sender, EventArgs e)
{
Application["online"] = 0;
} protected void Session_Start(object sender, EventArgs e)
{
Application.Lock();
Application["online"] = (int)Application["online"] + 1;
Application.UnLock();
} protected void Application_BeginRequest(object sender, EventArgs e)
{ } protected void Application_AuthenticateRequest(object sender, EventArgs e)
{ } protected void Application_Error(object sender, EventArgs e)
{ } protected void Session_End(object sender, EventArgs e)
{
if (Session["user_id"] != null)
{
int id = Convert.ToInt32(Session["user_id"]);
new BLL.user().UpdateField(id, "is_online=0");
}
Application.Lock();
Application["online"] = (int)Application["online"] - 1;
Application.UnLock();
} protected void Application_End(object sender, EventArgs e)
{
if (Session["user_id"] != null)
{
int id = Convert.ToInt32(Session["user_id"]);
new BLL.user().UpdateField(id, "is_online=0");
}
}
}
}这个是统计当前的在线人数的。不知道怎么弄某个用户是否在线。
这个是统计在线人员,会员在线啊,都可以,一般是这样,不过这个统计不精准,只能一个段时间不上线就判断,是否在线,不过,HTTP原理就是这样,没有办法,少整这闹心的事,没啥用