C#webfrom+sql2005如何实时判定用户在线
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#webfrom+sql2005如何实时判定用户在线相关的知识,希望对你有一定的参考价值。
如题,告诉我在网上自己查的就不用回复了!
谢谢三位的回答,可是如果这个用户一直在线``而会话状态过期了`怎么办`也不能这样就说用户不在线啊!
要实现这种功能,一般是使用web中的session机制,即每个新用户访问服务器后,系统会给这个用户生成一个session,默认超时时间为20分钟,即用户在20分内无请求,系统即认为用户已离开,用户超时后再访问系统,系统会重新生成一个新的session。
所以,你只要判断当前用户的session是否存在即可。
if(Session["Online"]!=null)
//在线用户
else
//新用户
使用session的要求之一是用户客户端的浏览器的cookie功能正常,因为系统生成session后会把SessionID发给用户,用户在以后的每次提交时都要把这个SessionID再提交给服务器,以告知服务器我是上次获取了Session的那个人。所以当客户端浏览器清空了cookie时,也会导致用户的session失效。
补充:
只有用户在默认的20分有请求,系统才认为用户是在线的,你用户在那里无请求操作,那系统等了20分钟,就认为你离开了。
1,你可以延长Session时间,但会更多的消耗服务器资源,一般不这样做。
2,你可以把用户的登陆用户名密码写在客户端的cookies中,这样当用户过了20分钟超时后再访问你的站点,你就判断客户端是否发送来cookies数据,如果有,那就用这个cookies 里面的账号帮用户自动登陆。这个时候实际上,系统还是重新生成了一个新的session,但用户察觉不到,以为是上次登陆后自己一直在线的。 ——这种也是目前各种网站的主要做法。
if(Session["Online"] == true)
//在线用户
else
if(Request.Cookies["UserAccount"]!=null)
//帮用户登陆
//........
//写cookies
Response.Cookies["UserAccount"] = "xxx";
Response.Cookies["UserAccount"].Expires = //cookies有效期;
Session["Online"] = true;
else
//跳到登陆页面
参考技术A 看你的用户存储方式了.
session或者cookie为空的时候自然用户就不在线了. 参考技术B 那能不能写一段代码,根据设定的时间定期更新在线用户的在线时间。当然数据库中要有在线时间这个字段了(个人想法) 参考技术C 首先webform是什么我不是很清楚,我按asp。net来说好了,一般用户登录的时候,你可以将他的用户名放入cookie或者session中,贸易一个用户访问的时候就会创建一个session,如果访问结束就会释放,通过session一般就可以判断用户的状态。
sql注入漏洞如何修复
要防止sql注入其实不难,你知道原理就可以了。1、所有的sql注入都是从用户的输入开始的。如果你对所有用户输入进行了判定和过滤,就可以防止sql注入了。用户输入有好几种,我就说说常见的吧。
2、文本框、地址栏里***.asp?中?号后面的id=1之类的、单选框等等。一般sql注入都用地址栏里的。。。。
3、对于所有从上一页传递过来的参数,包括request.form
、request.qurrystring等等进行过滤和修改。如最常的***.asp?id=123
,我们的id只是用来对应从select
里的id,而这id一般对应的是一个数据项的唯一值,而且是数字型的。这样,我们只需把id的值进行判定,就可以了。 参考技术A 我理解的SQL注入是这么一回事。比如你做一个登录的功能,你后台的SQL拼接
是
WHERE
USER_NAME
=
'XX'
AND
PASSWORD
=
'XX'
如果用户想办法将
USER_NAME
的值穿过去是
'
OR
1=1
OR
''
=
这个的话
(包括引号)
那么你的查询条件将失效
将会查出全部的用户。
这种注入
能防范的方法太多了。
比如查出来之后
你可以用PASSWORD和用户输入的PASSWORD对比一下
看是否一致
不一致
说明是入侵。本回答被提问者采纳
以上是关于C#webfrom+sql2005如何实时判定用户在线的主要内容,如果未能解决你的问题,请参考以下文章
如何避免从 C# 构建的 Sql Server 2005 参数化查询变慢