본문 바로가기

개발자 팁

제로보드(ZeroBoard)와 자체 홈페이지 회원의 연동

개요..

 

쇼핑몰 또는 게임사이트와 같은 회원제 홈페이지에서 제로보드(ZeroBoard) 게시판을 설치할 경우, 로그인 된 사용자가 글을 쓸 경우 상호 연동이 되지 않아 불편한 상황이 발생됩니다.

 

그것을 해결할 수 있는 회원제 홈페이지와 제로보드와 자체 회원의 연동되는 방법을 설명합니다.

 

참고 : http://blog.naver.com/inidu2/100017877126

 

 

1. 제로보드와 자체 회원의 연동을 위한 테이블을 추가합니다.

CREATE TABLE `zb_with_user` (

        `no` int(11) NOT NULL auto_increment,

        `userid` varchar(32) NOT NULL,

        PRIMARY KEY    (`no`,`userid`)

    ) ENGINE=MyISAM DEFAULT CHARSET=euckr

 

 

2. 회원이 로그인 하는 시점에서 정보를 세션에 추가합니다.

<?

    include "_head.php";

 

    // ...

    // 로그인 성공 되었음 (아이디:$userid);

    // ...

 

    // 사용자의 no 를 구하거나 생성한다.

    $query = "select * from zb_with_user where userid = '$userid'";

    $result = mysql_query( $query );

    $row = mysql_fetch_array( $result );

 

    if( $row == NULL )

    {

    $query = "insert into zb_with_user( no, userid ) values( default, '$userid' )";

    $result = mysql_query( $query );

    }

 

    if( $row != NULL )

    {

    // 사용자 정보를 복사한다.

    $member_info['no']     = $row[0];

    $member_info['level']     = 5;

    $member_info['password']    = $userid;

    $member_info['name']     = $userid;

    $member_info['email']     = $userid;

 

    // 4.0x 용 세션 처리

    $zb_logged_no     = $member['no'];

    $zb_logged_time     = time();

    $zb_logged_ip     = $REMOTE_ADDR;

    $zb_last_connect_check = '0';

 

    // 제로보드 세션 생성

    session_register("zb_logged_no");

    session_register("zb_logged_time");

    session_register("zb_logged_ip");

    session_register("zb_last_connect_check");

    session_register("member_info");

    }

?>

 

 

 

3. lib.php의 member_info() 함수를 다음과 같이 수정합니다.

function member_info() {

 

    global $HTTP_SESSION_VARS, $member_table, $REMOTE_ADDR, $member, $connect;

 

    if(defined("_member_info_included")&&$member[no]) return $member;

    define("_member_info_included", true);

 

    // 로그인시 사용한 세션 정보 사용

$member = $_SESSION['member_info'];

    if($member[no]) return $member;

 

    if($HTTP_SESSION_VARS["zb_logged_no"])

    {

    $member=mysql_fetch_array(mysql_query("select * from $member_table where no ='".$HTTP_SESSION_VARS["zb_logged_no"]."'"));

    if(!$member[no]) {

    unset($member);

    $member[level] = 10;

    }

    } else $member[level] = 10;

 

    return $member;

}

 

 

 

4. 로그아웃시 세션을 제거합니다.

<?

    include "_head.php";

 

    session_destroy();

?>

 

 

5. 회원만 글 쓰기가 가능할 경우게시판 쓰기 권한을 5레벨로 수정합니다.

 

 

6.구현된 게시판의 모습