急,有个很急的问题请教各位???(在线等)

harryyanzy 2004-04-14 01:50:21
我现在有一个问题就是要做一个:一个用户帐号不能同时登陆的问题,具体的思路已经想好了。为了实现一个用户帐号不能同时登陆,先在数据库中先加一个字段为sfzx类型为bit默认值为0,当一个用户登陆的时候,只有这个字段为0的时候才能成功的登陆,当用户成功登陆后sf变为1,在这时要是有别的人再用这个帐号登陆的话,那将不能成功登陆。所以只有建立一个Global.asa的文件,在Session_OnEnd的时候把sf变回为0,这个用户下次才能正常的登陆。我的代码已经写好了,但是一直都不能用也不知道是错在什么地方了,请各位给指点一下可以吗???我先谢谢了。
<script language=vbscript runat=server>

sub application_onstart
end sub

sub application_onend
end sub

Sub Session_Onstart
end sub

Sub Session_OnEnd
session("userid")=tm
sfzx=0
set Application("conn")=server.createobject("adodb.connection")
Application("conn").open "driver={sql server};server=dp10;uid=sa;database=denglu;pwd="
sql=" update register set sfzx="&sfzx&" where userid='"&tm&"' "
Application("conn").execute sql
End Sub
</script>
...全文
2 点赞 收藏 16
写回复
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
harryyanzy 2004-04-15
我按你们说的做了,但是还是不行!!!
回复
xieyj 2004-04-15
试试将 session_onend 事件写到 application_onend 中,因为 session_onend 是指在 session 值丢失时才执行,而 session 未丢失时可能用户已经强行关闭浏览器,但它会执行 application_onend 的代码
回复
xingyun1982314 2004-04-14
sub application_onstart
session.timeout=1
end sub

Sub Session_OnEnd
tm=session("userid")
sfzx=0
set Application("conn")=server.createobject("adodb.connection")
Application("conn").open "driver={sql server};server=dp10;uid=sa;database=denglu;pwd="
sql=" update register set sfzx="&sfzx&" where userid='"&tm&"' "
Application("conn").execute sql
End Sub
回复
wuhuxia 2004-04-14
不通过global,也可以通过刷新数据库来做啊
回复
Symanteck 2004-04-14
GoodyeahApple(胡萝卜汁):
你写的应该没问题,不过实际上session_onend()在未设置情况下为默认关闭浏览网站20分钟后才执行的可以用session.timeout=value来设置,可是由于网络的不稳定性session()总是给人一种不可靠的感觉,可以结合cookies来使用。
---------------------------
赞成!
创建cookie的基本语法
   Response.Cookies("CookieName")=value
   执行下面的代码将会在访问者的计算机中创建一个cookie,名字=VisitorName,值=Ken
Response.Cookies("VisitorName")="Ken"
   执行下面的代码将会在访问者的计算机中创建一个cookie,名字=VisitorName,值=表单中UserName的值
Response.Cookies("VisitorName")=Request.Form("UserName")
   读取cookie的基本语法
   Request.Cookies("CookieName")
   可以将Request值当作一个变量看待,执行下面的代码,将取回名字为KensCookie的cookie值,并存入变量MyVar:
MyVar=Request.Cookies("KensCookie")
回复
harryyanzy 2004-04-14
可以说的再清楚一点吗???
回复
harryyanzy 2004-04-14
那到底应该怎么解决呀,我真的很急。按我说的那个想法做可以吗???
回复
GoodyeahApple 2004-04-14
你写的应该没问题,不过实际上session_onend()在未设置情况下为默认关闭浏览网站20分钟后才执行的可以用session.timeout=value来设置,可是由于网络的不稳定性session()总是给人一种不可靠的感觉,可以结合cookies来使用。
回复
aspnetxp 2004-04-14
这样做有漏洞的
回复
小蛀 2004-04-14
建一个在线数据库~~登录了就将名字加进去~~~
当有用户用同一名字再登录,只要检查数据库中此人存不存在就可以了~
当然,当用户离线或者断线,则要将用户人库中删除~~~

你可以每隔一段时间就侦测用户在不在线,从而让程序决定是否该删除此用户~~~!!

回复
harryyanzy 2004-04-14
我按你们说的tm=session("userid")办了,可还是不能用,怎么办???
回复
harryyanzy 2004-04-14
那个怎么办呀,各位有没有什么更好的方法,可以指点一下下吗???
回复
whb147 2004-04-14
最主要Global.asa有时候不执行
回复
thundersoft 2004-04-14
楼上说的应该就对了
回复
bybee 2004-04-14
session("userid")=tm

应该为

tm=session("userid")
回复
jinhaiou 2004-04-14
要实时就很难实现
回复
发动态
发帖子
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
社区公告
暂无公告