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,我会调查这个…这不是同一个问题吗?这不是同一个问题吗?