2010. 1. 1. 14:45

XE 외부페이지를 통한 세션공유


XE와 같은 통합 솔루션으로 홈페이지를 작성하는 작업을 할때, 가장 신경쓰이는 부분이 외부페이지작업인듯 하다. 물론 XE도 페이지 메뉴를 통하여 위젯을 삽입하거나 모듈을 읽어오거나 직접 작성할수 있지만 드림위버로 제작하는것보다  제약이 많이 따르기 때문이다.

특히 form이나 회원의 로그인정보가 필요한 외부페이지에 대하여는 실로 난감함 문제가 아닐수 없다.

이 문제를 해결 방법은 ...
 <?
 define('__ZBXE__', true);
 require_once('config/config.inc.php');
 $oContext = &Context::getInstance();
 $oContext->init();
   
 $logged_info = Context::get('logged_info');
 $id = $logged_info->user_id;
   
 if($logged_info)
    {
  echo("
   로그인 하셨네요.^^
   <br>$id 회원님이시네요.
  ");
 }
 else
 {
  echo("
   로그인 해주셔야죠.^^   
  ");
 }
?>

가장 중요한 부분은 노란색부분으로 표시된 부분이다. xe가 설치된 경로 바로아래 config디렉토리를 해당소스가 들어가는 php파일의 상대경로나 절대경로로 표시해주면 된다. 어려우면 /home/test/public_html/xe/config 이런식으로 절대경로로 표시하자..
그 다음으로 눈여겨 봐야할것이..

노가다를 통해서 로그인정보를 작성했다. XE안에서 함수부분으로 정의되어 있겠지만.. 소스를 찾는것보다 작성하는게 빠르다고 생각했다.

XE는 식별자(이후 xe로 표시)_member_group 테이블에 그룹 권한을 정의한다. 보통 관리자는 group_srl : 1 준회원 : 2 정회원 :3 으로 디폴트 정의되어있다..

xe_member테이블에는 회원 개개인의 member_srl을 갖는다. 위 소스에서 id로 xe_member테이블을 검색하여 해당 아이디의 member_srl을 찾고 xe_member_group_member테이블에서 해당 member_srl을 찾은값으로 group_srl을 가지고온다..

그러면 id와 그룹권한을 가지고 php코드를 자유롭게 작성할수 있다. 물론 xe_member 테이블에는 그외 모든 사용자정보가 들어있으니 언제든 검색해서 불러오면 되고 세션을 자유롭게 XE와 공유할수 있다. 

또 다른 방법으로는 $logged_info변수에는 회원정보에 들어가는 모든 데이타가 저장된다.
echo $logged_info->nick_name."; 이런식으로 변수명을 정해주면 로그인된 회원의 닉네임이 출력된다.
그와 같은 방법으로 로그인정보를 이용하여 외부페이지에 적용하면 된다.

     : -----0 [member_srl]
     : -----1 [user_id]
     : -----2 [email_address]
     : -----3 [email_id]
     : -----4 [email_host]
     : -----5 [user_name]
     : -----6 [nick_name]
     : -----7 [homepage]
     : -----8 [blog]
     : -----9 [birthday]
     : -----10 [allow_mailing]
     : -----11 [allow_message]
     : -----12 [denied]
     : -----13 [limit_date]
     : -----14 [regdate]
     : -----15 [last_login]
     : -----16 [is_admin]
     : -----17 [description]
     : -----18 [profile_image]
     : -----19 [image_name]
     : -----20 [image_mark]
     : -----21 [group_list]
     : -----22 [is_openid]