Php $会话[';userid';]在一个函数中工作,而不是在下一个函数中工作

Php $会话[';userid';]在一个函数中工作,而不是在下一个函数中工作,php,session,variables,global-variables,Php,Session,Variables,Global Variables,我不明白为什么这不起作用。首先,我有一个这样的函数,其中显示用户名: if(isset($_POST['Commit'])){ if(empty($_POST['crime'])){ echo "You didn't select the type of crime you wish to do."; }else{ (...lots of code) $name = $_SESSION['username'];` 然后我有另一个函数,其中用户名显示为空: if(isset($_PO

我不明白为什么这不起作用。首先,我有一个这样的函数,其中显示用户名:

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

if(empty($_POST['crime'])){
echo "You didn't select the type of crime you wish to do.";
}else{

   (...lots of code)

$name = $_SESSION['username'];`
然后我有另一个函数,其中用户名显示为空:

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

    (...)

if(empty($_POST['car'])){
echo "You didn't select a car.";
}else{


if($row['owner'] != $_SESSION['username']){
echo "This isn't your car.";
}else{
有很多代码我没有发布,但你们都明白了。为什么会发生这种情况?我认为$\u会话是全球性的,并且始终可用

我的主php文件如下所示:

require("php functions\page_functions.php"); 
require("php functions\gta_functions.php");

session_start();

class gtapage extends Page
{

        public function display()
        {

        displayGta();
        }
}

其中displayGta();在使用第二个函数的脚本中是否调用了我第一篇文章中的函数
$\u会话
仅在已打开会话的页面上可用。

现在更新了我的第一篇文章。主页上有一个session_start();然后它调用displayGta函数,该函数有两个调用$\u会话['username']的函数,但它只在其中一个函数中工作。
print\r($\u SESSION)
在第二个函数中显示什么?没有,但我确实收到以下警告:警告:SESSION\u start()[function.SESSION start]:无法发送会话缓存限制器-第12行
print\r($\u session)
上的C:\xamplite\htdocs\Drug Empire\php functions\gta\u functions.php:346)中已发送的标题(输出从C:\xamplite\htdocs\Drug Empire\php functions\gta\u functions.php开始),除非在
会话启动()之前执行,否则无法生成该警告。尝试将
session\u start()
移动到包含项上方。