简体   繁体   English

PHP会话变量未继承

[英]PHP session variables not carrying over

I have a controller/controller.php file that starts a session and sets some session variables. 我有一个controller / controller.php文件,它开始一个会话并设置一些会话变量。 I then 'include' a model/model.php file and call a function to load it. 然后,我“包含”一个model / model.php文件并调用一个函数来加载它。

When I try and use the session variables from the controller.php file in the model.php file, I am getting many: Undefined variable: _SESSION errors. 当我尝试使用model.php文件中controller.php文件中的会话变量时,我得到了很多:未定义的变量:_SESSION错误。

Here is an example of setting a session variable in the controller.php file: 这是在controller.php文件中设置会话变量的示例:

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

In the model.php file I am trying to retrieve it by this code: 在model.php文件中,我尝试通过以下代码进行检索:

print($_SESSION['userName']);

What am I doing wrong? 我究竟做错了什么?

EDIT 编辑

my controller.php file code: 我的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];
}


?>

Start your session before defining the session variables on top ie session_start(); 在定义会话变量之前先启动会话,例如session_start();

Edited You have not set anything for these session variable that's why it is giving that error 编辑您没有为这些会话变量设置任何东西,这就是为什么它会导致该错误

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

You can delete these session variables if u dont want to set anything... 如果您不想设置任何内容,则可以删除这些会话变量。

$_SESSION is a superglobal available in all scopes. $_SESSION是在所有作用域中都可用的超全局变量。

So, you must have forgotten session_start() . 因此,您必须忘记了session_start()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM