쇼핑몰 또는 게임사이트와 같은 회원제 홈페이지에서 제로보드(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.구현된 게시판의 모습
|
비밀댓글입니다