php会话在重定向时丢失

php会话在重定向时丢失,php,session,Php,Session,我试图在这里使用安全会话。这是我在研究时采用的一段代码。 不幸的是,重定向头时,会话没有加载。 有人能解释一下发生了什么事并给我指出正确的方向吗 这是密码 if(!isset($_SESSION)) { $dir_path = ini_get("session.save_path") . DIRECTORY_SEPARATOR . _SESSION_DIR; if(!is_dir($dir_path)) mkdir($dir_path);

我试图在这里使用安全会话。这是我在研究时采用的一段代码。 不幸的是,重定向头时,会话没有加载。 有人能解释一下发生了什么事并给我指出正确的方向吗

这是密码

if(!isset($_SESSION))
    {
        $dir_path = ini_get("session.save_path") . DIRECTORY_SEPARATOR . _SESSION_DIR;
        if(!is_dir($dir_path)) mkdir($dir_path);

        if( ini_get('session.use_trans_sid') == true) {
            ini_set('url_rewriter.tags' , '');
            ini_set('session.use_trans_sid' , false);
        }

        $lifetime = 60 * 60 * 24 * 1;
        //$lifetime = 60;
        ini_set('session.gc_maxlifetime' , $lifetime);
        ini_set('session.gc_divisor' , '1');
        ini_set('session.gc_probability' , '1');
        ini_set('session.cookie_lifetime' , '0');
        ini_set('session.save_path', $dir_path);
        session_name(_SESSION_NAME);
        session_start();

如果您希望检索在上一页上创建的会话,则必须确保在编写会话后使用了会话_write _close。然后,为了在后续页面上使用它们,您必须先调用session_start,然后才能使用它们。您可以在

检查每页会话id的值上查看更多信息。如果更改,那么您将丢失会话cookie,并且每次都会得到一个新的/新的/空的会话。可能是由于cookie_路径设置不正确,或者客户端存在cookie设置问题。是的,当前正在使用xampp在本地计算机上工作,是的,每次都会更改会话_id。cookie是在所需路径(即xampp/tmp/cookie_名称)处创建的。在重定向会话之前,它可以正常工作。真的很想知道,知道我错过了什么感觉不对。当脚本终止时,PHP自动关闭/保存会话数据。session_write_close仅对长时间运行的脚本是必需的,您需要释放会话文件上的锁。这就是session_start的全部要点:在任何输出之前调用一次,其余的由PHP完成。只要会话cookie设置正常工作,您就不必执行任何其他操作来保留会话数据。您在脚本结束时的会话是正确的,但在会话写入关闭前发生重定向时,我读取并体验了未保存的会话。在php.net上的评论中也提到了这一点。我并不是说你错了@MarcB,但我认为在这种情况下,这会解决问题。