【问题标题】:PHP session variables not carrying overPHP会话变量没有结转
【发布时间】:2012-05-25 17:15:58
【问题描述】:

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


?>

【问题讨论】:

  • 你在任何地方都做过unset($_SESSION)吗?
  • 所以我们可以更好地帮助您,请向我们展示启动会话并设置会话变量的 controller/controller.php 文件?谢谢
  • 已编辑 - 添加了 PHP 代码。我是否需要在 model.php 文件中添加会话开始/恢复类型的语句?

标签: php


【解决方案1】:

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

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

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

如果你不想设置任何东西,你可以删除这些会话变量...

【讨论】:

  • 我将它们设置在 if (isset($_POST['Login'])) { 语句中,当用户首次登录时调用该语句。
  • 您的错误只是因为没有在此之前定义会话变量 if (isset($_POST['Login'])) { statement ..
  • 这两行是否正确:include('../model/model.php');打印 page_load();
  • 如果你没有 include('...') 错误,比如文件未找到和 page_load 函数未找到错误,那么包含和调用该文件和函数是正确的
  • 好的,重新编辑。还是不行。我看没有错。请帮忙。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2012-07-13
    • 2012-06-12
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 2012-08-03
    • 2013-05-01
    • 2011-06-09
    相关资源
    最近更新 更多