2013-03-19 170 views
0
$loggedin = false; 
if ($_SESSION) { //user loggedin 
    $loggedin = true; 
    ...//get token 
} 
... 
if($loggedin){ 
echo 'Hi '.$user['name']; 
} 
else{ 
echo 'Please log in'; 
} 
... 

我想网页在我注销时会显示“请登录”。但它说“未定义的$用户变量在/ src/myproject/index第80行”。刷新页面后,它会显示“请登录”。必须在注销后刷新页面才能得到正确的代码

这里有什么问题?感谢您的帮助。

+0

你能展示更多的代码吗?我们需要查看你在哪里/如何注销并设置$ loggedin变量。 – SomeSillyName 2013-03-19 13:41:27

+0

也许美元的登录值没有得到重置在您的注销代码... – 2013-03-19 13:42:16

+0

发布代码或至少发布完整的错误消息 – 2013-03-19 14:01:06

回答

2

从我可以从你的伪代码告诉,你有某种在$ _SESSION变量说,在用户登录密钥。

为了演示,让我们假设你做这样的事情......之后用户登录后,您分配$ _SESSION ['user'] =一组用户信息。其中一个关键是'名字'。

所以,你的代码应该是这个样子

$loggedin = false; 
if (isset($_SESSION['user'])) { 
    $loggedin = true; 
} 

if ($loggedin) { 
    echo "Hi " . $_SESSION['user']['name']; 
} 
else { 
    echo "You are not logged in." 
} 

请记住,这只是为您发布您的代码示例的解决方案。为了正确地做到这一点,我建议以下变化:

  • 创建处理认证
  • 创建该类的方法来确定用户是否登录或不
  • 创建方法返回一个类当前登录的用户。

这将使您的代码在未来更具可扩展性,可重用性和更易于遵循。

祝你好运。

相关问题