2013-03-19 73 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." 
} 

請記住,這只是爲您發佈您的代碼示例的解決方案。爲了正確地做到這一點,我建議以下變化:

  • 創建處理認證
  • 創建該類的方法來確定用戶是否登錄或不
  • 創建方法返回一個類當前登錄的用戶。

這將使您的代碼在未來更具可擴展性,可重用性和更易於遵循。

祝你好運。

相關問題