PHP会话变量没有结转

时间:2012-05-18 05:54:26

标签: php

我有一个controller / 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];
}


?>

2 个答案:

答案 0 :(得分:2)

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

<强>被修改 您没有为这些会话变量设置任何内容,这就是它给出该错误的原因

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

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

答案 1 :(得分:1)

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

所以,你必须忘记session_start()