【问题标题】:check session in another controller in Codeigniter在 Codeigniter 的另一个控制器中检查会话
【发布时间】:2015-06-03 12:30:39
【问题描述】:

用户登录后,我设置了变量is_logged_in=true,但在其他一些控制器中,如何检查is_logged_in 在codeigniter 中是否为真? 这是我的登录代码:

public login_con extends CI_Controller
{
    public function login()
    {
        is_logged_in=true;
    }
}

我想在另一个控制器中检查这个is_logged_in,那么我该如何编写代码呢?

【问题讨论】:

  • 也许放在会话中?

标签: php codeigniter


【解决方案1】:

Session 是最好的解决方案。你可以阅读codeignitorsession

// set value in session 
$this->session->set_userdata('is_logged_in', true); 

进入其他控制器

$is_logged_in  = $this->session->userdata('is_logged_in'); 

还请确保您已加载会话库。

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

【讨论】:

    【解决方案2】:

    首先自动加载applications/config/autoload.php,添加会话库

    $autoload['libraries'] = array('session');
    

    这将包括每个页面上的会话。

    现在你的控制器文件

    控制器1

        public login_con extends CI_Controller
        {
            public function login()
            {
               //here you set session like that
               $data['is_logged_in'] = TRUE;
               $this->session->set_userdata($data);
            }
        }
    

    在这里,您可以在其他控制器上获得 is_logged_in 会话

    控制器2

    public your_con extends CI_Controller
            {
                public function your_function()
                {
                   //here you get session like that
                  if($this->session->userdata("is_logged_in"))
                    {
                      // your code here
                     }
                }
            }
    

    【讨论】:

    • #saty thx for this..and 进一步澄清我如何使用基本控制器来实现此功能?..
    • @CroosPraveen 基本控制器是什么意思??
    • 你必须在里面创建一个通用控制器,比如application/core/MY_Controller.php。这是基本控制器。这应该扩展 CI_Controller 并且您的控制器文件应该扩展 MY_Controller.php。因此,通过使用这种方法,您可以在 MY_Controller.php 中定义公共变量,并在不使用会话的情况下访问子控制器中的这些变量。
    猜你喜欢
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 2014-04-13
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    相关资源
    最近更新 更多