我有一个非常令人困惑的问题,即在我的文件顶部,我调用了一个外部函数"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); ?>