19 个解决方案
#1
怎么都没有人参于啊?
#2
老问题了,到这版块搜索下吧
#3
恩。。这样试试看可以吗》
SESSION、或COOKIES 存储用户信息,
然后在判断。如果 有相同的信息,则出错~
SESSION、或COOKIES 存储用户信息,
然后在判断。如果 有相同的信息,则出错~
#4
查过啊,没有查到。
#5
ctv0071(wujkj)
这种方式只适用于客户机,不适合我所提的问题!
这种方式只适用于客户机,不适合我所提的问题!
#6
从理论上来讲,同一时刻肯定只有一个用户登陆,因为服务器CPU处理登陆指令肯定是串行进行滴
或者说规定同一IP只能有一个用户具有登陆的权限
或者说规定只允许一位用户在线
要实现这种功能,除了楼主所说的应用临时表或者临时文件(如FSO读取文件)外,我建议采用如下方案(没试验过,不保证效果)
ASP内置对象Application,通过修改global.asa文件里的内容实现特定状态字的修改或者判断,例如
sub application_onstart
Application("LockServer")=0'此变量自己定义
Application("LockSessionID")=""'此变量自己定义
sub end
sub application_onend
Application("LockServer")=1
sub end
sub session_ontart
Application.Lock
if Application("LockServer")=1 then
response.redirect "err.asp"?message=err
else
Application("LockServer")=1
end if
Application.Unlock
sub end
sub session_ontart
Application.Lock
if Application("LockServer")=1 then
response.redirect "err.asp"?message=err
else
Application("LockServer")=1
Application("LockSessionID")=Session.SessionID
end if
Application.Unlock
sub end
sub session_onend
Application.Lock
if Application("LockServer")=1 and Application("LockSessionID")=Session.SessionID then
Application("LockServer")=0'此变量自己定义
Application("LockSessionID")=""'此变量自己定义
end if
Application.Unlock
sub end
或者说规定同一IP只能有一个用户具有登陆的权限
或者说规定只允许一位用户在线
要实现这种功能,除了楼主所说的应用临时表或者临时文件(如FSO读取文件)外,我建议采用如下方案(没试验过,不保证效果)
ASP内置对象Application,通过修改global.asa文件里的内容实现特定状态字的修改或者判断,例如
sub application_onstart
Application("LockServer")=0'此变量自己定义
Application("LockSessionID")=""'此变量自己定义
sub end
sub application_onend
Application("LockServer")=1
sub end
sub session_ontart
Application.Lock
if Application("LockServer")=1 then
response.redirect "err.asp"?message=err
else
Application("LockServer")=1
end if
Application.Unlock
sub end
sub session_ontart
Application.Lock
if Application("LockServer")=1 then
response.redirect "err.asp"?message=err
else
Application("LockServer")=1
Application("LockSessionID")=Session.SessionID
end if
Application.Unlock
sub end
sub session_onend
Application.Lock
if Application("LockServer")=1 and Application("LockSessionID")=Session.SessionID then
Application("LockServer")=0'此变量自己定义
Application("LockSessionID")=""'此变量自己定义
end if
Application.Unlock
sub end
#7
大意了,写重复了
第一个 sub session_onstart 得删了
sub application_onend 中那句Application("LockServer")=1也可以不要
楼主如果试了,给点反馈
还有如果不行的话{ if Application("LockServer")=1 }这句可能得改为
if Application("LockServer").属性名称=1
我也不是很懂啦反正就这个意思
这两篇是application和session区别的教程文章
http://www.pconline.com.cn/pcedu/empolder/wz/asp/10111/15107.html
http://www.shanke.cn/2004/12-14/101822.html
第一个 sub session_onstart 得删了
sub application_onend 中那句Application("LockServer")=1也可以不要
楼主如果试了,给点反馈
还有如果不行的话{ if Application("LockServer")=1 }这句可能得改为
if Application("LockServer").属性名称=1
我也不是很懂啦反正就这个意思
这两篇是application和session区别的教程文章
http://www.pconline.com.cn/pcedu/empolder/wz/asp/10111/15107.html
http://www.shanke.cn/2004/12-14/101822.html
#8
我没有试,但是通过对Application和session的了解,其共同的缺点是资源消耗大。
而application的lock属性,只是确保同一时刻仅有一个客户修改和存取。但是当unlock一结束,别人又可以继续写了。所以,这个应该是不行的。
其次一点,application只有服务器重启后才会消失,如果你所说的可以成立的话,一个新的问题就出现了,当用户非法退出时,那么,这个以登陆的错施如何去掉呢?并且,如果不重起服务器,系统受不了,这不是个好方法。
而application的lock属性,只是确保同一时刻仅有一个客户修改和存取。但是当unlock一结束,别人又可以继续写了。所以,这个应该是不行的。
其次一点,application只有服务器重启后才会消失,如果你所说的可以成立的话,一个新的问题就出现了,当用户非法退出时,那么,这个以登陆的错施如何去掉呢?并且,如果不重起服务器,系统受不了,这不是个好方法。
#9
◆application的lock和unlock和你的要求没有关系,只是为了程序严谨
session_onstart事件中
Application("LockServer")=1
Application("LockSessionID")=Session.SessionID
能够确保其它用户无法登陆
在 对应sessionId 发生 session_onend后自然会释放登陆权限
◆用户非法退出,在session约定时间(Session.Timeout)到期后会触发session_onend事件来释放登陆权限吧?
◆资源消耗的问题,是在这里用几段代码效率高还是访问临时表效率高我真的不知道了:)我也是个初学者
●所以我觉得应该可行
◆另外楼主要实现的功能可否描述精确一些
session_onstart事件中
Application("LockServer")=1
Application("LockSessionID")=Session.SessionID
能够确保其它用户无法登陆
在 对应sessionId 发生 session_onend后自然会释放登陆权限
◆用户非法退出,在session约定时间(Session.Timeout)到期后会触发session_onend事件来释放登陆权限吧?
◆资源消耗的问题,是在这里用几段代码效率高还是访问临时表效率高我真的不知道了:)我也是个初学者
●所以我觉得应该可行
◆另外楼主要实现的功能可否描述精确一些
#10
我所想要达到的效果就是,不论在哪里,在同一个时间,一个用户名,在未退出前,别人都不能使用这个用户名登陆。也就是说,同一时间,同一用户名,不能在不同机子同时登陆,只有等用户退出后,才能在登陆。
#11
怎么没有人讨论了呢?
#12
唉,明天在没有人回,我就关贴了!
#13
增加登录信息表。
用户登录后,记录其ip,时间等信息。
用户退出时,记录其退出时间等信息。
用户关闭浏览器时,触发退出事件。
登录时,检查该表,该用户是否在其他ip机子上登录了,是否退出了。
用户登录后,记录其ip,时间等信息。
用户退出时,记录其退出时间等信息。
用户关闭浏览器时,触发退出事件。
登录时,检查该表,该用户是否在其他ip机子上登录了,是否退出了。
#14
我也是这么想的,但是问题是,如何抓到关闭浏览器的事件。不会。
#15
只能用"退出登陆"吗?
如何用事件啊?顶
如何用事件啊?顶
#16
顶~~~
#17
再顶,今天没有人在回复了,晚间就结贴算了。
#18
顶,好问题啊!,偶不会啊!..............
#19
结贴了!!
郁闷
郁闷
#20
#1
怎么都没有人参于啊?
#2
老问题了,到这版块搜索下吧
#3
恩。。这样试试看可以吗》
SESSION、或COOKIES 存储用户信息,
然后在判断。如果 有相同的信息,则出错~
SESSION、或COOKIES 存储用户信息,
然后在判断。如果 有相同的信息,则出错~
#4
查过啊,没有查到。
#5
ctv0071(wujkj)
这种方式只适用于客户机,不适合我所提的问题!
这种方式只适用于客户机,不适合我所提的问题!
#6
从理论上来讲,同一时刻肯定只有一个用户登陆,因为服务器CPU处理登陆指令肯定是串行进行滴
或者说规定同一IP只能有一个用户具有登陆的权限
或者说规定只允许一位用户在线
要实现这种功能,除了楼主所说的应用临时表或者临时文件(如FSO读取文件)外,我建议采用如下方案(没试验过,不保证效果)
ASP内置对象Application,通过修改global.asa文件里的内容实现特定状态字的修改或者判断,例如
sub application_onstart
Application("LockServer")=0'此变量自己定义
Application("LockSessionID")=""'此变量自己定义
sub end
sub application_onend
Application("LockServer")=1
sub end
sub session_ontart
Application.Lock
if Application("LockServer")=1 then
response.redirect "err.asp"?message=err
else
Application("LockServer")=1
end if
Application.Unlock
sub end
sub session_ontart
Application.Lock
if Application("LockServer")=1 then
response.redirect "err.asp"?message=err
else
Application("LockServer")=1
Application("LockSessionID")=Session.SessionID
end if
Application.Unlock
sub end
sub session_onend
Application.Lock
if Application("LockServer")=1 and Application("LockSessionID")=Session.SessionID then
Application("LockServer")=0'此变量自己定义
Application("LockSessionID")=""'此变量自己定义
end if
Application.Unlock
sub end
或者说规定同一IP只能有一个用户具有登陆的权限
或者说规定只允许一位用户在线
要实现这种功能,除了楼主所说的应用临时表或者临时文件(如FSO读取文件)外,我建议采用如下方案(没试验过,不保证效果)
ASP内置对象Application,通过修改global.asa文件里的内容实现特定状态字的修改或者判断,例如
sub application_onstart
Application("LockServer")=0'此变量自己定义
Application("LockSessionID")=""'此变量自己定义
sub end
sub application_onend
Application("LockServer")=1
sub end
sub session_ontart
Application.Lock
if Application("LockServer")=1 then
response.redirect "err.asp"?message=err
else
Application("LockServer")=1
end if
Application.Unlock
sub end
sub session_ontart
Application.Lock
if Application("LockServer")=1 then
response.redirect "err.asp"?message=err
else
Application("LockServer")=1
Application("LockSessionID")=Session.SessionID
end if
Application.Unlock
sub end
sub session_onend
Application.Lock
if Application("LockServer")=1 and Application("LockSessionID")=Session.SessionID then
Application("LockServer")=0'此变量自己定义
Application("LockSessionID")=""'此变量自己定义
end if
Application.Unlock
sub end
#7
大意了,写重复了
第一个 sub session_onstart 得删了
sub application_onend 中那句Application("LockServer")=1也可以不要
楼主如果试了,给点反馈
还有如果不行的话{ if Application("LockServer")=1 }这句可能得改为
if Application("LockServer").属性名称=1
我也不是很懂啦反正就这个意思
这两篇是application和session区别的教程文章
http://www.pconline.com.cn/pcedu/empolder/wz/asp/10111/15107.html
http://www.shanke.cn/2004/12-14/101822.html
第一个 sub session_onstart 得删了
sub application_onend 中那句Application("LockServer")=1也可以不要
楼主如果试了,给点反馈
还有如果不行的话{ if Application("LockServer")=1 }这句可能得改为
if Application("LockServer").属性名称=1
我也不是很懂啦反正就这个意思
这两篇是application和session区别的教程文章
http://www.pconline.com.cn/pcedu/empolder/wz/asp/10111/15107.html
http://www.shanke.cn/2004/12-14/101822.html
#8
我没有试,但是通过对Application和session的了解,其共同的缺点是资源消耗大。
而application的lock属性,只是确保同一时刻仅有一个客户修改和存取。但是当unlock一结束,别人又可以继续写了。所以,这个应该是不行的。
其次一点,application只有服务器重启后才会消失,如果你所说的可以成立的话,一个新的问题就出现了,当用户非法退出时,那么,这个以登陆的错施如何去掉呢?并且,如果不重起服务器,系统受不了,这不是个好方法。
而application的lock属性,只是确保同一时刻仅有一个客户修改和存取。但是当unlock一结束,别人又可以继续写了。所以,这个应该是不行的。
其次一点,application只有服务器重启后才会消失,如果你所说的可以成立的话,一个新的问题就出现了,当用户非法退出时,那么,这个以登陆的错施如何去掉呢?并且,如果不重起服务器,系统受不了,这不是个好方法。
#9
◆application的lock和unlock和你的要求没有关系,只是为了程序严谨
session_onstart事件中
Application("LockServer")=1
Application("LockSessionID")=Session.SessionID
能够确保其它用户无法登陆
在 对应sessionId 发生 session_onend后自然会释放登陆权限
◆用户非法退出,在session约定时间(Session.Timeout)到期后会触发session_onend事件来释放登陆权限吧?
◆资源消耗的问题,是在这里用几段代码效率高还是访问临时表效率高我真的不知道了:)我也是个初学者
●所以我觉得应该可行
◆另外楼主要实现的功能可否描述精确一些
session_onstart事件中
Application("LockServer")=1
Application("LockSessionID")=Session.SessionID
能够确保其它用户无法登陆
在 对应sessionId 发生 session_onend后自然会释放登陆权限
◆用户非法退出,在session约定时间(Session.Timeout)到期后会触发session_onend事件来释放登陆权限吧?
◆资源消耗的问题,是在这里用几段代码效率高还是访问临时表效率高我真的不知道了:)我也是个初学者
●所以我觉得应该可行
◆另外楼主要实现的功能可否描述精确一些
#10
我所想要达到的效果就是,不论在哪里,在同一个时间,一个用户名,在未退出前,别人都不能使用这个用户名登陆。也就是说,同一时间,同一用户名,不能在不同机子同时登陆,只有等用户退出后,才能在登陆。
#11
怎么没有人讨论了呢?
#12
唉,明天在没有人回,我就关贴了!
#13
增加登录信息表。
用户登录后,记录其ip,时间等信息。
用户退出时,记录其退出时间等信息。
用户关闭浏览器时,触发退出事件。
登录时,检查该表,该用户是否在其他ip机子上登录了,是否退出了。
用户登录后,记录其ip,时间等信息。
用户退出时,记录其退出时间等信息。
用户关闭浏览器时,触发退出事件。
登录时,检查该表,该用户是否在其他ip机子上登录了,是否退出了。
#14
我也是这么想的,但是问题是,如何抓到关闭浏览器的事件。不会。
#15
只能用"退出登陆"吗?
如何用事件啊?顶
如何用事件啊?顶
#16
顶~~~
#17
再顶,今天没有人在回复了,晚间就结贴算了。
#18
顶,好问题啊!,偶不会啊!..............
#19
结贴了!!
郁闷
郁闷