본문 바로가기

ActionScript/Tip

플래시와 제로보드 연동

출처 루미렌트 #5 : Trace | 루미렌트
원문 http://blog.naver.com/lumirent/60003692398

야웅닷컴에서 퍼옴 ( http://www.yawoong.com/ )

박동선님의 강좌 ( http://sochoksae.new21.org )



플래쉬와 제로보드의 로그인 연동.....

우선 제강좌는 그냥 읽기만 해도 이해를 하실수 있도록 실제의 예를 들어 설명을 하였습니다. 고로 쓸잘대 없는 내용이 쫌 많죠... ^^;;
읽으면서 지겹다라고 생각하지 마시고... 만약 이를 자신이 홈페이이지 넣고자 하면 모두 필요한 사항이 될테니...
소설책을 읽는다 라고 생각하시고 한번 쑤욱~~ 훌터 보시기 바랍니다.... ^^;;


플래쉬와 제로보드의 로그인을 연동하기 위한 작업은 두가지로 나누어 볼수 있습니다.
첫번째는 플래쉬에서 제로보드로 연동을 하는 것이며, 다음은 제로보드에서 플래쉬로 연동이 되는 것입니다.
음... 각각으로 설명을 드리기는 조금 곤란한 관계로 두가지를 동시에 설명을 하도록 하겠습니다.
하나의 swf파일에 두가지의 기능이 모두 들어 있는 관계로....

대신... html 코딩부터 설명을 하구요.. .다음은 flash부분 그리고 마지막으로 php를 설명하도록 하겠습니다....

플래쉬에서 제로보드로 연동을 시키기 위해서는 플래쉬 페이지에 frame을 나누어 주어야 합니다.
이는 플래쉬에서 로그인을 하면서 getURL을 이용해 익스창에 로그인을 시키도록 해야 하기때문입니다.
못알아 듣겠다구요??? 그럼 다음의 예제를 보시면서....(예제 파일은 중요한 부분만 쓰도록 하겠습니다.)

우선 html페이지 설정부터 보도록 하겠습니다.

----------------------------index.html----------------------------
<body>
<a href="main.html">플래쉬 접속</a>
----------------------------------------------------------------------
이파일에서는 플래쉬 창이 뜨도록 하는 페이지입니다. 고로 플래쉬를 띄우게 하는 파일만 있으면 되겠죠....

----------------------------main.html----------------------------
<frameset rows="100%,*" frameborder="0" framespacing="0" noresize>
<frame src="flash.html" scrolling=no> <!-- 플래쉬를 띄우는 html페이지 -->
<frame src="login.html" name=login> <!-- 제로보드 로그인을 위한 html페이지 -->
</frameset>
----------------------------------------------------------------------
이 파일에서 frame를 나누어 줍니다. 그리고 아래의 login은 보이지 않도록 설정을 하죠...

----------------------------flash.html----------------------------
<embed src="flash.swf"></embed>
----------------------------------------------------------------------
이 파일은 플래쉬의 내용을 출력하는 페이지입니다.

----------------------------login.html----------------------------
<?
        $_zb_url = "제로보드 url";
        $_zb_path = "제로보드 설치 주소";
        include $_zb_path."outlogin.php";
        print_outlogin("nzeo", 4, 10)
?>
----------------------------------------------------------------------
이 파일은 제로보드의 로그인을 위한 페이지 입니다.
아무 페이지나 상관이 없습니다. 하지만 테스트의 용이성을 위해 제로보드 아웃 로그인이 출력되도록 설정을 하시면 좋겠죠.... ^^;;

이제 html페이지들은 셋팅이 끝났습니다.
이제 부터는 php, flash부분을 살펴 보도록 하죠....
샘플 파일 (login.swf파일을 보면서... ^^)

----------------------------login.swf----------------------------
이 로그인은 로드 되도록 설정되어 있습니다.  그대로 삽입하는 것도 괜찮지만, 당신의 작업을 용이 하게 하기 위해서는 로드 혹은 무비 클립안에 넣어주는 것이 바람직할 것입니다.
저는 root에서 loadmovie("login.swf", this.login); 으로 load하도록 만들어서 사용합니다... ^^

액션부터 프레임 순서대로 봅시다.

====================1프레임====================
//절대 주소
rooturl = "로그인을 위한 php파일들이 들어 있는 인터넷 절대 주소";
//한글코드
System.useCodepage = true;
//로그인이 로드 되었는지 체크
login_loading=1;
===============================================
위의 주석만 보셔도 모두 아실수 있죠??
맨아래에 있는 로드 체크는 root에서 load해서 사용을 할때 login이 혹시 늦게 로드 될때를 위해 만든 것이죠.....
root에서.
if(this.login.login_loading eq "1"){
        play();
}else{
        gotoAndPlay (이전 프레임수);
}
로해서 체크를 하기 위함이죠... 별거 아닙니다... ^^:;

====================2프레임====================
//제로보드이 로그인 하였는지 확인
this.loadVariables(rooturl add "login_check.php", 0);
===============================================
이 부분이 제로보드에서 플래쉬로 로그인을 하는... 즉, 제로보드에서 로그인을 먼저 한후 플래쉬로 로그인을 할때 자동으로 로그인을 하도록 해주는 부분입니다.
보시면....
php파일을 불러 오는 것입니다. (파일명 확인하세요)

====================4프레임====================
if(loading eq "ok"){
        play();
}else{
        gotoAndPlay(3);
}
===============================================
이부분은 login_check.php파일의 결과를 읽었는가 체크하는 것입니다.
보시면 아시겠지만, loading값이 ok이면 다음으로 넘어가고, 아니면 계속 루프를 돌도록 되어 있습니다.
즉, loading값이 플래쉬에서 읽어 들일때 까지 플래쉬는 대기하고 있는 것이죠...

====================5프레임====================
if(error eq "ok"){
        gotoAndPlay("log_z");
}else{
        gotoAndPlay(10);
}
===============================================
자이제 login_check.php의 결과를 읽어 들였으니, 그 결과가 무엇인지 물어 봐야겠죠....
error이라는것은 성공하면 ok 실패하면 error이라는 값으로 나옵니다. 고로 성공하면 log_z로 가고.... 실패하면 10프레임(아뒤와 패스워드를 입력하는 부분)으로 이동하라는 것입니다.

====================5프레임====================
if(_parent.test eq "1"){
        _parent.gotoAndPlay("start");
        gotoandplay("log_z");
}else{
        stop();
}
===============================================
하나 하나 플래쉬에서 가져오는 것도 힘드네요....
이것은 관리자 모드를 위한 것입니다. login을 하지 않으면 본문내용이 나오지 않도록 설정하신 분들은 자신이 만든 페이지를 서버에 올리고 테스트를 할때 마다 로그인을 해야 합니다.
그래서 root의 액션에 test=1이라는 값을 넣으면 로그인을 하지 않고 본문의 내용이 나오도록 한것이죠... 꼭 필요한 것은 아니죠....

====================로그인 버튼====================
on (release, keyPress "<Enter>") {
        this.loadVariables(rooturl add "login.php?user_id=" add user_id add "&password=" add password);
        gotoandplay("login");
}
===============================================
이건 login.php파일로 입력된 아뒤와 패스워드를 보내는 부분입니다. login.php파일은 플래쉬에서 로그인을 할때 필요한 파일이죠....

====================회원가입 버튼====================
on(Release){
        getURL ("javascript:void(window.open('제로보드 설치 url/member_join.php?group_no=1','','width=600,height=500,status=no,scrollbars=yes,resizable=no'))")
}
===============================================
요게 쫌 골때리는 부분인데...메뉴바가 없는 팝업창을 만드는 부분이며, 자바스크립트로 되어 있다 보니.... rooturl을 사용하지 못했습니다.
제로보드 설치 url에 자신의 값으로 설정을 하셔야 합니다. 이걸 잘보심 알겠지만, 제로보드 로그인 창에서 join버튼에 걸려있는 주소랑 같습니다....

====================39프레임====================
if(loading eq "ok"){
        play();
}else{
        gotoAndPlay(31);
}
===============================================
요넘은 로그인 버튼을 누른 결과 로그인에 성공, 실패를 읽었는가 체크하는 것입니다. 읽지 못했으면 결과가 올때까지 루프를 돌죠...

====================40프레임====================
if(error eq "ok"){
        gotoAndPlay("loged_ok");
}else{
        gotoAndPlay("loged_error");
}
===============================================
로그인의 성공과 실패를 나누는 부분입니다.
error값이 ok이면 로그인 성공이구요....

====================51프레임====================
getURL(rooturl add "../zboard/login_check.php?user_id=" add user_id add "&password=" add password, target="login");
===============================================
플래쉬에서 로그인에 성공을 했으니, 제로보드도 로그인을 시켜야 겠죠...
../zboard/라는 부분은 제홈피의 설정때문입니다. 자신의 설정에 맞게 맞추시면 됩니다.
마지막에 보면  target="login"이 있는데, html페이지 할때 frameset에 보면 login이라는 이름의 프레임이 있죠... 그 프레임에 로그인을 시키는 것이죠....

====================71프레임====================
if(level eq""){
        gotoAndPlay("log_z");
}else{
        stop();
}
===============================================
그런 경우는 없었지만, 혹시나 로그인을 다 했는데... 회원의 정보가 나오지 않으면 어떻게 할까요??? 헉... 큰일이겠죠...
그래서 그 결과가 나올때까지 루프를 도는 부분인데... 위에서 login.php의 결과를 읽어 들였다면 당근 회원정보도 읽었겠죠...
그냥 만약을 위해서 만든것입니다.

====================회원정보 수정====================
on (release) {
        getURL ("javascript:void(window.open('제로보드설치url/member_modify.php?group_no=1','','width=600,height=500,status=no,scrollbars=yes,resizable=no'))")
}
===============================================
회원의 이름부분에 투명버튼으로 되어 있죠...
이 부분은 회원가입버튼과 동일하므로 생략하겠습니다.

====================쪽지함 버튼====================
on (release) {
        getURL ("javascript:void(window.open('제로보드설치url/member_memo.php','','width=600,height=500,status=no,scrollbars=yes,resizable=no'))")
}
===============================================
이부분도 위와 동일.... ^^;;

====================71프레임====================
getURL(rooturl add "../zboard/logout.php?&s_url=/login.html", target="login");
===============================================
요건 로그아웃을 하는 것입니다. s_url이란게 있는데... 이건 제로보드에 보시면 알겠지만, 어떤 페이지에서 로그아웃을 했는가 하는 것입니다.

자 이제 플래쉬에 대한 설명이 끝났습니다. 다른 액션들은 기본적이거나, 혹은 간단한 것이므로 모두 생략하고...
php로 넘어가겠습니다....



----------------------------login.php----------------------------
//이 파일은 플래쉬가 로그인하기 위해 셋팅된 php파일입니다...
//제작자 : SoChokSae, kosan7804@msn.com
//홈페이지 : http://sochoksae.new21.org
<?
$connect=mysql_connect("localhost","id","pass"); //MySQL에 접속, 자신의 서버에 맞게 설정하세요...
mysql_select_db("dbname", $connect); //DB선택, 자신의 서버에 맞게 설정하세요...

        if(!$user_id) {echo ("&loading=ok&error=error&msg=아이디를 입력하세요&");    exit;} //아뒤가 입력되지 않았을때 에러구문 출력
        if(!$password) {echo ("&loading=ok&error=error&msg=비밀번호를 입력하세요&");    exit;} //패스워드가 입력되지 않았을때 에러구문 출력

//아이디와 패스워드값으로 회원정보 로드, 이 쿼리가 실행되지 않으면 로긴정보가 틀린것임
$result=mysql_query("SELECT * FROM zetyx_member_table where user_id='$user_id' and password=password('$password')") or error(mysql_error());

//회원정보 출력
while($row=mysql_fetch_array($result))
{
$no = $row[no];
$user_id = $row[user_id];
$level = $row[level];
$name= $row[name];
$email= $row[email];
echo "&no=$no&user_id=$user_id&level=$level&name=$name&email=$email&<br><br>";
//로그인 성공일때 결과 출력
echo "&loading=ok&error=ok&msg=로그인 성공&";
}
//실패일때 실패문 출력
if($no==""){
        echo ("&loading=ok&&error=error&&msg=아뒤/비번을 다시 확인하세요.&");
}
mysql_free_result($result);

mysql_close();

?>
----------------------------------------------------------------------
간단하죠???
아이디를 먼저 체크한후 아이디가 없는것인지, 패스워드가 틀린것인지 구분을 해야 하는데... 아직은 미흡하군요....

----------------------------login_check.php----------------------------
<?
//이 파일은 제로보드가 로그인을 하였는지 검사하여 플래쉬를 로그인하기 위해 셋팅된 php파일입니다...
//제작자 : SoChokSae, kosan7804@msn.com
//홈페이지 : http://sochoksae.new21.org

//제로보드의 파일 불러 오기
   $_zb_url = "http://sochoksae.new21.org/zboard/";
        $_zb_path = "/wecan3/kosan7804/sochoksae.new21.org/zboard/";
   include $_zb_path."outlogin.php";

//outlogin.php에서 아이디를 가져옴
$user_id=$member[user_id];

//outlogin.php에서 로그인을 하였는지 체크한다.
if (!$member[user_id]) {
        echo "&loading=ok&error=error&msg=로그인하지 않았습니다.&"; // 로그인 하지 않았을 경우 출력문
        exit;
} else{
        echo "&loading=ok&error=ok&msg=로그인 성공&<br><br>"; // 로그인 하였을 경우 출력문
        // 기타 회원 정보를 가져오는 부분
        $result=mysql_query("SELECT * FROM zetyx_member_table where user_id='$user_id'") or error(mysql_error());

        while($row=mysql_fetch_array($result))
        {
                $no = $row[no];
                $user_id = $row[user_id];
                $level = $row[level];
                $name= $row[name];
                $email= $row[email];
                echo "&no=$no&&user_id=$user_id&&level=$level&&name=$name&&email=$email&";
                }
}
?>
----------------------------------------------------------------------
음... 이것도 간단하죠???
제로보드의 outlogin.php파일에서 로그인하였는지를 $member[user_id]값으로 판별한후 값이 있으면 제로보드가 로그인을 하였다는 것일테고...
그러면 회원의 정보를 출력하라는 것이죠...
이 회원의 정보가 바로 플래쉬 로그인 이후 출력이 되겠조....
이 회원정보는 제가 만든 게시판과 연동되기 위한 것입니다.
제 플래쉬 게시판은 로그인과 레벨에 따라 글을 쓰지 못하거나, 읽지 못하는 기능이 추가된 게시판이라...
아직 제작중인데.... 작업율이 90%를 넘어 서고 있군요....

별도의 소스 파일은 플래쉬 소스 파일만 올립니다.
올리는 곳은 제 홈페이지입니다.
http://sochoksae.new21.org/zboard/zboard.php?id=p_product

php는 위의 예제를 그대로 복사하셔서 쓰시면 됩니다.

이 php파일과 플래쉬 파일로 엉뚱한짓 하지 말아 주시구요....
업데이트를 하시는 분들은 강력 추천합니다. 단, 업데이트 하실때에는
업데이트 후의 파일을 제 홈페이지
http://sochoksae.new21.org/zboard/zboard.php?id=d_product
로 올려 주시기 바랍니다.

이메일을 통한 문의사항은 받지 않습니다.
모두 홈페이지를 이용하여 주시기 바랍니다.
제 홈피가 썰정한 관계로.... ^^:;;

하하....