유용한 함수들 logged_info

유용한 함수들

$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 변수를 활용한 예제로 로그인 후에 결과값이 출력 가능하다.