【问题标题】:codeigniter session is not workingcodeigniter 会话不工作
【发布时间】:2013-06-03 04:39:17
【问题描述】:

我正在使用 codeigniter 我想通过如下查询来显示从数据库中获取的一些数据。

$this->db->where('sex !=', $iam);
  $this->db->where('sex', $searching_for);
  $this->db->where('Age >=' , $age_from);
  $this->db->where('Age <=' , $age_to);
 if($Province != 1){
     $this->db->where('Province' , $Province);
 }

        $this->db->limit($limit, $start);
        $query = $this->db->get("members");
        return $query->result_array();

$iam,$searching_for, $age, $age_to 由用户提供,我使用会话数组从控制器文件中传递它们。

    $search_info=array(
    'iam'           =>  $this->input->post('iam'),
    'searching_for' =>  $this->input->post('searching_for'),
    'age_from'      =>  $this->input->post('age_from'),
    'age_to'        =>  $this->input->post('age_to'),
    'country'       =>  $this->input->post('country'),
    'Province'      =>  $this->input->post('Province')
);

$this->session->set_userdata(array("search_info" => $search_info));

我的分页功能也在控制器文件中,是这样的

public function pagination(){
        $this->load->library("pagination");
        $config = array();
    $config["base_url"] = base_url() . "controller_search/index";

    $this->load->model('models_search');
    $config["total_rows"] = $this->models_search->search();

    $config["per_page"] = 1;
    $config["uri_segment"] = 3;
    $this->pagination->initialize($config);
    //$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;3
    //echo $this->uri->segment(3);
    //echo ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;3;
    $page = $this->uri->segment(3);
    $data["search_result"] = $this->models_search->fetch_categories($config["per_page"], $page);
    $data["links"] = $this->pagination->create_links();
    $data['error'] = '';
    $this->load->view('home_header.php');
    $this->load->view('search/search_result',$data);
}

但问题是,当我单击页码时它没有显示任何内容,我尝试评论查询中的所有 where 线索,然后它起作用了。
所以我认为错误在会话数组中,我尝试var_dump session_all 所以它显示array(0){}

在这种情况下有人可以帮助我吗?

【问题讨论】:

  • var_dump( $this-&gt;session-&gt;all_userdata()) 输出什么?是空白吗?
  • 第一次设置会话,但是当导航到其他页面或同一页面时,会话被破坏。对吗?
  • 在您的控制器中是否包含$this-&gt;load-&gt;library('session');,除非您正在自动加载会话。
  • $this-&gt;session-&gt;set_userdata(array("search_info" =&gt; $search_info));下方添加$this-&gt;session-&gt;set_userdata('dummy', 'somevalue');并检查dummy会话是否存在。
  • 因此很明显在您的控制器中设置会话没有问题。您正在设置通过POST 获得的会话值。因此,第一次包含详细信息时,会使用这些详细信息设置会话变量,但第二次在 post 变量中没有详细信息时,会话变量会被空值覆盖。

标签: php codeigniter session pagination


【解决方案1】:

使用此代码:

$this->session->set_userdata("search_info" => $search_info);

设置会话的代码

【讨论】:

    【解决方案2】:

    通过此代码设置您的会话数据:

    $this->session->set_userdata("sess_data", "mydata");
    

    通过此代码检索此会话数据:

    $this->session->userdata("sess_data");
    

    【讨论】:

    • “你的”,而不是“你的”。此处特别禁止聊天发言。
    【解决方案3】:

    我认为您访问会话数组的方式错误。

    代替

    $iam 
    

    使用

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

    或者

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

    哪种方法适合你的情况......

    【讨论】:

      【解决方案4】:

      我只是将所有发布的值放入索引函数中的变量中,然后将它们放入会话数组中

       $search_info=array(
                  'iam'           =>  $iam,
                  'searching_for' =>  $searching_for,
                  'age_from'      =>  $age_from,
                  'age_to'        =>  $age_to,
                  'country'       =>  $country,
                  'Province'      =>  $Province
              );
      
             $this->session->set_userdata(array("search_info" => $search_info)); 
      

      然后我将它重定向到分页功能。然后它工作得很好。在我移向页面时覆盖帖子项目和会话数组之前。现在由于重定向它被停止了。正如我所想。无论如何它现在工作得很好 比你每个人都帮助我。 特别是约翰布莱克先生,非常感谢您,先生。

      【讨论】:

        【解决方案5】:

        检查你是否加载了会话库。如果没有加载到你的控制器中

        $this->load->library('session')
        

        或者您可以在 config/autoload.php 库中自动加载会话

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-09-13
          • 1970-01-01
          • 2013-08-29
          • 2018-11-22
          • 2012-03-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多