在具有相同类的函数内部调用函数并在codeigniter中重定向

时间:2017-07-06 12:44:26

标签: php codeigniter redirect

我正在使用CodeIgniter处理登录和搜索功能。

  

我到底在做什么?

当用户在搜索表单中搜索某些内容并提交该表单时,我会检查用户是否已登录,然后将直接显示结果&如果用户未登录,则会将用户重定向到登录页面,并将搜索数据保存在session search_session_data

我有一个控制器,可以重定向用户的会话。如果用户直接进入登录页面,则登录后用户将被重定向到仪表板。但如果用户来自搜索页面,则用户在登录后会被重定向到搜索结果页面。

我已经在代码中提到了注释中的问题。

这是控制器:

public function get_the_search_result() {

        $search_session_data = $this->session->userdata('search_session_data');
        $this->load->model ('my_model');
        $result_data = $this->my_model->find_data_regarding_search_criteria($search_session_data);

        $this->load->view ('app/app_statch_result',['result_data' => $result_data,]);
}


public function login_function() {
    //necessary  login code

    if ($this->session->userdata('search_session_data')) {

        //Here I want the if `search_session_data` available in session then 
        // user goest to `get_the_search_result` and view the
         //'app/app_statch_result` but it is not working.

        $this->get_the_search_result();
    } else {
        return redirect('dashboard');
    }

}
  

那么如何将用户重定向到app_statch_result   login_function功能?

任何有关改进的建议均适用。谢谢

1 个答案:

答案 0 :(得分:0)

如果我是你,我会做以下事情:

  1. 创建登录控制器或更好的库,并将所有登录逻辑放在该类中。然后,您可以从任何控制器加载该库...例如:
  2. 样本库

        class User_controll{
            private $CI;
    
            public function __construct() {
                $this->CI = &get_instance();
            }
    
            public function check_user_data($username, $password) {
                $tmpId;
                // To increase security you can encrypt password
                $user = $this->CI->db->from('users')->where(array('username' => $username, 'password' => $password))->get()->result();
    
                if(count($user) == 1){
                    $this->CI->session->set_userdata('loggedIn', 1);
                    redirect('user_page');
                }
            }
            protected function logout() {
                $this->CI->session->set_userdata('loggedIn', 0);
            }
    
            public function isLoggedIn() {
                return $this->CI->session->userdata('loggedIn') == 1;
            }
    
        }
    

    样本控制器

        class User_page extends CI_Controller{
    
            public function __construct() {
                parent::__construct();
                $this->load->library('User_controll');
            }
            public function index() {
                if(!$this->user_controll->isLoggedIn()){
                    redirect('user_page/loginForm');
                }
                else {
                    // do whatever you want
                }
            }
        }