2013-01-21 14 views
0

所以這已經讓我傷了幾個小時。任何人都可以告訴我爲什麼Codeigniter會話數據函數似乎工作..但返回false?

我有設置當英寸用戶登錄,我通過jQuery發送幾個VARS,然後輸出消息sessiondata的AJAX方法(可以有一樣好是「真」 /「假」),其當它回到$ .post時,我正在發出警報。

問題是這樣的。我得到的「假」返回,雖然事情似乎工作。我的會話userdata 確實似乎設置正確。我建立了一個按鈕,可以在頁面上發出警報,並且被設置爲。我註銷並確認所有會話數據都已清除,然後重新登錄並重新設置會話數據。但是「錯誤」/「會話數據問題」消息是回到jQuery並且每次都被警告的消息。

public function setUserSessionData(){ 
    $picture = $this->input->post('picture', TRUE); 
    $email  = $this->input->post('email', TRUE); 
    $first_name = $this->input->post('first_name', TRUE); 
    $id   = $this->input->post('id', TRUE); 

    ChromePhp::log($picture.$email.$first_name.$id); // all values good 

    $newData = array(
     'loggedInStatus' => 'TRUE', 
     'picture'  => $picture, 
     'first_name'  => $first_name, 
     'id'    => $id, 
     'email'   => $email 
    ); 

      // userdata is setting correctly 
    if($this->session->set_userdata($newData)) 
    { 
     echo("Session data set"); 
    } 
    else 
    { 
     echo("PROBLEM WITH SESSION DATA"); // this is the message that is outputting 
    } 
} 

任何人都可以解釋發生了什麼?

+1

你加載了會話庫嗎? '$ this-> load-> library('session');' – edwardmp

+0

是的。它在我的autoload.php中。 –

回答

1

set_userdata()總是返回NULL

我不知道你去哪裏想set_userdata()應該返回任何東西的想法。 documentation沒有提及返回值,code itself記錄爲@return void,並且不包含return語句。

+0

那麼你是我的英雄。我只是認爲,因爲它分配了一個值,如果賦值工作,它會返回true/false。我從來沒有想過要另外檢查。哈利路亞!弗朗西斯將爲我的長子製作一個好名字。 –

0

難道你不只是在該會話數組中使用一個鍵嗎?

$newData = array(
    'loggedInStatus' => TRUE, 

// ... 

$this->session->set_userdata($newData); 

if($this->session->userdata('loggedInStatus') === TRUE){ 
    echo("Session data set"); 
}else{ 
    echo("PROBLEM WITH SESSION DATA"); 
} 
+0

不知道爲什麼你會陷入低谷,但我給了你一個機會(使用電子郵件作爲關鍵,以避免任何truthy/falsy問題),它仍然沒有奏效。我設置的數據..電子郵件設置..但它仍然返回我的「失敗消息」。 ACK! –

相關問題