PHP会话变量未结转
我有一个controller/controller.php文件,用于启动会话并设置一些会话变量。然后我“包括”一个model/model.php文件,并调用一个函数来加载它 当我尝试在model.php文件中使用controller.php文件中的会话变量时,我得到了许多:Undefined variable:\u会话错误 下面是在controller.php文件中设置会话变量的示例:PHP会话变量未结转,php,Php,我有一个controller/controller.php文件,用于启动会话并设置一些会话变量。然后我“包括”一个model/model.php文件,并调用一个函数来加载它 当我尝试在model.php文件中使用controller.php文件中的会话变量时,我得到了许多:Undefined variable:\u会话错误 下面是在controller.php文件中设置会话变量的示例: $_SESSION['userName'] = 'some data' 在model.php文件中,我试图通
$_SESSION['userName'] = 'some data'
在model.php文件中,我试图通过以下代码检索它:
print($_SESSION['userName']);
我做错了什么
编辑
my 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()代码>
已编辑
您还没有为这些会话变量设置任何内容,这就是它给出错误的原因
$_SESSION['userName'];
$_SESSION['currentLevel'];
$_SESSION['score'];
如果您不想设置任何内容,可以删除这些会话变量…在顶部定义会话变量之前启动会话,即session\u Start()代码>
已编辑
您还没有为这些会话变量设置任何内容,这就是它给出错误的原因
$_SESSION['userName'];
$_SESSION['currentLevel'];
$_SESSION['score'];
如果您不想设置任何内容,可以删除这些会话变量…$\u会话在所有作用域中都是超全局的
因此,您一定忘了会话\u start()
$\u会话在所有范围内都是超全局的
因此,您一定忘记了session\u start()
您在任何地方都执行了unset($\u session)
吗?因此,我们可以更好地帮助您向我们显示启动会话并设置会话变量的controller/controller.php文件?ThanksEDITED-添加了PHP代码。我是否需要model.php文件中的session start/resume类语句?您是否在任何地方执行了unset($\u session)
操作?因此,我们可以更好地帮助您向我们展示启动会话并设置会话变量的controller/controller.php文件?ThanksEDITED-添加了PHP代码。我是否需要在model.php文件中使用session start/resume之类的语句?我在if(isset($\u POST['Login']){语句中设置了它们,当用户首次登录时会调用该语句。您的错误只是因为没有在if(isset($\u POST['Login']){语句之前定义会话变量。这两行是否正确:include(“../model/model.php”);打印页面加载();如果没有包含(“…”)错误,例如找不到文件和页面加载函数找不到错误,则包含并调用该文件和函数是正确的。确定,重新编辑。仍然不起作用。我看不到任何错误。请帮助。我在if(isset($\u POST['Login'])中设置了它们{语句,当用户第一次登录时调用它。您的错误只是因为在此if(isset($\u POST['Login']){语句之前没有定义会话变量。.这两行正确吗:include('../model/model.php');print page_load();如果您没有include('…'))错误,如文件未找到和页面加载函数未找到错误,则包含和调用该文件和函数是正确的。确定,重新编辑。仍然不工作。我看不出任何错误。请帮助。