$logged_info
XE에 접근하면 XE는 항상 방문자의 로그인 여부를 우선 먼저 확인하게 된다. 이때 사용하는 변수가 $is_logged 와 $logged_info 이다.
Context.class.php 파일 137라인을 참고해 보면 member 모듈의 member.controller.php 파일의 메서드(해야 할 일)를 참고하여 방문자가 로그인했는지, 로그인했다면 세션과 쿠키로 저장하고 변수 $is_logged에는 TRUE 를, $logged_info에는 회원의 기본정보를 찾아 배열 형식으로 담아 주게 된다.
방문자가 로그인 했다면 $is_logged = 'true' 가 된다.
변수 $is_logged의 활용
$is_logged는 레이아웃에서나 또는 게시판 스킨 등에서 무척 다양하게 활용할 수 있다. 예를 들어, 방문자가 로그인 했다면 보여줄 내용과 그렇지 않을때 보여줄 내용을 다르게 설정할 수도 있고 로그인 위젯에서는 로그인 폼과 회원정보 폼을 각각 다르게 출력할 수도 있다. $is_logged는 XE의 가장 기초적인 변수명이다. XE 템플릿 문법에서는 다음과 같이 사용하도록 한다.
<!--@if($is_logged)-->
당신은 로그인하신 회원입니다. // 로그인 회원에게 보여줄 내용
<!--@else-->
당신은 로그인하지 않으셨습니다. //비로그인 회원에게 보여줄 내용
<!--@end-->
결과값 : 당신은 로그인하지 않으셨습니다.
XE의 새로운 템플릿(신문법) 문법으로 사용하면 다음과 같다.
<p cond="$is_logged">당신은 로그인하신 회원입니다.</p>
<p cond="!$is_logged">당신은 로그인하지 않으셨습니다.</p>
결과값 :
당신은 로그인하지 않으셨습니다.
이 변수는 XE 전반에 걸쳐 매우 자주 사용되는 유용한 변수이다. / [스마트 로그인] 참고
$is_logged가 TRUE이면 XE는 변수 $logged_info 에 회원정보를 담는다. $logged_info에는 어떤 내용이 들어있을까?
{print_r($logged_info)}의 결과값 :
stdClass Object ( [member_srl] => 4 // $logged_info->member_srl 회원 고유번호 [user_id] => // $logged_info->user_id 아이디 [email_address] => // $logged_info->email_address 이메일 주소 [password] => // $logged_info->password 비밀번호 [email_id] => // $logged_info->email_id 이메일 아이디 [email_host] => // $logged_info->email_host 이메일 호스트 [user_name] => // $logged_info->user_name 이름 [nick_name] => // $logged_info->nick_name 닉네임 [find_account_question] => 0 XE 공홈에서 사용하는 듯...질문찾기? [find_account_answer] => XE 공홈에서 사용하는 듯...답변찾기? [homepage] => // $logged_info->homepage 홈페이지 [blog] => //$logged_info->blog 블로그 [birthday] => // $logged_info->birthday 생년월일 (YYYYMMDD) [allow_mailing] => N // $logged_info->allow_mailing 메일링 가입 [allow_message] => Y // $logged_info->allow_message 쪽지 수신 허용 [denied] => N // $logged_info->denied 사용중지 [limit_date] => // $logged_info->limit_date 제한일 [regdate] => // $logged_info->regdate 회원가입일자 [last_login] => // $logged_info->last_login 최종 로그인 일자 [change_password_date] => // $logged_info->change_password_date 비밀번호 변경일자 [is_admin] => Y // $logged_info->is_admin 관리자 확인 [description] => // $logged_info->description 설명 [list_order] => // $logged_info->list_order ??? [profile_image] => // $logged_info->profile_image 프로필 이미지 [image_name] => // $logged_info->image_name 이름 이미지 경로 [image_mark] => // $logged_info->image_mark 그룹 이미지 경로 [signature] => // $logged_info->signature 서명 [group_list] => Array ( [1] => 준회원 ) // $logged_info->group_list 소속 그룹 목록 [is_openid] => // $logged_info->is_openid 오픈아이디 [menu_list] => Array ( [dispMemberInfo] => 회원 정보 보기 [dispMemberScrappedDocument] => 스크랩 보기 [dispMemberSavedDocument] => 저장함 보기 [dispMemberOwnDocument] => 작성 글 보기 [dispCommunicationFriend] => 친구 보기 [dispCommunicationMessages] => 쪽지함 보기 ) [is_site_admin] => // $logged_info->is_site_admin 가상 사이트 관리자 확인 )
$logged_info에 접근하기
회원정보는 배열로 담겨져 있다. 따라서 각각의 요소에 접근하려면 $logged_info->속성이름 으로 접근해야 한다.
{$logged_info->nick_name}
결과값 : 로그인 후에 출력
$logged_info->group_list에 접근하기
소속 그룹($group_list)은 회원을 그룹으로 분류하고 관리하는 기능이다. XE를 설치하면 관리그룹, 정회원, 준회원이 기본으로 생성되고 추가로 생성하거나 그룹명을 변경할 수 있다. 이때 각각의 그룹에 접근하고 조건구문으로도 활용이 가능하다. $group_list는 $logged_info 배열 변수 안에 2차 배열(Array)로 존재하기 때문에 foreach 구문으로 접근하여 키($key)와 값($value)으로 나누고 조건에 맞는 속성을 찾아 출력할 내용을 결정하도록 한다.
<!--@foreach($logged_info->group_list as $key => $val)--> <!--@if($val=="준회원")--> <p>당신은 준회원입니다.</p> <!--@elseif($val=="정회원")--> <p>당신은 정회원입니다.</p> <!--@elseif($val=="관리그룹")--> <p>당신은 관리자입니다.</p> <!--@else--> // <- 위 조건중에 항상 만족하는 조건을 찾기 때문에 필요없다. <!--@end--> <!--@end-->
결과값 : 로그인 후에 출력
회원 메뉴 리스트($menu_list)에 접근하기
회원 메뉴 리스트 역시 2차 배열 요소이다. 회원 메뉴 리스트는 XE코어가 제공하는 고정된 메뉴이기 때문에 사용자가 추가할 수 있는 항목은 아니다. 따라서 각각의 요소에 개별적으로 접근하는 방법과 foreach 구문을 이용해 리스트 형식으로 출력하여 사용하는 방법이 있다.
{$logged_info->menu_list['dispMemberInfo']}
결과값 : 로그인 후에 출력
<li><a href="{getUrl('act','dispMemberInfo')}">회원정보보기</a></li>
결과값 : 로그인 후에 출력
<ul>
<!--@foreach($logged_info->menu_list as $key => $val)-->
<li>{$key} - {Context::getLang($val)}</li>
<!--@end-->
</ul>
결과값 : 로그인 후에 출력
로그인 위젯 스킨에서 다음과 같이 사용됨
<ul>
<!--@foreach($logged_info->menu_list as $key => $val)-->
<li><a href="{getUrl('act',$key,'member_srl','','page','')}">{Context::getLang($val)}</a></li>
<!--@end-->
</ul>
결과값 : 로그인 후에 출력
※ 위 예제는 $logged_info 변수를 활용한 예제로 로그인 후에 결과값이 출력 가능하다.