Codeigniter用户代理不在注销控制器上工作

时间:2016-08-02 05:24:53

标签: codeigniter codeigniter-3

在我的MY_Controller.php中,如果会话已过期,我会在那里进行重定向。

然后重定向到注销控制器。我在logout控制器中添加了一个if语句agent->is_referral并设置了flashdata。因为它已从仪表板控制器重定向,所以应该选择if语句并设置flashdata但不是。

  

问题:如果客户从任何控制器重定向到注销,那么如何让is_referral()检测并设置flashdata消息。在is_referral() if语句内部时,不设置flashdata消息。

控制器>帐户> Logout.php

<?php

class Logout extends MY_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index() {
        $this->load->library('user_agent');

        if ($this->agent->is_referral()) {
            // Does not set the flashdata if redirected from another controller.
            $this->session->set_flashdata('warning', 'Your session has expired!');  
        }

        // Flashdata works if have it here.
        // $this->session->set_flashdata('warning', 'Your session has expired!');

        $this->customer->logout();

        redirect('/'); // redirect to login page.
    }
}

核心&gt; MY_Controller.php

<?php

class MY_Controller extends CI_Controller {

    public function __construct() {
        parent::__construct();

        if ($this->uri->segment(1)) {

            if (!$this->session->userdata('customer_id')) {

                $route = $this->uri->segment(1) .'/'. $this->uri->segment(2);

                if (isset($route)) {

                    $ignore = array(
                        'account/logout'
                    );

                    if (!in_array($route, $ignore)) {
                        redirect('account/logout');
                    }

                }

            }

        }
    }
}

控制器&gt;帐户&gt; Dashboard.php

<?php

class Dashboard extends MY_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index() {
        $this->load->view('common/header_view');
        $this->load->view('account/dashboard_view');
        $this->load->view('common/footer_view');
    }
}

0 个答案:

没有答案