【问题标题】:how to save session value and pass it from one function of controller to another function如何保存会话值并将其从控制器的一个功能传递到另一个功能
【发布时间】:2017-02-07 08:04:14
【问题描述】:

将值从我的控制器“login_user”的一个功能发送到另一个功能“仪表板”该值保存在会话中,但当我使用 uri 路由获取它时我无法访问该值这里是代码

public function login_user(){
    //$cache=$this->input->post();
    $this->form_validation->set_rules('email','Email','required');
    $this->form_validation->set_rules('password', 'Password', 'trim|required');
    $this->form_validation->set_error_delimiters("<p class='text-danger'>","</p>");
    if($this->form_validation->run()){
        $email=$this->input->post('email');
        $password=$this->input->post('password');
        $this->load->model('Pmodel');
        $login_data=$this->Pmodel->login_model($email,$password);
        print_r($login_data);
        if($login_data){
            $data= $this->session->set_userdata('data', $login_data );
            var_dump($data);   
            return redirect(base_url()."user/dashboard".$data);
            //$this->load->view('dashboard/dashboard',['data'=>$data]);
        }else{
            $this->session->set_flashdata('Login_failed','Invalid Username/Password.');
            return redirect('user/login_invalid');
            //echo "string";
        }
    }else{      
        return redirect('user/login_invalid');
    }
}

还有一个功能

public function dashboard(){    
    if ($this->session->userdata('data') === NULL){
        echo "hello";
        return redirect('user/login_invalid');
    }else{
        $login_data = $this->uri->segment(3); 
        var_dump($login_data);
        $this->load->model('Pmodel');
        $email=$this->Pmodel->select_model('$email');
        $this->load->view('dashboard/dashboard',$email);
    } 
}

【问题讨论】:

    标签: php codeigniter session routing


    【解决方案1】:

    如果尚未激活,您必须为此加载会话库

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

    设置会话使用这个

    $this->session->set_userdata('session_name', 'data');
    

    要检索用户数据,请使用此

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

    【讨论】:

      【解决方案2】:

      如果“login_user”和“dashboard”两个函数在同一个控制器中,只需调用下面的函数而不是重定向。

      $data= $this->session->set_userdata('data', $login_data );
      var_dump($data);   
      return redirect(base_url()."user/dashboard".$data);
      

      用简单的类函数调用替换上面的重定向:

      $data= $this->session->set_userdata('data', $login_data );
      $this->dashboard($data);
      

      仪表板函数体现在可能看起来像这样。

      function dashboard($data=null){
        // your code here
      }
      

      【讨论】:

        【解决方案3】:

        尝试了几个小时后,我终于找到了一种将值从一个控制器传递到另一个控制器的方法,这里是代码

        $this->session->set_userdata( $login_data );
        
                $data=$this->session->all_userdata($login_data);
        
                return redirect(base_url()."user/dashboard/?data=".json_encode($data));
        

        现在在仪表板功能上只需使用它来获取数据

         $data=json_decode($_GET['data']);
          $this->load->model('Pmodel'); 
         $email['data']=$this->Pmodel->select_model($data);
           $this->load->view('dashboard/dashboard',$email);
        

        这将传递模型中的数据,您就完成了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-02-02
          • 2016-09-13
          • 1970-01-01
          • 2011-08-30
          • 2019-01-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多