正在取消设置PHP会话变量
我已经创建了一个登录名,它将会话变量设置为我从数据库获得的用户id。在用户输入详细信息后单击login之后,我将他们重定向到主页,该主页使用session变量获取用户id以进行显示。我遇到的问题是会话变量。这就是我的代码的样子(简化): 这是设置会话变量的代码片段,我已经测试了一个它可以工作的程序。下一段代码是从主页(home.php)调用的函数。用于检查用户是否登录正在取消设置PHP会话变量,php,variables,session,login,Php,Variables,Session,Login,我已经创建了一个登录名,它将会话变量设置为我从数据库获得的用户id。在用户输入详细信息后单击login之后,我将他们重定向到主页,该主页使用session变量获取用户id以进行显示。我遇到的问题是会话变量。这就是我的代码的样子(简化): 这是设置会话变量的代码片段,我已经测试了一个它可以工作的程序。下一段代码是从主页(home.php)调用的函数。用于检查用户是否登录 function logged_in(){ return isset($_SESSION['user_id']); }
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时,会话变量被设置为空如果您运行的是PHP5.4+var_dump(session_status())代码>?如果前者为null
或'
,而后者不是2,则您没有调用会话启动()。见后。
if( logged_in() === true ){
$session_user_id = $_SESSION['user'];
print "logged in";
}
else{
print "not logged in";
}