问个问题。session_id每关闭一次浏览器,再重新访问的时候,echo session_id()出来,会发现每次的id都不一样。查了些资料,说跟session.cookie_lifetime = 0有关系,值为0的时候,浏览器关闭则保存于客户端的cookie会被删除掉,于是执行session_start()又要重新去生成一个id。那我session.cookie_lifetime =9999将其值设为9999,不希望它关闭浏览器就过期,为什么重新打开浏览器仍然生成的session_id是不一样呢?

解决方案 »

  1.   

    echo ini_get("session.cookie_lifetime");确保有效了?另外,就算9999,GC还是会清理设定gc_maxlifetime的过期session文件的
      

  2.   

    那我希望 关闭浏览器 不要去清除客户端里 上一次留下的session_id信息呢?
    如何做
      

  3.   

    就是设置session.cookie_lifetime。 如一楼所说,先看看你的设置是否有生效。因为按常理既然设置了生命周期就不会在关闭浏览器时清除。
      

  4.   

    不同浏览器,session对象在各浏览器的有效范围不一样!
    ie中: 
    有效的窗品包括 
    1.session对象只在建立session对象的窗口中有效。 
    2.在建立session对象的窗口中新开链接的窗口 无效的窗口包括 
    1.直接启动ie浏览器的窗口 
    2.不是在建立session对象的窗口中新开链接的窗口 netscape中: 
    只要一个窗口有了某个session对象,则全部窗口对此session都有效 
      

  5.   

    给你个测试代码<?php
    ini_set("session.cookie_lifetime", 9999);
    echo ini_get("session.cookie_lifetime");
    session_start();
    echo '<br/>';
    echo session_id();
    file_put_contents(__FILE__, session_id() . PHP_EOL, FILE_APPEND);
    ?>
    <xmp>
      

  6.   

    sorry。
    Apache修改后,没有重启。
    重启后,session_id的值就再没变化过。。