2014-06-08 2 views
0

나는 codeigniter를 사용하고 있습니다. 그리고 내 관리 컨트롤러 중 하나에서 관리자가 로그인 한 후에 관리자 수준을 확인하는 스위치를 만들고 싶었습니다. 레벨이 특정 숫자보다 낮 으면 특정 페이지를 볼 수 없습니다. 대신 제한 알림 페이지가로드되고 페이지로드가 중단됩니다.PHP에서 exit() 전에 내용을 표시하는 방법?

function add_user() { 

    $this->set_admin_level(9); 
    // stuffs 
} 

private function set_admin_level($level){ 

    if ($this->session->userdata('admin_level') < $level) { 

     $this->load->view("admin/restriction"); 

     exit(); 
    } 

} 

exit() 및 die()를 시도했지만 둘 다 아무 것도 표시하지 않고 전체 페이지를 삭제했습니다. if와 then redirect 메서드를 사용하여이 작업을 수행 할 수 있음을 알고 있지만 이전 방법으로 수행 할 수 있는지 알고 싶습니다.

+0

이 경우 예외가 유용합니다. exit() 대신 set_admin_level()에 예외를 던진 다음 try {} catch() {}를 사용하여 add_user에서 예외를 찾으십시오. 잡히지 않은 예외가 종료됩니다. – Devon

+0

메시지를 죽으면 안에 넣으면 어떨까요? 예를 들어'''die ('이 섹션을 볼 권한이 없음');''이 텍스트를 표시해야합니다. 이 경우 문제는 템플릿 렌더링 전에 exit 또는 die 문이 발생한다는 것입니다. – amenadiel

+0

빈 페이지에 오류 메시지 만 표시하고 싶지 않습니다. 머리글과 바닥 글 서식 파일을 함께로드하려고합니다. – reddy

답변

0

이 시도 :

private function set_admin_level($level){ 

    if ($this->session->userdata('admin_level') < $level) { 

     return $this->load->view("admin/restriction"); 

    } 
} 
+0

나는 이미 codeigniter 프로젝트에서 이것을 시도했다. – Muqito

0

다이 또는 종료 모든 PHP 처리를 중지합니다.

빈 페이지에 오류 메시지를 표시하지 않으려면 오류 메시지를 표시 할 페이지 /보기가 필요합니다. 그런 다음 사용자를 해당 페이지로 리디렉션하거나 종료하기 전에 PHP에서 페이지를 실행하십시오 (예 : $this->load->view 사용).

아무튼하지 않으면 무언가를 표시 할 수 없으므로 페이지 또는보기를 먼저 만들어야합니다.

실제 오류 페이지를 표시하기 전에 브라우저 및 검색 엔진에 정상적인 페이지가 아니라 액세스 거부 오류 페이지임을 나타내도록 HTTP 403 헤더를 설정하십시오.

관련 문제