$ _SESSION变量没有设置,直到我调用另一个函数?

bnu*_*mak 1 php session isset function-call

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

我的问题在以下代码中:

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

 ...Rest of Page...
Run Code Online (Sandbox Code Playgroud)

由于某种原因,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;
}
Run Code Online (Sandbox Code Playgroud)

标头字符串设置为lheader.html,因此isset($ _ SESSION ['logged'])在此处返回true。有谁知道为什么?

提前致谢!

Nam*_*mbi 5

你需要把 session_start();

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