지난 주인가요? phpBB 와 기존의 사이트(시스템 A)의 사용자 계정을 연동하여, 단일 로그인으로 처리하는 부분에 대한 글을 썼었습니다. 시스템 A의 로그인 정보를 이용하여 phpBB에 로그인하는 것은 잘 되는데, 만약 시스템 A에서 로그아웃을 하게 되면, phpBB 역시 로그아웃을 해주어야 합니다. 그렇지 않으면 시스템A에서는 로그 아웃이 된 상태인데, phpBB 페이지로 들어가면 해당 사용자가 로그인한 것으로 인식되는 문제가 발생하게됩니다.
phpBB는 로그 아웃시 includes/sessions.php 에 선언된 session_end() 함수를 이용하여 세션을 정리하게 됩니다. 따라서 여기서도 해당 내용을 호출하면 됩니다. 시스템 A의 로그아웃을 처리하는 함수에서 직접 includes/sessions.php 를 include 하여 해당 함수를 호출할 수 도 있으나, 그렇게 되면 의존성의 측면에서 전체 시스템의 모습이 안 좋아질 수 있으므로, 간단한 파일을 하나 더 생성합니다. 저의 경우는 phpBB 디렉토리 바로 아래에 session_end.php 라는 이름으로 만들었습니다.
[session_end.php]
<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
$userdata = session_pagestart($user_ip, PAGE_LOGIN);
init_userprefs($userdata);
session_end($userdata['session_id'], $userdata['user_id']);
?>
<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
$userdata = session_pagestart($user_ip, PAGE_LOGIN);
init_userprefs($userdata);
session_end($userdata['session_id'], $userdata['user_id']);
?>
위의 파일을 로그 아웃을 하는 쪽에서 include 하면 되겠지요, 아래처럼요..
...
session_unset();
include("/phpBB2/session_end.php");
...
session_unset();
include("/phpBB2/session_end.php");
...
댓글을 달아 주세요