重複の可能性:
セッションコードイグナイターからのビューでユーザーをエコー
すべてのコントローラーでユーザーを定義して保存し、それをビューに渡したくありません。これが私のコントローラーです:
ログイン コントローラ:
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');
}
}
}
?>
上記のコントローラーを拡張した単純な 1 つのメンバー コントローラーを次に示します。ここでは、インデックス関数で、ユーザー名を格納してから、やりたくないビューに渡します。
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);
}