无法在第二个函数

时间:2015-07-11 07:45:53

标签: php codeigniter session

我遇到了一些会话问题。

在第一个函数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'];

}

3 个答案:

答案 0 :(得分:0)

您只能有一个会话,它应位于文件的顶部。

答案 1 :(得分: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

答案 2 :(得分:0)

首先,不需要在'remove()'函数中再次声明'session'。

2设置您必须写的会话内容:

$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;

并且

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

获取会话数据+保存到变量