我遇到了一些会话问题。
在第一个函数queue
中,我保存了会话entries
我可以从这个函数中打印出来,所以我可以看到它被正确设置了。
在函数remove
中,我尝试将此条目会话保存到变量中,我收到entries
为undefined 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 :(得分: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
答案 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');
获取会话数据+保存到变量