正在取消设置PHP会话变量

正在取消设置PHP会话变量,php,variables,session,login,Php,Variables,Session,Login,我已经创建了一个登录名,它将会话变量设置为我从数据库获得的用户id。在用户输入详细信息后单击login之后,我将他们重定向到主页,该主页使用session变量获取用户id以进行显示。我遇到的问题是会话变量。这就是我的代码的样子(简化): 这是设置会话变量的代码片段,我已经测试了一个它可以工作的程序。下一段代码是从主页(home.php)调用的函数。用于检查用户是否登录 function logged_in(){ return isset($_SESSION['user_id']); }

我已经创建了一个登录名,它将会话变量设置为我从数据库获得的用户id。在用户输入详细信息后单击login之后,我将他们重定向到主页,该主页使用session变量获取用户id以进行显示。我遇到的问题是会话变量。这就是我的代码的样子(简化):

这是设置会话变量的代码片段,我已经测试了一个它可以工作的程序。下一段代码是从主页(home.php)调用的函数。用于检查用户是否登录

function logged_in(){
    return isset($_SESSION['user_id']);
}
然后,我使用这个if语句根据用户是否登录来执行不同的显示,再次简化了它

if( logged_in() === true ){
    $session_user_id = $_SESSION['user'];

    print "logged in";
}

else{
    print "not logged in";
}

问题似乎在于if语句,因为它将会话变量设置为空数组。如果我打印出会话变量,就会得到Array()。我已经在每一页上开始了一个会话。

这里似乎有两个问题

首先是数组键;一种情况下使用的是
user
,另一种情况下使用的是
user\u id

二是投机性,;您说过它会导致一个空数组(我假设您有
var\u dump($\u SESSION)
或类似的方法来确认这一点?)。如果是这样,则表明您尚未开始该课程。您需要调用
session_start()
以访问会话数据


每次脚本运行时,都需要访问存储在服务器上的会话,这就是您运行脚本的原因。较长的版本是,它在存储会话数据的本地文件上获得一个锁(导致所谓的锁定)。因此,您可能(对于较长时间运行的脚本和/或性能)希望在完成
$\u会话时调用超全局。

$\u会话['user\u id']
$\u会话['user']
的用户之间似乎存在不匹配。问题似乎是数组键不正确。如果检查会话变量中用户id的值,则值是正确的。当我使用logged_in()函数并使用正确的密钥用户id时,会话变量被设置为空var_dump(session_status())?如果前者为
null
'
,而后者不是2,则您没有调用
会话启动()。见后。
if( logged_in() === true ){
    $session_user_id = $_SESSION['user'];

    print "logged in";
}

else{
    print "not logged in";
}