0

我有一个控制器/controller.php 文件,它启动一个会话并设置一些会话变量。然后我“包含”一个 model/model.php 文件并调用一个函数来加载它。

当我尝试在 model.php 文件中使用 controller.php 文件中的会话变量时,我得到了很多:未定义的变量:_SESSION 错误。

下面是在 controller.php 文件中设置会话变量的示例:

$_SESSION['userName'] = 'some data'

在 model.php 文件中,我试图通过以下代码检索它:

print($_SESSION['userName']);

我究竟做错了什么?

编辑

我的 controller.php 文件代码:

<?PHP

session_start();

if (isset($_POST['Login'])) {

$_SESSION['pointsForQuestion'] = '1';
$_SESSION['userName'] = $_POST['txtUsername'];

if(!is_file($_SESSION['userName'].".txt"))
{
    writeUserDetails($_SESSION['userName'],"1","0");
    $_SESSION['currentLevel'] = "1";
    $_SESSION['score'] = "0";
} else {
    readUserDetails($_SESSION['userName']);
}

print('logged in');

include('../model/model.php');
print page_load();

}   

function writeUserDetails($username,$level,$score) {
    $fh = fopen($username.".txt", 'w') or die("can't open file");
    fwrite($fh, $level.",".$score);
    fclose($fh);
}

function readUserDetails($username) {
    $userDetails = explode(',', file_get_contents($username.".txt"));
    $_SESSION['currentLevel'] = $userDetails[0];
    $_SESSION['score'] = $userDetails[1];
}


?>
4

2 回答 2

2

在顶部定义会话变量之前启动您的会话,即session_start();

已编辑 您没有为这些会话变量设置任何内容,这就是它给出该错误的原因

$_SESSION['userName'];
$_SESSION['currentLevel'];
$_SESSION['score'];

如果您不想设置任何内容,您可以删除这些会话变量...

于 2012-05-18T05:56:31.537 回答
1

$_SESSION是一个在所有范围内都可用的超全局。

所以,你一定忘记了session_start()

于 2012-05-18T05:56:46.863 回答