웹마스터 팁

제로보드에서 로그인후 테크노트에서 로그인정보 사용하기라고 제목을 하였는데요.

 아래의 게시물에서 어느 분께서(주하니님) 팁 공유를 신청하셔서 글을 올립니다.
외부프로그램(페이지)에서 zbxe 로그인 정보 연동하기
참고 사이트 : 테크노트

취지
 외부프로그램(페이지)에서 zbxe 로그인 정보 연동하기라는 게시물에서 주하니님께서 팁 공유를 신청하셔서 글을 올립니다.

참고로 완성된 것은 아니고요 계속 진행중인 팁입니다.
또한 여러분들의 참여가 있으시면 더욱 좋은 팁으로 거듭나서
물론 제로보드가 여러가지 방면에 탁월하지만 
기존 자료나 아니면 다른 부분에서 다른 보드나 프로그램을 
공유하는데 효과적으로 사용할 수 있기를 기대하면서 작성해봅니다.



성능
 아직 사용되는 범위는 게시판정도에서만 적용이 됩니다.

mypage나 쪽지 회원정보등에는 아직 적용이 않되고요.
그냥 게시판에서 로그인 정보가 필요할 경우 목록보기 내용보기 글쓰기 정도는 가능합니다.

앞서서 해야될것이 있는데요.
먼저 같은계정에 테크노트 utf8 버젼이 설치 되어있어야됩니다.
(http://technote.co.kr  참고하시고요.)

수정되어야 되는 파일이 2개 있고요.
추가되어야되는 파일이 있습니다.
(기존에 테크노트 제작자가 배포된 파일에 있는데 제로보드xe에 맞게 변형된파일)



그럼 수정되어야 되는 파일을 먼저 소개 합니다.

1. lib.php

용도는테크노트 전반적인 변수나 설정을 저장하는 파일입니다.

30~40 줄 정도에 보면 세션 저장변수가 있습니다.($CONFIG['session_path'])
세션 저장 변수를 제로보드 세션 저장위치로 바꿉니다.


참고로 제로보드는  제로보드 폴더/files/sessions  에 세션이 저장됩니다.

수정
 // 용도는테크노트 전반적인 변수나 설정을 저장하는 파일입니다.

// 30~40 줄 정도에 보면 아래와 같은 구절이 있습니다.

        // 안전한 곳에 세션파일이 저장되게 하려면 다른 경로를 변경할것.
            //$CONFIG['session_path']= './data/session';
            $CONFIG['session_path']= '/home/hosting_users/gywnspwlq/www/board/files/sessions';

 
2.board.php


용도는 보드(게시판) 실행시 실행되는 파일입니다
50번째 즘에 보시면

$groupkey=$ck_ident.$Bconfig['se1_2'];
$you_Member=get_LoginSession($groupkey); // M login
$LongCookie=get_LongCookie($groupkey);// Longcookie
$TempCookie=get_TempCookie($groupkey);// Shortcookie
 라는 부분이 있는데요
아래와 같이 변형해줍니다.

 $groupkey=$ck_ident.$Bconfig['se1_2'];
$you_Member=get_LoginSession($groupkey); // M login
if(!$you_Member) include 'util_login_input_new.php';
$LongCookie=get_LongCookie($groupkey);// Longcookie
$TempCookie=get_TempCookie($groupkey);// Shortcookie




다음은 추가되어야되는 파일입니다.

1.util_login_input_new.php  (원본은 util_login_input.php 인데 제가 수정해서 다른이름으로 저장된 상태입니다.)

용도는 다른 프로그램에서 회원 로그인한 것을 테크노트에서 인식(공유)하게 하는 것입니다.

 <?

    // url 주소로 본 파일을 직접연결할 경우엔 안내 메시지를 출력함
    if(basename($_SERVER[PHP_SELF]) == basename(__FILE__)){
        echo "<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>";
        echo "잘못된 연결입니다.<br>이 파일은 URL 로 직접 연결하는 파일이 아닙니다.<br><br>";
        echo "다른 프로그램에서 회원로그인한 것을 테크노트에서 인식할 수 있게 하는 include용 파일입니다.<br>";
        echo "자세한 사용설명은 소스 내부의 설명을 참조 하십시오."; exit;
    }


//--------------------------------------------------------------------------------------------
// 이하는 '제로보드'의 회원로그인 데이타를 테크노트의 회원로그인 세션에 저장시키는 실제 활용 코드이다.
// 제로보드 아닌 다른 프로그램과의 인증공유도 이와 같은 방식으로 코드를 작성하면 된다.
// 아래 소스에서 [1], [2] 항목의 코드는 [3], [4]번 항목의 코드를 수행하기 위한 수단 이라고 보면 된다. 즉,
// [1], [2] 항목의 코드를 어떤 식으로 작성하건 결론적으로 [3], [4] 항목의 코드만 정확하면 된다.




// ■  [1] 수정한 모습
  unset($Member);  // Member는 특별한 지정 없음
 // [▨ 설정A] 설치되어 있는 디렉토리 '절대경로' 를 정확히 대입할것
  //  특별한 것은 없고 제로보드가  설치된 폴더의 절대경로 지정
  $install_path='/home/hosting_users/gywnspwlq/www/board';
       
 // [▨ 설정B] DB의 회원등록 테이블 명(mysql) 대입
  $member_table = "xe_member";   //제로보드 회원관리 테이블명



// ■  [2] 로그인 상태인지를 판단, 로그인 상태라면 회원정보 추출

 // 로그인한 아이피와 다르면 무효처리 ipaddress
  if($_SESSION['ipaddress']!=$_SERVER[REMOTE_ADDR]) return 0;


 // 회원등록 테이블(위 설정B 에서 지정)에서 회원정보를 추출함
  $Member=SQL_select_Fetch($where=" member_srl='$_SESSION[member_srl]' ",$member_table);
 // 회원정보를 찾지 못했다면 무효처리
     if(!$Member['user_id']) return 0;

// ■  [3] 추출한 회원정보를 테크노트에서 인식하는 변수($you_Member)에 대입
  $you_Member['m_id'] = $Member['user_id'];               // 아이디
  $you_Member['m_name'] = $Member['user_name'];      // 이름
  $you_Member['m_nick'] = $Member['nick_name'];         // 닉네임
  $you_Member['m_home'] = $Member['homepage'];     // 홈페이지주소
  $you_Member['+
 '+
 'm_mail'] = '';             // 메일주소
 
  $you_Member['m_level'] = 1;                               // 레벨=1
  $you_Member['m_pass'] = $Member['password'];               // 암호화된 비밀번호
  $you_Member['log_time'] = $CONFIG[this_time];        // 로그인 시간
  $you_Member['last_time'] = $CONFIG[this_time];       // 최종 로그인 시간
  $you_Member['m_point'] = 1000;                               // 포인트




// ■ [4] 제로보드 로그인 정보를 테크노트의 세션에 저장한다.
//       세션저장 이후에는 board.php 에서 본 파일를 include 하지 않고,
//       단지 세션만으로 회원인증 상태임을 확인하게 된다.

    SessionReg_m($groupkey,$you_Member);


?>

$you_Member라는 세션 변수에 회원정보를 입력해서 세션을 생성시키는 것입니다.
그러면 제로보드의 회원정보로 테크노트에서 사용이 되는 것이지요.


2.util_login_output_new.php ( 원본은 util_login_output.php 인데 수정해서 다른이름으로 저장된 상태입니다.)

용도는 테크노트의 회원인증 상태를 외부 php 파일에서 공유하는 것입니다.

 <?


    // ■ 용도
    // 테크노트에서 회원 인증한 것을 테크노트 외의 다른 php 파일에서 공유하고자 할 때 사용할 코드입니다.
    // 또는 단순히 로그인 되었는지 여부를 체크할때도 이 소스를 이용하면 됩니다.

    // 이 코드들을 복사해서 외부 php  파일에 넣는 식으로 활용하거나 또는 반대로
    // 외부 php 코드를 이 파일에 넣거나 하는 식으로 활용하거나 또는
    // 외부 php 파일에서 이 파일을 include 방식으로 삽입하거나 하면 됩니다.



    // ■ 설정: 반드시 확인

            //▨ [1]   MySQL table 식별자:    lib.php 소스내의 [설정1] 과 동일하게 지정
                $db_ident='a_tn';

            //▨ [2]   쿠키 식별자:      lib.php 소스내의 [설정2] 과 동일하게 지정
                $ck_ident='aa';

            //▨ [3]   세션파일디렉토리:    lib.php 소스내의 [설정3] 에서 지정한 디렉토리의 절대경로 지정
                // 외부 php 파일에서 본 파일을 include 코자 할때는 반드시 전체경로로 지정해야 함.
                $CONFIG['session_path']= './data/session';

            //▨ [4]  인증공유 그룹명:     회원관리보드의 - [설정]-[1-2] 에서 지정한 그룹명
                $cnF_memberGroup = 'A';




        session_save_path($CONFIG['session_path']);
        session_cache_limiter('nocache,must_revalidate'+
 ');
        session_set_cookie_params(0,'/');
        @session_start();
        $groupkey=$ck_ident.$cnF_memberGroup; unset($you_Member);
        $you_Member=$_SESSION[$groupkey.'LogM'];


        echo "<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>";


        // 회원 로그인 된 상태일때의 동작이나 출력
        if($you_Member[m_id])
        {
                echo " <hr>로그인 되었습니다. 회원정보는 다음과 같습니다.<hr>";
                echo " $you_Member[no]  ←레코드 고유번호[no]<br>";
                echo " $you_Member[m_id] ←아이디<br>";
                echo " $you_Member[m_name] ←이름<br>";
                echo " $you_Member[m_nick] ←닉네임<br>";
                echo " $you_Member[m_mail] ←메일주소<br>";
                echo " $you_Member[m_home] ←홈페이지주소<br>";
                echo " $you_Member[m_level] ←레벨<br>";
                echo " $you_Member[m_pass] ←비번<br>";
                echo " $you_Member[log_time] ←로그인시간<br>";
                echo " $you_Member[last_time] ←최종로그인시간<br>";
                echo " $you_Member[m_point] ←포인트<br>";
                echo " $you_Member[myphoto] ←회원사진경로<br>";
                echo " $you_Member[myicon] ←회원아이콘 경로<br>";
                echo " $you_Member[m_board] ←회원등록보드명<br>";
                echo " $you_Member[mcharacter] ←캐릭터이미지 파일명<br>";

                // 응용참고
                // include "./member_service.php"; // 와 같이, 로그인 된 경우 include 될 문서 지정 하거나
                // echo "<script>location.href='http://abcd.com/abcd/abcd.html';</script>"; // 와 같이 로그인 되었을때 연결될 페이지 주소를 .....
        }


        // 회원 로그인 되지 않은 상태일때의 동작이나 출력
        else
        {
                echo " 이것은 테크노트의 회원인증을 테크노트외의 php 파일에서 공유코자 할때 필요한 유틸입니다.<br><br>";
                echo " 회원로그인/아웃 상태에에 각각 출력확인 하십시오. 로그인된 경우 회원정보가 출력됩니다.<br>";
                echo " 현재는 로그인되지 않은 상태입니다.<br>";
                echo " 활용 방법은 util_login_output.php 소스를 살펴보십시오.<br><br>";

                // 응용참고
                // include "./member_error.php"; // 와 같이, 로그인 안된 상태일때 include 될 문서 지정 하거나
                // echo "<script>location.href='http://abcd.com/abcd/abcdefg.html';</script>"; // 와 같이 로그인 안된 상태일때 연결될 페이지 주소를 ......
        }

?>



util_login_output_new.php 파일에서 로그인이 되어있을 경우

제로보드에서 사용되는 세션 변수에 값을 넣고

세션을 생성시키면 제로보드로 이동시

로그인 상태로 될것입니다.

지금은 여러변수를 찿아서 대입을 시켰는데도

아직 변수들에 대한 사용용도를 몰라서 적용을 못시키고 있습니다.

만약에 어느 세션 변수에서 어느 역활을 하고 하는 기능을 알면 좋을 텐데요.

이런 경우도 있었어요.

어느 변수에서  메뉴그룹을 불러오는 것같습니다.

어느 변수에 값을 임의로 다른 것을 넣었더니

제로보드로 이동시 사용되는 메뉴가 2개 인데 모두 한꺼번에 출력이되는 경우도생기더라고요

변수에대한 정확한 정보를 테스트를 통해서도 많은 시행차고를 겪으면 되겠지만

아시는 분이 계시면 댓글이라도 적어주시면 참 고맙겠습니다.

제목 글쓴이 날짜
최근 댓글이 가장 위로 정렬 [2] 쏘프티 2007.12.20
IP대역에 따라 다른 페이지 보여주기 [1] 지연아빠 2007.12.20
xml 포함한 플래쉬를 제로보드xe 에서 적용하는 과정 [4] file 도토리나무 2007.12.20
IE Toy 사용시 ''페이지'', ''외부페이지'' 차단되네요... [2] 폭풍의 전야 2007.12.22
회원가입시 추가한 추가정보를 관리자와 회원자신만 보기... [5] 지연아빠 2007.12.22
외부프로그램(페이지)에서 zbxe 로그인 정보 연동하기 [33] file 도데군 2007.12.23
Ms 워드로 게시판 글쓰기 [1] file 더하기나무 2007.12.25
제로보드에서 로그인후 테크노트에서 로그인정보 사용하기 [4] JinHoHan 2007.12.26
APM_Setup 6 과 ZBXE 설치하기(개인서버) [3] 백성찬 2007.12.27
플래쉬 테두리 없애기 [3] 부우우 2007.12.28
Parse error: parse error, unexpected '':'' in /home/hosting_users/xxx/www/xx/classes/template/TemplateHandler.class.php(341) : eval()''+ 'd code on line 14 에러에 대하여... 왕경태 2007.12.29
레벨에 따라 자동으로 그룹 변경하기 [11] 지연아빠 2007.12.29
xe에 라이프팟 연동하기 [6] 가클 2007.12.30
원하는 값으로 게시판 정렬하기 [3] 화니군 2007.12.30
게시판 별로 에디터의 옵션 설정하기 [6] 레드맨 2008.01.01
숫자 입력란에 숫자만 입력되게 하는 팁입니다^^ [1] shtjdals 2008.01.01
로그아웃 페이지가 심심한듯 보여서 이미지를 넣어봤습니다. [9] file moonsoo 2008.01.01
회원 아이디만 가지고 쪽지 보내는방법 [1] sleep2 2008.01.01
내 홈페이지에 구글 검색용 애드센스 달기 file RulruRalra 2008.01.01
홈페이지에 최근글 넣고 새창으로 띄우기 happyblog 2008.01.02