在codeigniter中的第二页(分页)上,会话变量为空

时间:2014-02-21 18:16:59

标签: codeigniter session

我正在尝试将此数组添加到我的codeigniter会话变量中:

        $formValues = $this->input->post(NULL, TRUE);
        $fv = $this->session->set_userdata($formValues);


        if (!$this->input->post(NULL, TRUE)) {
        echo "false, post is null, get the session";

        echo "<pre>";
        print_r($fv);
        echo "</pre>";

        } else {
        echo "true, use the post";
        $formValues = $this->input->post(NULL, TRUE);
         echo "<pre>";
        print_r($formValues);
        echo "</pre>";

        } 


print_r($formValues);
<pre>
Array
(
    [addtypeid] => 
    [isnew] => 
    [orderby] => 
    [geographicareaid] => 
    [catid] => 1
    [catid2] => 
    [manufacturerid] => 
    [modelid] => 
    [yearofmanufacturing_from] => 
    [yearofmanufacturing_to] => 
    [hoursused_from] => 
    [hoursused_to] => 
    [horsepowers_from] => 
    [horsepowers_to] => 
    [price_from] => 
    [price_to] => 
    [colorid] => 
    [isdamaged] => 
)
</pre>

使用以下代码:

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

然而,我正在使用分页,在下一页上,当我尝试使用以下代码访问变量时:

print_r($formValues);

我得到一个空数组。

任何人都可以帮我这个吗?

3 个答案:

答案 0 :(得分:1)

将数组设置为会话数据后,您需要按每个项的键检索它,或者一次检索所有会话数据。

// adds the $formValues array to session data
$this->session->set_userdata($formValues);

// get a single item from the session data ($formValues['addtypeid'])
$addtypeid = $this->session->userdata('addtypeid');

// get all items from the session as an array
$formValues = $this->session->all_userdata();

获取多个特定项目的示例,但不是全部(来自评论):

$formValues = array();
$formKeys = array('addtypeid', 'isnew', /* etc... */ );
foreach ($formKeys as $key)
{
    if ($this->session->userdata($key))
    {
        $formValues[$key] = $this->session->userdata($key);
    }
}

OR

$formValues = array(
    'addtypeid' => $this->session->userdata('addtypeid'),
    'isnew' => $this->session->userdata('isnew'),
    /* etc... */
);

基于评论的最后一次编辑: 尝试将整个数组设置为单个会话项而不是单个会话项。

// setting $formValues
$this->session->set_userdata(array(
    'formValues' => $formValues
));

// getting $formValues
// the if statement it to prevent it setting $formValues to false when the session data doesn't exist
if ($this->session->set_userdata('formValues'))
{
    $formValues = $this->session->set_userdata('formValues');
}

答案 1 :(得分:0)

在使用之前,您需要检索所有会话数据项并重新构建数组,因此,例如,由于您已经通过其提供给会话的数组中的包含来保存addtypeid,因此您可以检索addtypeid用:$this->session->userdata('addtypeid');

答案 2 :(得分:0)

已经能够解决问题了。确保baseurl与您在此处指定的网址相对应。

    $this->load->library('pagination');
    $config['base_url'] =site_url('/events/viewevent/');
    $total= $this->db->get('event_tb');