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의 팁게시판에 추가로 올리셔도 될텐데..^^
© SIRSOFT
현재 페이지 제일 처음으로