0

사용자 로그인 여부를 확인해야합니다.Codeigniter 구성/무한 루프의 로그인 확인 문제

컨트롤러에는 많은 기능이 있으므로 구성 기능에서 확인하십시오. 하지만 그 무한 루프를 입력합니다.

문제는 무한 루프입니다.

function __construct() 
    { 
     parent:: __construct(); 
     $this->is_logged_in(); 
     $this->clear_cache(); 
    } 



function is_logged_in() 
{ 
      if(!class_exists('CI_Session')) $this->load->library('session'); 

    if($this->session->userdata('login')) 
    { 
     $data['name'] = $this->session->userdata('username');  

    } 
    else 
    { 
     redirect(base_url('admin/login')); 
    } 

} 

모든 기능/페이지에서 $this->is_logged_in()을 사용하고 싶지 않습니다.

+0

를 통해 액세스 할 수 있도록 my_controller 그것을 사용하고, 이름에서 해제 밑줄을 추가 할 수있는 확장 클래스 만? 그것은 로그인 컨트롤러 또는 로그인 컨트롤러의 부모입니까? –

답변

0

못생긴 해킹은 다음과 같습니다

function __construct() 
{ 
    parent:: __construct(); 
    if (($this->uri->segment(2) == 'admin') && ($this->uri->segment(3) != 'login')) 
     $this->is_logged_in(); 
    $this->clear_cache(); 
} 

내가 더 나은 방법이 확신하고, 세그먼트 부분이 꺼져 자세한 내용은 http://ellislab.com/codeigniter/user-guide/libraries/uri.html를 찾아 볼 수 있습니다.

0

@Allan이

function __construct() 
{ 
    parent:: __construct(); 
    if (!($this->uri->segment(2) == 'admin' && $this->uri->segment(3) == 'login')) 
     $this->is_logged_in(); 
    $this->clear_cache(); 
} 

이 경우 상태를 확인해야합니다.

+0

@ pekyolu-maslak 조건이 충족되면 위에 시도해 보셨습니까? if (! ($ this-> uri-> segment (2) == 'admin'&& $ this-> uri-> segment (3) == 'login'))' –

0

당신은 핵심 컨트롤러를 만들 수 있습니다 다음, 당신이 application/core

class MY_Controller Extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    protected function _is_logged_in() 
    { 
     if(!class_exists('CI_Session')) $this->load->library('session'); 

     if($this->session->userdata('login')) 
     { 
     $data['name'] = $this->session->userdata('username');  

     } 
     else 
     { 


     if ($this->uri->segment(2) == 'admin' && $this->uri->segment(3) !== 'login') 
     redirect(base_url('admin/login')); 
     } 
    } 
} 

에 모든 기능이나 페이지를 사용하지 않으려면이 선택하면 다음이 좋아 연장 않습니다 : 모든 컨트롤러에 당신이 로그인을 확인하기를 원한다면, 또는 그것을 확장하는 모든 컨트롤러가 강제적으로 확인되도록 MY_Controller$this->_is_logged_in() 함수를 직접 넣을 수 있습니다. 내가 보호 사용

class admin Extends MY_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->_is_logged_in(); 
    } 
} 

class user Extends MY_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->_is_logged_in(); 
    } 
} 

당신에게 달렸어요 그래서이 URL 그것이 컨트롤러

+0

여전히 무한 루프가 될 것입니다. 내 첫 번째 해결책과 동일합니다 –

+0

@ İpekyoluMaslak ive 그것을 다시 시도했습니다 – tomexsans

+0

루프가 해결되었지만 이제 로그인없이 al 페이지에 액세스 할 수 있습니다. 통제가 없다. –