如何保存会话值并将其从控制器的一个功能传递到另一个功能

时间:2017-02-07 08:04:14

标签: php codeigniter session routing

从我的控制器'login_user'的一个函数向另一个函数'dashboard'发送一个值,该值保存在一个会话中,但当我使用uri路由来获取它时我无法访问该值是代码< / p>

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);
    } 
}

3 个答案:

答案 0 :(得分:0)

如果两个函数“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
}

答案 1 :(得分:0)

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

$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);

这会传递模型中的数据,你就完成了。

答案 2 :(得分:-1)

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

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

对于设置会话,请使用此

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

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

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