【问题标题】:Codeigniter 3 MY_ControllerCodeigniter 3 MY_Controller
【发布时间】:2017-01-23 01:48:18
【问题描述】:

我的 MY_Controller 上有这个,它位于我的核心文件夹中。

<?php
class MY_Controller extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
    }

    public function is_logged_in($data){    
        $session = $this->session->userdata();
        if($session['isloggedin']['username'] == ''){ 
        return isset($session); 
        }else{ 
        return FALSE;}  
    }
}
?>

我很确定我从一些教程中复制粘贴了上面的代码,但我还没有根据我的需要对其进行编辑。

我有任何问题。

所以我有一个页面控制器,负责根据登录用户的 account_type 授予对某些视图的访问权限。

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class pages extends MY_Controller {


}?>

当用户登录时,这是我的会话。

    $new_session = array( 'username' => $this->input->post('username'),
                          'email' => $this->input->post('email'),
                          'type' => $this->input->post('type'),
                          'logged_in' => TRUE);
    $this->session->set_userdata($new_session);

我如何从页面控制器调用 MY_controller 函数 is_logged_in() 或者“扩展 MY_Controller”是否自动也调用函数 is_logged_in() 或者我必须基本上只是将它放在 __construct 中以便它自动调用函数?

另外,我如何检查用户是否已登录并查看他们的详细信息?

我是否将 session_data 从我的控制器传递到 MY_Controller?如果有,怎么做?

或者我应该在is_logged_in() 函数中添加一个$this-&gt;session-&gt;userdata(); 行吗?

附:我曾尝试使用身份验证库,但它们包含的东西太多了,我只需要一个基本的身份验证。有什么建议么?现在仍在维护。

【问题讨论】:

    标签: php codeigniter authentication


    【解决方案1】:

    您可以直接从您的页面控制器调用 is_logged_in() 函数。就像这样:

    Pages.php

    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    
    class Pages extends MY_Controller {
        function __construct() {
           parent::__construct(); // this will trigger the __construct() of MY_Controller 
        }
    
    }
    

    MY_Controller.php

    <?php
    class MY_Controller extends CI_Controller{
        public function __construct() {
          parent::__construct();
          if( $this->is_logged_in() ) {
             // do something if user is allowed to access.
          }
          else {
            // do something if user is not allowed to access
          }
    
        }
    }
    

    【讨论】:

    • 哦,扩展意味着我可以调用控制器的功能?我的印象是,每当我加载页面控制器时,它都会自动加载 MY_controller。猜我错了。
    • 我的 is_logged_in 功能好吗?因为我觉得它有很多冗余,比如 $data 参数,如果我可以只在函数本身中使用 $session->userdata(),为什么还要传递 $data 来检查真实性?还有 If 和 isset,
    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    相关资源
    最近更新 更多