网站是jsp的。
当用户输入用户名密码登陆后,生成一个session值   
  以后就通过判断这个session是否为空来检测用户是否登陆   
    
  现在问题是,如果在同一台电脑上同时登陆两个用户,在第一个用户登陆后打开一个窗口,不关闭窗口,再打开一个新窗口,用第二个用户登陆,这时第一个用户的 登陆后窗口变成第二个用户的信息。 第二个用户没有自己打开登陆后的窗口,而是覆盖了第一个用户的登陆后打开的窗口。 同一个用户不同机器可以登陆。 
  这是为什么???如何解决啊???   
 我看了可能和session相关,如何在客户端解决这个问题?我想不同用户登陆后都打开自己的窗口。而不是去覆盖之前的。
不能改变服务端程序啊。

解决方案 »

  1.   

    会不会是第一个账户退出时,没有写session.invalidate()呢?
      

  2.   

    当aa打开登陆窗口输入用户名和密码点击进入按钮后新打开一个窗口a,aa登陆进来了。
    当bb无论是新打开一个ie窗口登陆还是用原来aa的登陆窗口登陆,都不会再打开新窗口了,而窗口a的信息变成了用户bb的了我查了说是session覆盖的问题我的想法是在两个ie窗口地址栏输入http://*****/login.asp?username=aa&password=pp回车输入http://*****/login.asp?username=bb&password=cc回车这样是否在服务器上有两个不同的session产生?
    是的话我用不同的sessionid提交是否进入不同的登陆后的页面?不知此法行不?
      

  3.   


     我想你一定是用的遨游浏览器吧,我看 qq 在使用遨游浏览器的时候它的 session 都是共享的。也就是说打开第一个页面的时候没有关闭,再打开第二个页面时出现的如:用户名等 session 是第一个页面的用户名,我想是这个意思吧。 大家可以使用遨游浏览器打开 qq 空间,打开两个就知道楼主说的那个问题。 这样吧,你每次创建 session 的时候指定为 false 即: Session session = request.getSession(false); 就是说每次创建 session 都不重新 new  出一个新的 sessionId  而是使用旧的 sessionId ,旧的 sessionId 也就是说是最先开始执行 Session session = request.getSession(); // 最先开始获得 sessionId 的地方应该是 true  不是false ,以后的就是 false 。 这样的话,在下面 new 出 session 的时候都不创建新的,而是使用旧的。你看看这个办法行不行。 
      

  4.   

    每个用户登陆的时候在application里添加一个记录
    登陆同时判断该用户是否存在
      

  5.   

    各位老大看好啊:
    不能修改服务端的程序啊
    我只是在客户端想办法啊
    我用的是ie6.0
    我看了,当我打开登陆界面的时候它给我分配一个session的
    打开多个登陆界面他就分配多个session
    各不相同啊
    例如在一台机器上打开两个登陆窗口,它分配给我的session分别为11和22
    如果此时我用用户aa登陆后打开一个新的登陆后的界面,保持aa不关闭,再用bb登陆,此时bb没有打开新的登陆后的界面,而是替换了aa登陆后的界面,此时只有一个登陆后的界面那就是bb的。
    我是想不同用户登陆后打开不同的登陆后窗口,而不是后来的用户替换了前面的啊
    如何解决啊????郁闷!
      

  6.   


      你那不是替换的问题,是你的浏览器两个页面共享了一个 session ,你在  ie6 下再试试,就不会出现你那种情况了。
      

  7.   

    其实我觉得就是开两个浏览器就好了,貌似浏览一关,就一个session对象就给注销,那反过来想应该是一样的吧,就是一个session对象的引用应该就是对应一个浏览器的吧,不知道我这样的理解对吗?两个的话,应该不会出现覆盖的问题了吧
      

  8.   


      不是这个意思,像 遨游、火狐、IE7,他们都是有浏览器选项卡的,这样的话,他们之间的 session 是共享的,我上面就说过了,你用遨游打开两个 qq 空间,你就知道他们之间的 session 是共享的,第一个 session 的用户名什么的都到第二个页面的 session 中了。但是你如果使用 ie6 这样单独的一个浏览器的话,就不会出现这样的情况了。
      

  9.   

    就如楼上说的,看你打开浏览器的方式如何。
    比如IE,如果是通过双击方式打开的,Session是不共享的。
    如果是在IE的,文件》新建标签或新建文件 这个方式打开是共享Session的。会把你第一次登陆的Session覆盖。
      

  10.   

    关键是问题是不是同一个浏览器进程,在同一个浏览器进程中session是会被覆盖的,不同浏览器进程的session是不会覆盖的。
    简单说,一个session只能对应一个浏览器进程
    你可以查看任务管理器,看看有几个浏览器进程
      

  11.   

    老大们:
    我把问题补充到了12楼
    另外:我在一台机器上当前桌面下用aa登陆网站后保持不关闭,点击开始菜单切换到别的系统用户环境,用用户aa还可以登陆网站。
    用bb应该也可以
    问题是:一个xp系统用户就只能打开一个网站用户的登陆后界面。
      

  12.   

     
      就像 17 楼说的那样,session 是通过浏览器进程来判断的,请问楼主你是什么浏览器测试的?
      

  13.   

    我是用ie6测试的
    现在好了我的解决方法:
    用ie登陆一个用户,然后用firefox登陆另外一个用户即可为什么呢?是因为ie和firefox不用相同的临时文件夹以及cookies存放目录不同myie不行
    有个问题是:firefox打开的页面有问题,对于页面的表格无法显示,不知如何解决?
    y
    不知道还有没有别的好的解决方法,
      

  14.   

    你要完全  把浏览器关了, 在登陆就可以了     session会写个cookies放在客户端的   只浏览器没有完全关闭,这个cookies就会在,服务器就不会重新给你分session所以会出你前面那个帐户
      

  15.   


       你打开两个  IE6 来测试,也应该是好的,应为他们是两个不同的进程,所以 session 就不一样。  就象 IE 和 FF 是两个不同进程的浏览器。
      

  16.   

    我发现问题了:原因很可能是只要是ie核心
    的浏览器都是智能打开一个登陆后的窗口
    如果你再用个非ie核心的浏览器就可以打开了因为只要是一类的浏览器例如ie核心的浏览器他们的所有进程都共享一个临时文件夹目录和cookies目录,这就是问题所在。
    除非有什么办法让ie的各个进程使用不同的临时文件夹目录。不知道哪位老大有让ie的各个进程使用不同临时文件夹的方法,还请不吝赐教!谢谢各位老大的热心关注!
    特别是Ghost_520老大!非常热心的朋友!
      

  17.   

    估计你用的是IE7吧,或者类似的那种可以打开多个选项卡的那种浏览器,这种浏览器都将同一个窗口(而不是同一个选项卡)当成一个对话,也就是共用一个SESSION,你只有重新打开另一个浏览器窗口(而不是一个新的选项卡)才能够开启另一个会话(另一个SESSION)。
    你可以试试IE6,它是不存在选项卡的概念的。
    窗口和选项卡不是一个概念。
      

  18.   

    换了机器不行的。
    他的网站就是这么设计的。可惜搞不到源码。我就是用的ie6  肯定不是session的问题了,因为我试了用不同的session也不行。
    session不同的两个连接后面的用户也会覆盖前一个用户登陆后的页面,注意我说的是登陆后打开的页面不是登陆页面,创建session是在你打开登陆页面的时候完成的,输入完用户名和密码点击登陆后打开一个登陆后的页面,原来的登陆页面还在那里的。这时侯网站再传给你一个cookie。我测试的时候感觉好像session不同,但是这个cookie好像是相同的,还有就是在ie的临时文件夹里面储存了一些个页面。我怀疑就是这些页面在作怪。
      

  19.   

    再打开一个新窗口登陆是没有的
    我都试了就算是用ie和myie同时登陆都不行的除非用ie和非ie内核的浏览器同时登陆
      

  20.   

    搞了半天还是没弄清你最终问题是什么?
    不是session问题吗?
      

  21.   

    改程序:
    应该每个浏览器的打开,都会有一个独自的SessionID,在程序中根据SessionID来判断到底是哪一个用户
      

  22.   

    对同一站点的访问的session是会自动覆盖的吧。除非是使用其它的方法。现在的大网站也是一样啊,同时登录一下电子邮箱就知道了。
      

  23.   

    是不是用了cookie保存的登陆信息,你装一个httpwatch professional看一下
      

  24.   

    会不会是第一个账户退出时,没有写session.invalidate?
      

  25.   

    我都说了源程序在服务端我是改不了的
    能改早改了我只是个用户身份
    没有权利动源程序session绝对是不同的
    用非ie内核的浏览器和ie浏览器同时登陆可以打开两个登陆后的窗口
    现在问题是:非ie内核的浏览器在css和javascript的支持上和ie不同,导致了我用非ie内核的浏览器登陆后浏览时不能正常显示,
    甚至不能显示。
    有没有非ie内核的浏览器具有和ie相同的css和javascript支持?
    或者是有没有ie内核的浏览器可以设置和ie不同的临时文件夹目录?
      

  26.   

    你在本地用不同的浏览器打开就行了,session是浏览器内置对象,所以同一个浏览器只保存一个,用同一个浏览器登录就会出现你的那种情况
      

  27.   

    可能人家用的是cookie保存用户信息的吧
      

  28.   

    学习了。另外,Session还有可能失效什么的。这点在开发时也得考虑的。
      

  29.   

    唉,搞到最后我觉得还是得想办法让ie每个进程使用自己独立的临时文件存放位置but,该怎么实现呢?,有知道方法的告诉我啊!
      

  30.   

    你试试mail.163.com能不能同时在同一台机器上登陆两个账号·····
      

  31.   

    研究一下,,不过用WINDOWS自带IE好像不会。。
      

  32.   

    我觉得应该是网站程序设计成同一窗口名称只能出现一次,比如已经打开了一个叫A的编辑窗口,如果再次点击则只会再次显示以前的窗口,不会打开新的窗口。
    因此,如果不改程序,在客户端无论使用多少个不同的用户登录,都会出现同一个界面,这种程序我都曾经做过。当然使用不同的浏览器可能会允许打开多次,这取决于这些浏览器打开窗口时采用的命名规则。如果同一窗口打开多次,则在web程序上很难保证数据的一致性性和完整性,不像CS程序下的MDI窗口模式。
      

  33.   

    CTRL + N, 或者新建窗口是不行的。你重新在桌面上点 IE 新打开一个就行了
    老紫竹CSDN论坛插件发布-竹签V1.0 
      

  34.   

    服务端的一句话,在客户端就费了事了我现在正在尝试用bho方式能否实现每个浏览器进程拥有自己的独立临时文件夹和cookies文件夹。哪位老大有这方面的资料可以共享下?
      

  35.   

    本人建议一个用户用IE打开,一个用户用火狐打开,因为IE和火狐内核的处理机制是不一样的,这样就可以搞定在同一台机器用同一个帐号分别登录
      

  36.   

    判断SESSIONID是通过IE去判断的,出现新的IE去登陆当然创建新的SESSIONID,LZ说的情况就是A先登陆,B再登陆,B登陆的页面实际上的A登陆页面,此时A的原先的登陆页面已经被关闭了。这中情况和你所以的IE有关。在IE选项里看看问题吧。
      

  37.   

    哎呀,我用的世界之窗也不行啊
    世界之窗设置的临时文件夹和ie是共用的啊真是没办法 啊
    用非ie 内核的浏览器浏览时页面显示不正常啊查了资料说是对css  和 jacascript 的支持不兼容啊怎么办呢?
      

  38.   

    原因很简单,当登录页面a,登录后,打开新的页面b(页面ID 为x),用不同的登录页面c,不管是不是同一用户,只要登录进去,打开新的页面d(页面ID同为x),因为页面ID相同,就会覆盖掉原来的页面。原理是window.open(url,winId,style)中winId搞的鬼,只要每次登录的时候,用不同的Id就可解决。
      

  39.   

    你在同一台机器上是在同一个登录页面上登录的吧?一个session只能保存一次会话,也就是说只能保存一个session值,然后在同一个登录页面登录的时候就会把前面的那个sessin值覆盖,这是正常的。。你只要在登录一个后,在重新打开一个页面,在新的登录页面上登录就OK了。
      

  40.   

    浏览器不同选项卡之间的 session 是共享的
      

  41.   

    我感觉也是共享session的问题.
    帮up.
      

  42.   

    你这个问题其实很多大网站都是这样的,包括csdn也是,163也是的,其实就是后一个用户的session把前一个用户的session给冲
    掉了,我曾经想的办法是建立一个session数组来保存用户信息。因为不同机器与服务器是不同的session,所以可以的,同一个IE上
    就是一个session了。
      

  43.   

    应该是浏览器共享了一个Session吧!
      

  44.   

    天啊 看了这么多人说 看来这个问题是个很普遍的问题呢 我都找了好几天这个相关问题了 session真的让我又爱又恨!哎  总算看明白点儿了!