单击分页链接,会话在编码器中已过期


onclick pagination link, session expired in codeigniter

IN控制器,

    public function index($offset = 0)
    {   
        $state= $this->input->post('state');
        $city= $this->input->post('city');
        $data = array(
                'state' => $state,
                'cities' => $city
            );
        $this->session->set_userdata($data);
        $data['active']='Search';
        $this->load->library('pagination');
        $config['base_url']= site_url()."search/index/";
        $config['total_rows']= 100;
        $config['per_page'] = 5;
        $config['num_links'] = 4;
        $config['uri_segment'] = 3;
        $config['full_tag_open'] = '<div class="pagination"><ul class="pagination">';
        $config['full_tag_close'] = '</ul></div>';

        $this->pagination->initialize($config);
        $result = $this->mymodel->search($city,$state,$offset);
        $data['pagination'] = $this->pagination->create_links();
        $data['search_result']=$this->build_result_html();
        $this->load->view('search',$data);
    }

在视图分页显示正常,但是,
点击分页链接,会话总是过期
请帮帮我吧
谢谢。

您可以使用get代替post来获取数据。这样你就不需要为它创建一个会话。

你的控制器变成了这样的东西。

public function index($offset = 0)
    {   
        $state= $this->input->get('state');
        $city= $this->input->get('city');
        $this->load->library('pagination');
        $config['base_url']= site_url()."search/index/";
        $config['total_rows']= 100;
        $config['per_page'] = 5;
        $config['num_links'] = 4;
        $config['uri_segment'] = 3;
        $config['full_tag_open'] = '<div class="pagination"><ul class="pagination">';
        $config['full_tag_close'] = '</ul></div>';

        $this->pagination->initialize($config);
        $result = $this->mymodel->search($city,$state,$offset);
        $data['pagination'] = $this->pagination->create_links();
        $data['search_result']=$this->build_result_html();
        $this->load->view('search',$data);
    }

如果你搜索你需要添加一个属性到表单method="get"

try this

  $state= $this->input->post('state');
  $city= $this->input->post('city');
if(!empty($city) && !empty($state) ){
        $this->session->set_userdata('state',$state);
         $this->session->set_userdata('cities',$city);
    }

i try on my local

$state= 'asdasd';
     $city= 'asdasd';
    if(!empty($city) && !empty($state) ){   // if its having value then set session
            $this->session->set_userdata('state',$state);
             $this->session->set_userdata('cities',$city);
        }
        print_r($this->session->userdata);

输出

Array ( [session_id] => 2c717eb44e99fb1def09af56250aa5bc [ip_address] => 127.0.0.1 [user_agent] => Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36 [last_activity] => 1396079813 [user_data] => [id] => 2 [name] => [state] => sadfasd [cities] => fddsfdf )

没有值

 $state= '';
         $city= '';
        if(!empty($city) && !empty($state) ){   // if its having no value then still value of session is same 
                $this->session->set_userdata('state',$state);
                 $this->session->set_userdata('cities',$city);
            }
            print_r($this->session->userdata);

输出

Array ( [session_id] => 2c717eb44e99fb1def09af56250aa5bc [ip_address] => 127.0.0.1 [user_agent] => Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36 [last_activity] => 1396079813 [user_data] => [id] => 2 [name] => [state] => sadfasd [cities] => fddsfdf )