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

时间:2013-12-14 12:20:29

标签: 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...

出于某种原因,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;
}

headerstring被设置为lheader.html,因此isset($ _ SESSION ['logged'])在这里返回true。有谁知道为什么??

提前致谢!

1 个答案:

答案 0 :(得分:4)

你需要放session_start();

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