웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
제로보드에서 로그인후 테크노트에서 로그인정보 사용하기
2007.12.26 11:25
제로보드에서 로그인후 테크노트에서 로그인정보 사용하기라고 제목을 하였는데요.
아래의 게시물에서 어느 분께서(주하니님) 팁 공유를 신청하셔서 글을 올립니다.
외부프로그램(페이지)에서 zbxe 로그인 정보 연동하기
참고 사이트 : 테크노트
취지
성능
그럼 수정되어야 되는 파일을 먼저 소개 합니다.
1. lib.php
용도는테크노트 전반적인 변수나 설정을 저장하는 파일입니다.
30~40 줄 정도에 보면 세션 저장변수가 있습니다.($CONFIG['session_path'])
세션 저장 변수를 제로보드 세션 저장위치로 바꿉니다.
참고로 제로보드는 제로보드 폴더/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
라는 부분이 있는데요
아래와 같이 변형해줍니다.
다음은 추가되어야되는 파일입니다.
1.util_login_input_new.php (원본은 util_login_input.php 인데 제가 수정해서 다른이름으로 저장된 상태입니다.)
용도는 다른 프로그램에서 회원 로그인한 것을 테크노트에서 인식(공유)하게 하는 것입니다.
$you_Member라는 세션 변수에 회원정보를 입력해서 세션을 생성시키는 것입니다.
그러면 제로보드의 회원정보로 테크노트에서 사용이 되는 것이지요.
2.util_login_output_new.php ( 원본은 util_login_output.php 인데 수정해서 다른이름으로 저장된 상태입니다.)
용도는 테크노트의 회원인증 상태를 외부 php 파일에서 공유하는 것입니다.
util_login_output_new.php 파일에서 로그인이 되어있을 경우
제로보드에서 사용되는 세션 변수에 값을 넣고
세션을 생성시키면 제로보드로 이동시
로그인 상태로 될것입니다.
지금은 여러변수를 찿아서 대입을 시켰는데도
아직 변수들에 대한 사용용도를 몰라서 적용을 못시키고 있습니다.
만약에 어느 세션 변수에서 어느 역활을 하고 하는 기능을 알면 좋을 텐데요.
이런 경우도 있었어요.
어느 변수에서 메뉴그룹을 불러오는 것같습니다.
어느 변수에 값을 임의로 다른 것을 넣었더니
제로보드로 이동시 사용되는 메뉴가 2개 인데 모두 한꺼번에 출력이되는 경우도생기더라고요
변수에대한 정확한 정보를 테스트를 통해서도 많은 시행차고를 겪으면 되겠지만
아시는 분이 계시면 댓글이라도 적어주시면 참 고맙겠습니다.
아래의 게시물에서 어느 분께서(주하니님) 팁 공유를 신청하셔서 글을 올립니다.
외부프로그램(페이지)에서 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개 인데 모두 한꺼번에 출력이되는 경우도생기더라고요
변수에대한 정확한 정보를 테스트를 통해서도 많은 시행차고를 겪으면 되겠지만
아시는 분이 계시면 댓글이라도 적어주시면 참 고맙겠습니다.
댓글 4
-
도토리나무
2007.12.26 11:34
-
주하니
2007.12.26 20:06
일케 상세하게 알려주셔서 정말 감사합니다.
저 같은 초보에겐 일케 떠먹여줘도 잘 하기가 어렵다는 ㅡㅡㅋ
잘 테스트 해보도록 하겠습니다. 감사합니다. -
도토리나무
2007.12.27 08:56
도움이 되시면 고맙겠고요.
아직 완성된것이아니고
이제 시작이라서요.
더 많은 부분이 적용이 되면 다시 올려드릴께요.
^^ -
너일
2008.01.21 20:33
좋은 팁이네요
제로보드와 테크노트 두보드중 한쪽에만 로그인하고 다른한쪽 보드로 가도 자동으로 로그인
되는거군요 필요한 팁이었는데 감사합니다
그럼 양쪽의 보드가 서로 같은 회원db를 가지게 되는건가요?
간단하게 줄이면
일단 각각 사용되는 세션 변수 저장공간을 하나로 같이 만든다음
각각 보드별로 필요로 하는 세션 변수가 있는데
그것을 각각에 맞게 만들어서 제로보드에서 로그인해서 다른 보드로 갈경우도 적용이 되고
다른 보드에서 로그인해서 제로보드로 올경우도 적용이 되도록 하는 것입니다.
일단 여기서는 제로보드에서 로그인후 테크노트로 이동시 로그인정보를 가지고
테크노트에서도 일부분 제약이 있지만 사용가능하게 된것을 공유하는 것입니다.
반대로도 적용해보려고 하는데 여러가진 필요한 세션 변수와 기능에 대해서
알지를 못해서 여러가지 테스트를 하고 있습니다.
잘아시는 분께서 보시면 필요한것이 이것이다라고 조언을 해주실꺼라 믿고
글을 올립니다.
^^
주하니님 잘 보셨나요..?
조금이나마 도움이 되어서 원하시는 것이 있기를 바랍니다.
^^