G3 와 G4 의 ID공유(통합??)의 1가지 방법. > 그누4 스킨

그누4 스킨

스킨의 저작권은 해당 스킨 제작자님께 있으며, 그누보드의 저작권과 다를 수 있습니다.
스킨 다운로드시 좋아요와 감사의 코멘트를 남기시면 제작자에게 큰 힘이됩니다. ^^y
그누보드와 관련이 있지만 스킨과 빌더가 아니면 플러그인 게시판에 올려주세요.

G3 와 G4 의 ID공유(통합??)의 1가지 방법. 정보

회원통합스킨 G3 와 G4 의 ID공유(통합??)의 1가지 방법.

본문

별다른 스킬없습니다. 정석대로..;;;
다운로드 할 파일이 필요가 없겠네요...아래의 글대로...하시면..될지..싶군요.
테스트는 아래...(test page..잠시만..열어놓습니다...필요하시면..테스트) 
http://2club.co.kr/g3/index.php

-------------------------------------------------------------------------------------------------
G3 와 G4 의 ID공유의 1가지 방법.
-------------------------------------------------------------------------------------------------
##########################################################
###############      그누보드3,4 회원ID 공유의 1가지 방법                ##########
##########################################################
# 제가 그누보드를 잘 모르는데 그누보드 3과 4의 ID공유???라니...하하 ㅡ.ㅡㅋ
# 그러나...그렇게 쓸만한 이유가 있는 분이 분명히 계실 거라고 봅니다.
# G4의 스킨이 맘에드는데 주싸이트는 G3로 되어있고...여차저차하고 그래서리
# 단지 ID와 PASS 만 으로 G4와 G3를...방법이 없을까...하시는 분께는...
# [참고]라도 하시길 바라며...
# 100% 만족한 결과는 아니지만 한번 해 봤습니다만, 좀 더 업그레이드된 방법은
# 여러 고수분들께 넘길까..합니다. 
#
# ▶ G3 의 회원이 로그인후에 G4로 왔을경우 회원가입이 안되어있으면
# 자동으로 G4에 가입시키고 자동으로 로그인합니다.
# 거의 비슷하지만 약간 다르게 코딩이 된지라 빠진 레코드는 존재합니다. 
# 반대로 G4의 회원이 로그인후 G3로 넘오올 경우도 동일합니다.

# ▶ G4와 G3를 왔다갔다 하면서 form이 아이디,패스,이름을 물고 들어갑니다.
# G3의 권한과 세션문제로 form 을 이용했습니다. 대신 한쪽에서 logout 시에
# 양쪽이 로그아웃되게 했습니다. 각각에서 세션데스트로이가 되므로 보안에는
# 문제가 없어 보입니다.
#
# ▶ 개인정보수정과 포인트는 각각의 싸이트에서 하는 수 밖에 없지만
# 통합이 아니라 공유인 이상 별 문제는 없어 보입니다.
# 한개의 싸이트가 두개의 g4로 이뤄진 경우는...특별한 경우를 제외하고...;;
# 최선이 아니면 차선인 경우에만 써 보시길 바랍니다...!!!   
#
# 대략..살펴보면 이렇습니다...원소스는 거의 건드리지 않았습니다만,
# 원본은 카피후에 필요하신 분만...해보시길...책임??은 못 집니다...^^;
# 상호 싸이트에 ID없으면 가입시킨 방법이지만 쇼핑몰등 금전이 오가는
# 싸이트엔 배달처등...다소의 문제가  있지않나...양지하시기 바랍니다.

//g4:  head.php  내용첨가
//g4:  index.php  내용첨가
//g3:  g3/bbs/skin/outlogin/basic/outlogin.skin.from_g4.php 파일생성
//g3:  bbs/mblogincheck_from_g4.php 파일생성
//g3:  bbs/mblogout.php 약간수정

//g4:  bbs/logout_g4_end.php 파일생성

//g3:  head.php 내용첨가
//g3:  index.php 내용첨가
//g4:  g3/bbs/skin/outlogin/basic/outlogin.skin.from_g3.php 파일생성
//g3:  bbs/login_check_from_g3.php 파일생성
//g4:  bbs/mblogout.php 약간수정

▶시작.
-------------------------------------------------------------------------------------------------
1.g3,g4의 db통합
-------------------------------------------------------------------------------------------------
# 일단 G3와 G4는 따로 설치를 하시게 되거나 된 경우가 대부분일겁니다.
# 설치시엔 db명을 따로 주셔야 삭제되지 않기 때문입니다.
# 아시다시피 G3의 db테이블의 파일명은 gb 로 시작하고 g4는 g4로 시작합니다.
# 먼저 G3의 db data파일 전체를 G4의 db의 data방에 계정 업로드(카피)합니다.
# 중복되지 않습니다.
# g3의 dbconfig.php 에서 $cfg[mysql_db]= '지포디비명'; 으로 바꿉니다.
# 그렇게되면 g3와 g4가 하나의 db를 쓰게 되는거죠.
# db 명만 같이 쓰는 경우에 이런 방법을 써 봅니다. 만약 db명이 틀린경우는
# db connect 를 따로 해주셔야 되리라 봅니다.
##########################################################

-------------------------------------------------------------------------------------------------
2.g4의 head.php 수정
-------------------------------------------------------------------------------------------------
<? #g4의 head.php 에 붙여넣기
#######################################################
# G4의 head.php 의 적절한 부분에 G3로 넘어갈 링크를 만듭니다.
# G3 는 $member[mb_password] 이고 G4 $member[mb_passwd]입니다.
#######################################################
$g3_path="../../g3"; //수정要:g3의 index.php가 있는 디렉토리를 수정합니다.
echo"
<form method='post' name='Write_Form' ENCTYPE='multipart/form-data'
action='$g3_path/index.php'>
<input type='hidden' name='G4_ID' value='$member[mb_id]'>
<input type='hidden' name='G4_NAME' value='$member[mb_name]'>
<input type='hidden' name='G4_PASS' value='$member[mb_password]'>
<input type='submit' value='지3로가자'  alt='지3로가자'></form>
";
########################################################
?>

--------------------------------------------------------------------------------------------------
3.g3의 head.php 수정
--------------------------------------------------------------------------------------------------
<?#g3의 head.php 에 붙여넣기
#######################################################
# G3의 head.php 의 적절한 부분에 G4로 넘어갈 링크를 만듭니다.
# G3 는 $member[mb_password] 이고 G4 $member[mb_passwd]입니다.
#######################################################
$g4_path="../../gb4_baedal_v30"; //수정要:g4의 index.php가 있는 디렉토리를 수정.
echo"
<form method='post' name='Write_Form' ENCTYPE='multipart/form-data'
action='$g4_path/index.php'>
<input type='hidden' name='G3_ID' value='$member[mb_id]'>
<input type='hidden' name='G3_NAME' value='$member[mb_name]'>
<input type='hidden' name='G3_PASS' value='$member[mb_passwd]'>
<input type='submit' value='지4로가자'  alt='지4로가자'></form>
</form>
";
########################################################
?>


--------------------------------------------------------------------------------------------------
4.자...여기가지 하셨으면 G4와 G3를 왔다갔다...됩니까?
--------------------------------------------------------------------------------------------------
안되면 $g3_path 와 $g4_path 부분 수정要 부분을 살펴보세요.

--------------------------------------------------------------------------------------------------
5.G4 의 index.php 에 아래를 써 넣으세요. G3에서 G4로 올경우
  자동가입.자동로긴 부분입니다. 필요없는 확인스텝 echo 는 삭제하시길..;;
--------------------------------------------------------------------------------------------------
<?
#G4의 index.php에 여기서부터 !!------------------------
if($G3_ID !='' && $G3_NAME !=''){
#정확하게 g3에 로긴된 아이디와 패스가 나타납니까?
#아래의 3라인은 확인 스텝입니다.
echo"G3_ID:<font color='red'>$G3_ID</font>라는 ID를 물고 들어왔죠??<br>";
echo"G3_NAME:<font color='red'>$G3_NAME</font>..이름도..<br>";
echo"G3_PASS:<font color='blue'>$G3_PASS</font>";

#일단 G3 로긴자의 정보가 G4에 있나 없나를 확인.
$Que_G4=mysql_query("select * from g4_member where mb_id ='$G3_ID'");
$g4_mb_id= @mysql_result($Que_G4,0,0);
$g4_mb_password=@mysql_result($Que_G4,0,1);
$g4_mb_name =@mysql_result($Que_G4,0,2);

##########################################################
if(($g4_mb_id ==$G3_ID)&&($g4_mb_password ==$G3_PASS))
{
echo"G3 의 아이디가 G4에 현재 있군요...password가 맞으면 자동로긴을 시킵니다.";
$skin_dir="basic";
$outlogin_skin_path = "$g4[path]/skin/outlogin/$skin_dir";
include("$outlogin_skin_path/outlogin.skin.from_g3.php");
}else if($g4_mb_id==''){/////////////////////////////////////////////////////////////
echo"<br>현재 g4 멤버로는 가입되어있지 않네요..자동으로 가입시킵니다.";   
#일단 G3 로긴자의 정보를 깡그리 뽑아낸다.
$Que_G3=mysql_query("select * from gb_member where mb_id ='$G3_ID'");
$g3_mb_id= @mysql_result($Que_G3,0,0);
$g3_mb_passwd =@mysql_result($Que_G3,0,1);
$g3_mb_name =@mysql_result($Que_G3,0,2);
$g3_mb_email =@mysql_result($Que_G3,0,3);
$g3_mb_homepage =@mysql_result($Que_G3,0,4);
$g3_mb_passwd_q =@mysql_result($Que_G3,0,5);
$g3_mb_passwd_a =@mysql_result($Que_G3,0,6);
$g3_mb_level  =@mysql_result($Que_G3,0,7);
$g3_mb_jumin =@mysql_result($Que_G3,0,8);
$g3_mb_tel =@mysql_result($Que_G3,0,9);
$g3_mb_hp =@mysql_result($Que_G3,0,10);
$g3_mb_zip1 =@mysql_result($Que_G3,0,11);
$g3_mb_zip2 =@mysql_result($Que_G3,0,12);
$g3_mb_addr1 =@mysql_result($Que_G3,0,13);
$g3_mb_addr2 =@mysql_result($Que_G3,0,14);
$g3_mb_sex =@mysql_result($Que_G3,0,15);
$g3_mb_birth =@mysql_result($Que_G3,0,16);
$g3_mb_married =@mysql_result($Que_G3,0,17);
$g3_mb_wedding =@mysql_result($Que_G3,0,18);
$g3_mb_signature =@mysql_result($Que_G3,0,19);
$g3_mb_recommend =@mysql_result($Que_G3,0,20);
$g3_mb_icon =@mysql_result($Que_G3,0,21);
$g3_mb_point =@mysql_result($Que_G3,0,22);
$g3_mb_today_point =@mysql_result($Que_G3,0,23);
$g3_mb_today_login =@mysql_result($Que_G3,0,24);
$g3_mb_login_ip =@mysql_result($Que_G3,0,25);
$g3_mb_datetime =@mysql_result($Que_G3,0,26);
$g3_mb_ip =@mysql_result($Que_G3,0,27);
$g3_mb_leave_date =@mysql_result($Que_G3,0,28);
$g3_mb_intercept_date =@mysql_result($Que_G3,0,29);
$g3_mb_memo =@mysql_result($Que_G3,0,30);
$g3_mb_mailling =@mysql_result($Que_G3,0,31);
$g3_mb_open =@mysql_result($Que_G3,0,32);
$g3_mb_profile =@mysql_result($Que_G3,0,33);
$g3_mb_size =@mysql_result($Que_G3,0,34);
$g3_mb_memo_call_mb_id =@mysql_result($Que_G3,0,35);
$g3_mb_1 =@mysql_result($Que_G3,0,36);
$g3_mb_2 =@mysql_result($Que_G3,0,37);
$g3_mb_3 =@mysql_result($Que_G3,0,38);
$g3_mb_4 =@mysql_result($Que_G3,0,39);
$g3_mb_5 =@mysql_result($Que_G3,0,40);
# echo"<br>잘 뽑아내나? <font color='#8d1009'>$g3_mb_size</font>";
# echo"<br>g4_member table <font color='#8d1009'>$g4[member_table]</font>";
##########################################################
#G3 로 로긴한 회원 ID가 G4에 없으면 회원으로 자동 가입시키고 로그인 시킵니다.
##########################################################
$G4_RO = "insert into $g4[member_table]
set mb_id = '$g3_mb_id',
          mb_password = '$g3_mb_passwd',
          mb_name = '$g3_mb_name',
          mb_jumin = '$g3_mb_jumin',
          mb_sex = '$g3_mb_sex',
          mb_birth = '$g3_mb_birth',
          mb_nick = '$g3_mb_name',
          mb_nick_date = '',
          mb_password_q = '$g3_mb_password_q',
          mb_password_a = '$g3_mb_password_a',
          mb_email = '$g3_mb_email',
          mb_homepage = '$g3_mb_homepage',
          mb_tel = '$g3_mb_tel',
          mb_hp = '$g3_mb_hp',
          mb_zip1 = '$g3_mb_zip1',
          mb_zip2 = '$g3_mb_zip2',
          mb_addr1 = '$g3_mb_addr1',
          mb_addr2 = '$g3_mb_addr2',
          mb_signature = '$g3_mb_signature',
          mb_profile = '$g3_mb_profile',
          mb_today_login = '$g3_mb_login_ip',
          mb_datetime = '$g3_mb_datetime',
          mb_ip = '$g3_mb_ip',
          mb_level = '$g3_mb_level',
          mb_recommend = '$g3_mb_recommend',
          mb_point ='$g3_mb_point',
          mb_login_ip = '$g3_mb_login_ip',
          mb_mailling = '$g3_mb_mailling',
          mb_sms = '',
          mb_open = '$g3_mb_open',
          mb_1 = '$g3_mb_1',
          mb_2 = '$g3_mb_2',
          mb_3 = '$g3_mb_3',
          mb_4 = '$g3_mb_4',
          mb_5 = '$g3_mb_5',
          mb_6 = '',
          mb_7 = '',
          mb_8 = '',
          mb_9 = '',
          mb_10= ''";       
$Result_G4_RO=mysql_query($G4_RO);
##########################################################
echo ("<script language=javascript>location.href='$PHP_SELF'</script>");
}////////////////////////////////////////////////////////////////////////////////////
}//만약G3 아이디와 패스가 공백이 아니면(즉 G3에서 로긴후 넘어왔으면)
##########################################################
#-------------------------여기까지를 붙여넣기 합니다.--------------------------!!



--------------------------------------------------------------------------------------------------
6.G4 의 /skin/outlogin/basic 방에 아래를 새파일로 저장하십시요. 파일명: outlogin.skin.from_g3.php
  만약 basic 스킨이 아닌경우는 쓰시고 계신 아웃로긴스킨방에 저장합니다.
7.G4 의 lib 방의 common.lib.php 의 106번줄 근처에 아래를 읽으신후 골벵이 @ 처리를 하십시요.
--------------------------------------------------------------------------------------------------
<?
##########################################################
#여기까지 잘 넘어 왔습니까?  파일명: outlogin.skin.from_g3.php 로 저장.
#어쩔수 없습니다.
#G4에서 사용자 권한등을 얻기위해 돌아서 온것입니다.
#아래의 3라인은 테스트...
#echo"<br><font color='red'><b>$G3_ID</font></b>";
#echo"<br><font color='green'><b>$G3_PASS</font></b>";
#echo"<br><font color='green'><b>$G3_NAME</font></b>";
$Xmb_id=$G3_ID;
$Xmb_password=$G3_PASS;
$url=$urlencode;
include "$g4[bbs_path]/login_check_from_g3.php";
##########################################################
#마지막으로 lib 방의 common.lib.php 의 106번줄 근처에
#"쿠키변수 생성" 이라는  set_cookie 함수부분 있죠?
# 그 함수가 원래 head_sub.php 에서 인클루드된 아웃로긴과
# 새로만든 $g4[bbs_path]/login_check_from_g3.php 이 중첩이 됩니다.
# 아래처럼 @골벵이로 막아주십시요.
# function set_cookie($cookie_name, $value, $expire)
# {
#  global $g4;
#  @setcookie(md5($cookie_name),
# @base64_encode($value), $g4[server_time] + $expire, '/', $g4[cookie_domain]);
#}
##########################################################

?>



--------------------------------------------------------------------------------------------------
6.G4 의 /bbs 방에 아래를 새파일로 저장하십시요. 파일명: login_check_from_g3.php
--------------------------------------------------------------------------------------------------
<?
include ("./_common.php");
####################################################################
$mb_id      = $Xmb_id;
$mb_password = $Xmb_password;
####################################################################
if (!trim($mb_id) || !trim($mb_password))
    alert("회원아이디나 패스워드가 공백이면 안됩니다.");
$mb = get_member($mb_id);
####################################################################
// 가입된 회원이 아니다. 패스워드가 틀리다. 라는 메세지를 따로 보여주지 않는 이유는
// 회원아이디를 입력해 보고 맞으면 또 패스워드를 입력해보는 경우를 방지하기 위해서입니다.
// 불법사용자의 경우 회원아이디가 틀린지, 패스워드가 틀린지를 알기까지는 많은 시간이 소요되기 때문입니다.
if (!$mb[mb_id])
    alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
####################################################################

// 차단된 아이디인가?
if ($mb[mb_intercept_date] && $mb[mb_intercept_date] <= date("Ymd", $g4[server_time])) {
    $date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb[mb_intercept_date]);
    alert("회원님의 아이디는 접근이 금지되어 있습니다.\\n\\n처리일 : $date");
}

// 탈퇴한 아이디인가?
if ($mb[mb_leave_date] && $mb[mb_leave_date] <= date("Ymd", $g4[server_time])) {
    $date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb[mb_leave_date]);
    alert("탈퇴한 아이디이므로 접근하실 수 없습니다.\\n\\n탈퇴일 : $date");
}

if ($config[cf_use_email_certify] && !preg_match("/[1-9]/", $mb[mb_email_certify]))
    alert("메일인증을 받으셔야 로그인 하실 수 있습니다.\\n\\n회원님의 메일주소는 $mb[mb_email] 입니다.");

$member_skin_path = "$g4[path]/skin/member/$config[cf_member_skin]";
@include_once("$member_skin_path/login_check.skin.php");

// 회원아이디 세션 생성
set_session('ss_mb_id', $mb[mb_id]);

// 3.26
// 아이디 쿠키에 한달간 저장
if ($auto_login) {
    // 3.27
    // 자동로그인 ---------------------------
    // 쿠키 한달간 저장
    $key = md5($_SERVER[SERVER_ADDR] . $_SERVER[REMOTE_ADDR] . $_SERVER[HTTP_USER_AGENT] . $mb[mb_password]);
    set_cookie('ck_mb_id', $mb[mb_id], 86400 * 31);
    set_cookie('ck_auto', $key, 86400 * 31);
    // 자동로그인 end ---------------------------
} else {
    set_cookie('ck_mb_id', '', 0);
    set_cookie('ck_auto', '', 0);
}


if ($url)
{
    $link = urldecode($url);
    // 2003-06-14 추가 (다른 변수들을 넘겨주기 위함)
    if (preg_match("/\?/", $link))
        $split= "&";
    else
        $split= "?";

    // $_POST 배열변수에서 아래의 이름을 가지지 않은 것만 넘김
    foreach($_POST as $key=>$value)
    {
        if ($key != "mb_id" && $key != "mb_password" && $key != "x" && $key != "y" && $key != "url")
        {
            $link .= "$split$key=$value";
            $split = "&";
        }
    }
}
else
    $link = $g4[path];

goto_url($link);
?>

#그럼 G4에서 로그인은 끝입니다.^^; 2005.11.19



--------------------------------------------------------------------------------------------------
8.G4의 로그아웃 시작합니다.
G4 의 /bbs 방의 loginout.php 를 수정합니다.
--------------------------------------------------------------------------------------------------
제일하단에 goto_url($link); 을 지우고 아래와 같이 바꿉니다.

########################################
#1,G4를 로그아웃했습니다. 2,이제 G3로그아웃하러 갑니다.
$g3_path="../../g3";
$link_g3_index="$g3_path/index.php?doc=bbs/mblogout.php";
########################################
if(file_exists("$g3_path/bbs/mblogout.php"))
{goto_url($link_g3_index);}else {goto_url($link);}

--------------------------------------------------------------------------------------------------
9.G3의 로그아웃 으로 갑니다. G4 보다는 좀 복잡합니다.
G4 의 /bbs 방의 mbloginout.php 를 수정합니다.
--------------------------------------------------------------------------------------------------
제일하단에 goto_url($link); 을 지우고 아래와 같이 바꿉니다.

#######################################
#G3에서로그아웃하면 G4도 로그아웃합니다.
$g4_path="../../gb4_baedal_v30"; //수정합니다.
$link="$g4_path/bbs/logout_g4_end.php";
########################################
gotourl($link);
?>


--------------------------------------------------------------------------------------------------
10.G4 의 /bbs 방에 아래를 새파일로 저장하십시요. 파일명: logout_g4_end.php
--------------------------------------------------------------------------------------------------
<?
include_once("./_common.php");

// 이호경님 제안 코드
session_unset(); // 모든 세션변수를 언레지스터 시켜줌
session_destroy(); // 세션해제함

// 자동로그인 해제 --------------------------------
set_cookie("ck_mb_id", "", 0);
set_cookie("ck_auto", "", 0);
// 자동로그인 해제 end --------------------------------

if ($url) {
    $link = $url;
} else if ($bo_table) {
    $link = "$g4[bbs_path]/board.php?bo_table=$bo_table";
} else {
    $link = $g4[path];
}
#######################################
#지금까지 마지막으로 G4에서 로그아웃했습니다.
#######################################
$g4_path="../../gb4_baedal_v30"; //수정합니다.
$link="$g4_path";
#######################################
goto_url($link);
?>


--------------------------------------------------------------------------------------------------
11.G4에서 G3로 올경우를 시작합니다. 복잡하나요? G3 사이트를 버리든지 해야죠..
  아니면 노가다를 계속해보죠.. G4에서 G3로 올경우
  자동가입.자동로긴 부분입니다. 필요없는 확인스텝 echo 는 삭제하시길..;;
  혹시 G4나 G3 가 잘못 주석 처리 된 경우가 있을지도 모르나 기능에는 지장無.
  G3의 index.php 를 보시면 
  // 스킨경로
  $board_skin    = "bbs/skin/board/$board[bo_skin]"; // 게시판
  $outlogin_skin = "bbs/skin/outlogin/$default[de_outlogin_skin]"; //
  $member_skin  = "bbs/skin/member/$default[de_member_skin]"; // 회원가입, 로그인, 비밀번호 분실
  $latest_skin  = "bbs/skin/latest/$default[de_latest_skin]"; // 최신글
  $vote_skin    = "bbs/skin/vote/$default[de_vote_skin]"; // 투표
  $mail_skin    = "bbs/skin/mail/$default[de_mail_skin]"; // 메일
 
  이 밑에 아래를 써 넣으세요.
--------------------------------------------------------------------------------------------------
<?
#G3의 index.php에 여기서부터 !!------------------------
if($G4_ID !='' && $G4_NAME !=''){
#정확하게 g3에 로긴된 아이디와 패스가 나타납니까?
#아래의 3라인은 확인 스텝입니다.
echo"G4_ID:<font color='red'>$G4_ID</font>라는 ID를 물고 들어왔죠??<br>";
echo"G4_NAME:<font color='red'>$G4_NAME</font>..이름도..<br>";
echo"G4_PASS:<font color='blue'>$G4_PASS</font>";

#일단 G4 로긴자의 정보가 G3에 있나 없나를 확인.
$Que_G3=mysql_query("select * from gb_member where mb_id ='$G4_ID'");
$g3_mb_id= @mysql_result($Que_G3,0,0);
$g3_mb_password=@mysql_result($Que_G3,0,1);
$g3_mb_name =@mysql_result($Que_G3,0,2);

##########################################################
if(($g3_mb_id ==$G4_ID)&&($g3_mb_password ==$G4_PASS))
{
echo"G4 의 아이디가 G3에 현재 있군요...password가 맞으면 자동로긴을 시킵니다.";
$skin_dir="basic";
$outlogin_skin_path = "$outlogin_skin";
echo"<br>$outlogin_skin";
include("$outlogin_skin_path/outlogin.skin.from_g4.php");

}else if($g3_mb_id==''){/////////////////////////////////////////////////////////////
echo"<br>현재 g3 멤버로는 가입되어있지 않네요..자동으로 가입시킵니다.";   
#일단 G4 로긴자의 정보를 깡그리 뽑아낸다.
$Que_G4=mysql_query("select * from g4_member where mb_id ='$G4_ID'");
$g4_mb_id= @mysql_result($Que_G4,0,0);
$g4_mb_passwd =@mysql_result($Que_G4,0,1);
$g4_mb_name =@mysql_result($Que_G4,0,2);
$g4_mb_email =@mysql_result($Que_G4,0,3);

/* 6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
$g4_mb_homepage =@mysql_result($Que_G4,0,4);
$g4_mb_passwd_q =@mysql_result($Que_G4,0,5);
$g4_mb_passwd_a =@mysql_result($Que_G4,0,6);
$g4_mb_level  =@mysql_result($Que_G4,0,7);
$g4_mb_jumin =@mysql_result($Que_G4,0,8);
$g4_mb_tel =@mysql_result($Que_G4,0,9);
$g4_mb_hp =@mysql_result($Que_G4,0,10);
$g4_mb_zip1 =@mysql_result($Que_G4,0,11);
$g4_mb_zip2 =@mysql_result($Que_G4,0,12);
$g4_mb_addr1 =@mysql_result($Que_G4,0,13);
$g4_mb_addr2 =@mysql_result($Que_G4,0,14);
$g4_mb_sex =@mysql_result($Que_G4,0,15);
$g4_mb_birth =@mysql_result($Que_G4,0,16);
$g4_mb_married =@mysql_result($Que_G4,0,17);
$g4_mb_wedding =@mysql_result($Que_G4,0,18);
$g4_mb_signature =@mysql_result($Que_G4,0,19);
$g4_mb_recommend =@mysql_result($Que_G4,0,20);
$g4_mb_icon =@mysql_result($Que_G4,0,21);
$g4_mb_point =@mysql_result($Que_G4,0,22);
$g4_mb_today_point =@mysql_result($Que_G4,0,23);
$g4_mb_today_login =@mysql_result($Que_G4,0,24);
$g4_mb_login_ip =@mysql_result($Que_G4,0,25);
$g4_mb_datetime =@mysql_result($Que_G4,0,26);
$g4_mb_ip =@mysql_result($Que_G4,0,27);
$g4_mb_leave_date =@mysql_result($Que_G4,0,28);
$g4_mb_intercept_date =@mysql_result($Que_G4,0,29);
$g4_mb_memo =@mysql_result($Que_G4,0,30);
$g4_mb_mailling =@mysql_result($Que_G4,0,31);
$g4_mb_open =@mysql_result($Que_G4,0,32);
$g4_mb_profile =@mysql_result($Que_G4,0,33);
$g4_mb_size =@mysql_result($Que_G4,0,34);
$g4_mb_memo_call_mb_id =@mysql_result($Que_G4,0,35);
$g4_mb_1 =@mysql_result($Que_G4,0,36);
$g4_mb_2 =@mysql_result($Que_G4,0,37);
$g4_mb_3 =@mysql_result($Que_G4,0,38);
$g4_mb_4 =@mysql_result($Que_G4,0,39);
$g4_mb_5 =@mysql_result($Que_G4,0,40);
*/

# echo"<br>잘 뽑아내나? <font color='#8d1009'>$g4_mb_size</font>";
# echo"<br>g3_member table <font color='#8d1009'>$gb_member</font>";
##########################################################
#G3 로 로긴한 회원 ID가 G4에 없으면 회원으로 자동 가입시키고 로그인 시킵니다.
##########################################################
$G3_RO = "insert into gb_member
set mb_id = '$g4_mb_id',
          mb_passwd = '$g4_mb_passwd',
          mb_name = '$g4_mb_name',
          mb_email = '$g4_mb_email'
          ";       
$Result_G3_RO=mysql_query($G3_RO);
##########################################################
echo ("<script language=javascript>location.href='$PHP_SELF'</script>");
}////////////////////////////////////////////////////////////////////////////////////
}//만약G4 아이디와 패스가 공백이 아니면(즉 G4에서 로긴후 넘어왔으면)
##########################################################
#-------------------------여기까지를 붙여넣기 합니다.--------------------------


--------------------------------------------------------------------------------------------------
12.G3 의 /skin/outlogin/basic 방에 아래를 새파일로 저장하십시요. 파일명: outlogin.skin.from_g4.php
만약 basic 스킨이 아닌경우는 쓰시고 계신 아웃로긴스킨방에 저장합니다.
--------------------------------------------------------------------------------------------------
<?
##########################################################
#여기까지 잘 넘어 왔습니까?
#어쩔수 없습니다.
#G3에서 사용자 권한등을 얻기위해 돌아서 온것입니다.
#아래의 3라인은 테스트...
#echo"<br><font color='red'><b>$G4_ID</font></b>";
#echo"<br><font color='green'><b>$G4_PASS</font></b>";
#echo"<br><font color='green'><b>$G4_NAME</font></b>";
$Xmb_id=$G4_ID;
$Xmb_password=$G4_PASS;
$url=$urlencode;
include "bbs/mblogincheck_from_g4.php";
?>

--------------------------------------------------------------------------------------------------
13.G3 의 /bbs 방에 아래를 새파일로 저장하십시요. 파일명: mblogincheck_from_g4.php
--------------------------------------------------------------------------------------------------
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
define("_DOCTYPE_", "NONE");
$html_title = "로그인 확인";


$mb_id      = $Xmb_id;
$mb_password = $Xmb_password;

$mb = get_member($mb_id);
// 가입된 회원이 아니다. 비밀번호가 틀리다. 라는 메세지를 따로 보여주지 않는 이유는
// 회원아이디를 입력해 보고 맞으면 또 비밀번호를 입력해보는 경우를 방지하기 위해서임.
// 불법사용자의 경우 회원아이디가 틀린지, 비밀번호가 틀린지를 알기까지는 많은 시간이 소요됨.
if ((!$mb[0])) {
    alert("가입된 회원이 아니거나 비밀번호가 틀립니다.\\n\\n비밀번호는 대소문자를 구분합니다.");
}

// 차단된 아이디인가?
if ($mb[mb_intercept_date] && $mb[mb_intercept_date] <= date("Ymd")) {
    $date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb[mb_intercept_date]);
    alert("회원님의 아이디는 접근이 금지되어 있습니다.\\n\\n처리일 : $date");
}

// 탈퇴한 아이디인가?
if ($mb[mb_leave_date] && $mb[mb_leave_date] <= date("Ymd")) {
    $date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb[mb_leave_date]);
    alert("탈퇴한 아이디이므로 접근하실 수 없습니다.\\n\\n탈퇴일 : $date");
}


// 3.30
// 사용자 코드 실행
if (file_exists("$member_skin/mblogincheck.skin.php")) {
    include "$member_skin/mblogincheck.skin.php";
}

// 세션에 저장
session_register("ss_mb_id");  # 3.09 추가
$ss_mb_id = $_SESSION["ss_mb_id"] = $mb[mb_id];

// 3.26
// 아이디 쿠키에 한달간 저장
if ($auto_login) {
    // 3.27
    // 자동로그인 ---------------------------
    $key = md5($_SERVER[SERVER_ADDR] . $_SERVER[REMOTE_ADDR] . $_SERVER[HTTP_USER_AGENT] . $mb[mb_passwd]);
    setcookie("ck_mb_id", base64_encode($mb[mb_id]), time()+86400*31, $default[de_cookie_dir], $default[de_cookie_domain]);
    setcookie("ck_auto", $key, time()+86400*31, $default[de_cookie_dir], $default[de_cookie_domain]);
    // 자동로그인 end ---------------------------
} else {
    setcookie("ck_mb_id", "", 0, $default[de_cookie_dir], $default[de_cookie_domain]);
    setcookie("ck_auto", "", 0, $default[de_cookie_dir], $default[de_cookie_domain]);
}

/*
#################################################
#  심플챗용 (mjava.net 에서 배포하는 채팅 솔루션)
#################################################
session_register("simple_chat"); //심플챗용 세션생성

$simple_chat->user_id = $_SESSION[simple_chat]->userid = $mb[mb_id];
$simple_chat->name    = $_SESSION[simple_chat]->name = $mb[mb_name];
$simple_chat->age    = $_SESSION[simple_chat]->age = 20;
$simple_chat->sex    = $_SESSION[simple_chat]->sex = "M";
$simple_chat->level  = $_SESSION[simple_chat]->level = $mb[mb_level];
#################################################
*/

if ($url) {
    $link = urldecode($url);
    // 2003-06-14 추가 (다른 변수들을 넘겨주기 위함)
    if (preg_match("/\?/", $link)) {
        $split= "&";
    } else {
        $split= "?";
    }
    foreach($_POST as $key=>$value) {
        if ($key != "mb_id" && $key != "mb_passwd" && $key != "url") {
            $link .= "$split$key=$value";
            $split = "&";
        }
    }
    //
} else {
    $link = "./";
}

gotourl("$link");
?>

--------------------------------------------------------------------------------------------------
.꼭 수정전의 소스는 백업후에 '수정要'라고 써진 부분과 $g3_path $g4_path 를 확인후에 차분히 해보시길..
설명을 하다보니..거창하게 된 느낌입니다..암 꺼도 아닌데..그럼.-끝- dalsoo..2005.11.25..
--------------------------------------------------------------------------------------------------
추천
0

댓글 전체

고생많이 하셨는데 딴지거는거 같지만...
소스보기 한번이면 패스워드가 노출되는 문제점이 너무 커보입니다..

g4에서는 g3용 쿠키와 세션값을, g3에서는 g4용 쿠키와 세션값을 저장해서 사용하는 방법은 어떨까요..
우선 네트워크에 패스워드가 빈번하게 떠다니는게 걱정되구요..

열어본 페이지 목록만 확인해도 소스 보기를 할 수 있잖아요..
적용해봤는데 잘안되는데요~~~
 g3,g4각각의 index.php를 오출하면
계속 리풀레시되다가 없는 페이지로 나오네요
로그인은 자동으로 되는것 같은데 말입니다..
복사해서 붙여넣기로 했습니다
에디트 플러스에서~~

head.php를 실해하고나서 실제 index.php를 실행시키지못하는것일수도 있고요~~
무지..(엄청) 복잡하고 작업이 번거로운것 같은데 의외로 필요한 사람들 많을거라 생각했는데 덧글수가 적네요. ^^ 다들 아주 쉽게 성공을 하셔서들 그런가.. 그누3와 4의 팁게시판에 추가로 올리셔도 될텐데..^^
전체 5 |RSS
그누4 스킨 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT