在调用另一个函数之前,不会设置$_SESSION变量


$_SESSION Variable not set until I call another function?

我有一个非常令人困惑的问题,即在我的文件顶部,我调用了一个外部函数"sessionTest",它测试各种会话条件并返回正确的头字符串。这是必要的,因为我有两个不同的头:一个用于登录用户,另一个用于非用户/注销用户。

我的问题在于以下代码:

<?php include './session.php';
  include './db.php';
  $con = genCon();
  if(isset($_SESSION['logged'])){
    echo "Logged: ".$_SESSION['logged'];    
  }
  $headerstring = sessionTest($con); ?>
 ...Rest of Page...

出于某种原因,isset($_SESSION['logged'])在此处返回false,但在sessionTest:中返回true

function sessionTest($con){
    session_start();
    $fingerprint = md5($_SERVER['HTTP_USER_AGENT'].session_id());
    if(isset($_SESSION['user']) && isset($_SESSION['logged']) && $_SESSION['logged']==TRUE){
        $dbFingerprint = qGetUserFingerprint($_SESSION['user'],$con);
        $fpMatch = ($dbFingerprint == $fingerprint);
        //LEAVING OUT NON RELEVANT CODE     
        $headerstring = './lheader.html';
    }else{
        $headerstring = './header.html';
    }
    return $headerstring;
}

headersrring被设置为lheader.html,因此isset($_SESSION['logged'])在此处返回true。有人知道为什么吗??

提前感谢!

您需要放置session_start();

 <?php 
   -> session_start();
     include './session.php';
      include './db.php';
      $con = genCon();
      if(isset($_SESSION['logged'])){
        echo "Logged: ".$_SESSION['logged'];    
      }
      $headerstring = sessionTest($con); ?>