session有3种实现方式
第一种是cookie,现在很多浏览器都禁止了cookie,所以很多程序都不这么实现了
第二种是重写URL,也就是把SessionID作为一个参数加在URL的最后。
第三种是用一个hidden域保存SessionID,这和第二中方式其实是一样的虽然我不知道CSDN是怎么做的,但是我猜想应该是后两种之一
你打开一个新窗口,但是没有SessionID,所以就和没有登陆是一样的啊

解决方案 »

  1.   

    CSDN服务器传给第一个窗口的SessionID是不是存在第一个窗口的Cookie中?
      

  2.   

    cookie是保存在客户端的硬盘里面的,CSDN肯定不是用cookie的
    要不然他第一次登陆了就会写一个cookie,然后不管你怎么打开窗口都是使用同一个网站的cookie,就不会出现你的情况了
    所以CSDN肯定是用后两种的
      

  3.   

    如果你新建一个窗口打入URL:http://community.csdn.net/Expert/Forum.asp就能登录进去。我怀疑在http://www.csdn.net/Member/PassPort.asp页面要读入http://www.csdn.net/member/UserLogin.aspx页面的验证码之类的什么东西没有找到就重定向到http://www.csdn.net/member/UserLogin.aspx?from=/Member/PassPort.asp
      

  4.   

    csdn的登录是用asp写的!asp不太熟悉,如果是jsp的话,正如jFresH_MaN(The answer is ......)(静下心来研究Tiger)所说,跟踪用户的会话有三种实现方式,
     如果用户关闭cookies功能,就只能使用URL重写机制和隐藏式表单字段两种方法.session的记录机制是以cookie为设计基础的.
      

  5.   

    哦,原来你是直接登陆那个passport网页的啊
    这个肯定不行的
    因为这个页面必须有登陆页面的验证码的
      

  6.   

    那CSDN服务器传给第一个窗口的SessionID是存在哪里呢?
      

  7.   

    第一个窗口还没有登陆,登陆了之后通过身份验证,那么在session里面肯定村有验证信息,以后的每个页面都会通过验证信息来验证身份
    而这是于SessionID无关的
    准确的说一个SessionID表示一个session,也就是说我们是通过SessionID来判断用户是不是处于一个session里面
    而身份验证是不靠这个的