Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从会话回显用户名,而不在每个控制器中定义_Php_Codeigniter_Session_Session Variables - Fatal编程技术网

Php 从会话回显用户名,而不在每个控制器中定义

Php 从会话回显用户名,而不在每个控制器中定义,php,codeigniter,session,session-variables,Php,Codeigniter,Session,Session Variables,可能重复: 我不想在每个控制器中定义和存储用户,然后将其传递给视图。 这是我的控制器: class MY_Controller extends CI_Controller{ function __construct(){ parent::__construct(); $this->is_logged_in(); } function dashboard_area(){ $data['main_content'] = '

可能重复:

我不想在每个控制器中定义和存储用户,然后将其传递给视图。 这是我的控制器:

   class MY_Controller extends CI_Controller{
        function __construct(){
    parent::__construct();
    $this->is_logged_in();

    }   
    function dashboard_area(){
    $data['main_content'] = 'dashboardView';
    $this->load->view('dashboardTemplate/template', $data);         
    }

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

    if(!isset($is_logged_in) || $is_logged_in != true)
    {
        echo 'You don\'t have permission to access this page.';
        redirect('loginController');
    }
}


           }
?>
登录控制器:

class LoginController extends CI_Controller {
    function index(){       
        $new['main_content'] = 'loginView';
        $this->load->view('loginTemplate/template', $new);          
    }

    function verifyUser(){

    //getting parameters from view 
    $data = array(
            'username' => $this->input->post('username'),
            'password' => $this->input->post('password')
    );      

    $this->load->model('loginModel'); 
    $query = $this->loginModel->validate($data);

    if ($query){             
        //if the user c validated data variable is created becx we want to put username in session

            $data = array(
                'username' => $this->input->post('username'),
                 'is_logged_in' => true 
            );

           $this->session->set_userdata($data);
           redirect('sessionController/dashboard_area');
    }else{
        $this->index();
    }
}
function logout()
{
    $this->session->sess_destroy();
    $this->index();
}
}



?>
我的控制器,我已经存储在核心文件夹中,所以现在每个控制器都扩展了这个控制器。我认为可以自定义此控制器,以便在扩展此控制器的每个视图页面中访问用户:

   class MY_Controller extends CI_Controller{
        function __construct(){
    parent::__construct();
    $this->is_logged_in();

    }   
    function dashboard_area(){
    $data['main_content'] = 'dashboardView';
    $this->load->view('dashboardTemplate/template', $data);         
    }

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

    if(!isset($is_logged_in) || $is_logged_in != true)
    {
        echo 'You don\'t have permission to access this page.';
        redirect('loginController');
    }
}


           }
?>
下面是我的简单单成员控制器,它扩展了上述控制器: 在索引函数中,我存储用户名,然后将其传递到视图中,我不想这样做:

     class CategoryController extends MY_Controller {
   function index(){         
    $data['main_content'] = 'categoryView';         
    $username= $this->session->userdata('username');
    $data['username']=$username;
    $this->load->view('dashboardTemplate/template',$data);
      }

您只需在视图中调用
$this->session->userdata('username')

它存储在会话中,因此不必从控制器将其传递给视图

根据评论更新
如果您希望根据基本控制器(例如用户)加载视图,我将使用,并将模板设置为在基本控制器的构造中使用

例如(使用这个)


您只需在视图中调用
$this->session->userdata('username')

它存储在会话中,因此不必从控制器将其传递给视图

根据评论更新
如果您希望根据基本控制器(例如用户)加载视图,我将使用,并将模板设置为在基本控制器的构造中使用

例如(使用这个)


谢谢,这也是古德。但我想要的是,如果我定义了自己的控制器,称为my_控制器,那会怎么样。。因此,每个扩展此控制器的人都是为管理员定义的,并定义另一个为用户定义的控制器。。因此,扩展该控制器的控制器将加载用户视图。。有可能吗。。。我不想在任何地方都进行检查,比如if user=admin bla bla bla blathanks,我将对此进行调查…谢谢,这也是gud…但我想要的是,如果我定义自己的控制器,称为my_controller。。因此,每个扩展此控制器的人都是为管理员定义的,并定义另一个为用户定义的控制器。。因此,扩展该控制器的控制器将加载用户视图。。有可能吗。。。我不想在每个地方都做检查,比如如果user=admin bla bla bla blathanks,我会调查这个…这不是同一个问题吗?这不是同一个问题吗?