一个页面中的iframe是一个独立的浏览窗口,将与Web服务器建立一个独立的会话。
从1.asp转入2.asp的过程中,相当于关闭了1.asp中1.php这个ifrme,然后在2.asp中新开一个iframe打开2.php.
实际的效果就相当于你打开一个浏览器浏览1.php,然后关闭这个浏览窗口,再重新打开浏览器,浏览2.php。session在关闭浏览器窗口时生命周期就已经结束,不会在2中显示session的内容。

解决方案 »

  1.   

    但是,如果我ie先直接浏览1.php,然后在此ie中打开1.asp,然后通过"按钮",链接跳转到2.php,再2.php的iframe中就得到了 session的 值
      

  2.   

    浏览一个网页时,如果页面没有iframe 或者frame, 那么ie和服务器之间建立1个连接。
    如果有n个iframe那么ie就和服务器之间建立n+1个连接。
    当服务器检测到对应的窗口关闭,则session销毁。1:ie先直接浏览1.php:该session建立,对应浏览器的窗口A。
    2:然后在此ie中打开1.asp:该A窗口未关闭,session保持。
    3:然后通过"按钮",链接跳转到2.asp:该A窗口未关闭session保持
    4:2.asp的iframe中:由于session没有销毁得到了 session的值.
    如果没有第一步
    1:在此ie中打开1.asp:A窗口对应1.asp除iframe以外的部分,B窗口对应1.php的iframe。  session对应B窗口。
    2:然后通过"按钮",链接跳转到2.asp:在离开1.asp时,B窗口关闭,session销毁。A窗口未关闭,但不对应session。3:在打开2.asp时,A窗口没有对应的session,B窗口是在打开2.asp时新建的,所以没有session信息。
    可能表达得不清楚,希望有知道的给楼主解释一下。
      

  3.   

    经测试,没有发现楼主所说的问题!!!
    session变量能正常显示
    brokenme(飓飞) 的解释是错误的!
      

  4.   

    不知道算不算是IE的BUG
    需要在php页面的第一行,在session_start之前加上以下一句
    header('P3P: CP="CAO PSA OUR"');
      

  5.   

    经测试,没有发现楼主所说的问题!!!
    session变量能正常显示
    brokenme(飓飞) 的解释是错误的!-----------------------------------------------------
    你的PHP环境是什么样的?我试过N遍了都是一样```