2013-12-14 53 views
1

我有一個非常令人困惑的問題,即在我的文件頂部,我調用一個外部函數「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 [ '記錄'])是返回false這裏,但真正在sessionTest:

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; 
} 

headertring被設置爲lheader.html,所以isset($ _ SESSION ['logged'])在這裏返回true。有沒有人有一個想法,爲什麼?

在此先感謝!

+0

爲什麼要叫'在session_start()'的函數裏面? –

回答

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); ?> 
相關問題