使用钩子检查用户是否已登录/会话[Codeigniter]

时间:2018-09-14 10:15:42

标签: php codeigniter

hooks.php

$hook['post_controller_constructor'] = function()
{
    $this->CI = & get_instance();

    $session = $this->CI->session->userdata('user_id');
    if( $session == TRUE )
    {
       $this->CI->load->view('admin/dashboard');
        echo "<script>console.log('true')</script>";
    }

    if( $session == FALSE )
    {
        $this->CI->load->view('public/articles_list');
        echo "<script>console.log('false')</script>";
    }

};

(基本控制器)MY_controller.php

class MY_Controller extends CI_Controller
    {
        public function __construct()
        {
            parent::__construct();
            // if (!($this->session->userdata('user_id'))) {
            //  return redirect('login');
            // }
            $this->load->model('articles_model');
        }
    }

(控制器)admin.php

class Admin extends MY_Controller
    {
        public function dashboard()
        {
            $this->load->helper('form');
            $this->load->library('pagination');
            $config = [
                'base_url' => base_url('admin/dashboard'),
                'per_page' => 5,
                'total_rows' => $this->articles_model->num_rows(),
                'full_tag_open' => '<ul class="pagination">',
                'full_tag_close' => '</ul>',
                'next_tag_open' => '<li class="page-item">',
                'next_tag_close' => '</li>',
                'prev_tag_open' => '<li class="page-item">',
                'prev_tag_close' => '</li>',
                'num_tag_open' => '<li class="page-item">',
                'num_tag_close' => '</li>',
                'cur_tag_open' => '<li class="page-item active"><a class="page-link">',
                'cur_tag_close' => '</a></li>',
                'attributes' => [
                    'class' => 'page-link'
                ]
            ];
            $this->pagination->initialize($config);
            $articles = $this->articles_model->get_articles($config['per_page'],$this->uri->segment(3));
            $this->load->view('admin/dashboard',['articles'=>$articles]);
        }

(控制器)login.php

class Login extends CI_Controller
{
    public function index()
    {
        // if ($this->session->userdata('user_id')) {
        //  return redirect('admin/dashboard');
        // }
        $this->load->helper('form');
        $this->load->view('public/admin_login.php');
    }

我的问题是,在我使用基本控制器检查会话之前,它工作正常,但是现在我想使用钩子,以便每当任何控制器收到请求时,它都会检查钩子以了解用户是否已登录并重定向到任何页面。

问题是它没有重定向到页面,我尝试过$this->CI->load->view(),但它仍停留在同一页面上,没有任何反应,我也尝试过redirect(),但是它卡在了某个循环上,给了{{1} }错误

0 个答案:

没有答案
相关问题