2015-07-11 37 views
0

我遇到了一些會話問題。無法獲取第二個函數中的會話內容

在第一個功能queue,我保存會話entries我可以從這個函數打印出來,所以我可以看到它被正確設置。

在功能remove,我會努力保留這個條目會變成一個變量,我得到的錯誤entriesundefined index

有沒有人有任何想法我在做什麼錯在這裏?

function queue() 
{ 
    session_start(); 

    $status = 'Awaiting Moderation'; 
    $channel = '1'; 

    // Find all entries in 'Gallery' channel with 'Awaiting Moderation' status 
    $this->EE->db->select('entry_id') 
       ->from('exp_channel_titles') 
       ->where('status', $status) 
       ->where('channel_id', $channel); 

    $query = $this->EE->db->get();  
    $entries = $query->result_array(); 

    $entries_count = count($entries); 

    // Set count 
    $_SESSION['entries_count'] = $entries_count;  

    // If entries found 
    if ($entries_count > 0) 
    { 
     // Flatten entry ids array 
     $entriesFlat = array(); 
     array_walk_recursive($entries, function($a) use (&$entriesFlat) { $entriesFlat[] = $a; }); 

     $entriesSerial = serialize($entriesFlat); 

     // Save in session 
     $_SESSION['entries'] = $entriesSerial; 
    } 

} 

function remove() 
{ 
    session_start(); 

    // Get session data + save into variable 
    $entries = $_SESSION['entries']; 

} 
+0

你應該在第一線使用session_start()。 –

+0

嗨。我在每個函數的每一行使用session_start(),是不是? – ccdavies

+0

在每個腳本的頂部(不在函數內)調用session_start()應該就足夠了。 – davids3

回答

0

您只能有一個會話,它應該在您的文件的頂部。

0

既然你使用codeigniter爲什麼不使用codeigniter會話,然後自動加載庫,然後你可以做下面的代碼。

$this->session->set_userdata('entries_count', $entries_count); 

獲取數據

$this->session->userdata('entries_count'); 

而且

$this->session->set_userdata('entries', $entriesSerial); 

獲取數據

$this->session->userdata('entries'); 

// Example 

if ($this->session->userdata('entries') > 0) 
{ 

用戶指南

CI2 http://www.codeigniter.com/userguide2/libraries/sessions.html

CI3:http://www.codeigniter.com/user_guide/libraries/sessions.html

http://www.codeigniter.com/docs

0

所有的第一次,有沒有需要在 '刪除()' 函數聲明 '會話' 再次..

2ndly設置會話內容,你必須寫:

$this->session->set_userdata('entries_count', $entries_count); 
在會議

$_SESSION['entries'] = $entriesSerial; 

保存它,而不是

你已經寫要獲得會議內容:

$entries_count = $this->session->userdata('entries_count'); 

獲取會話數據+保存到變量

然後,你可以寫這樣的條件:

if ($entries_count > 0) { 

} 

同樣,你寫

$this->session->set_userdata('entries', $entriesSerial); 

要在會話保存,而不是

$_SESSION['entries'] = $entriesSerial; 

And

$entries = $this->session->userdata('entries'); 

至獲取會話數據+保存到變量