\"; exit; } }else{ if($wp_cookie_value) { // 메인 서버에서 정보 취득 $fp = fsockopen($wp_server_addr,80,$errno,$errstr,3); if($fp) { fputs($fp, \"GET {$wp_server_path}wp-sso.php HTTP/1.1\\r\\n\"); fputs($fp, \"Accept: */*\\r\\n\"); fputs($fp, \"Accept-Language: ko\\r\\n\"); fputs($fp, \"User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1)\\r\\n\"); fputs($fp, \"Host: $wp_server_domain\\r\\n\"); fputs($fp, \"Connection: Close\\r\\n\"); fputs($fp, \"Cookie: $wp_cookie_name=$wp_cookie_value\\r\\n\"); fputs($fp, \"\\r\\n\"); $data = ''; while(!feof($fp)) { $data .= fgets($fp,1024); } fclose($fp); if($data) { foreach(array('id', 'nick', 'email', 'url', 'password') as $value) { preg_match('@<'.$value.'>(.*?)@',$data,$matches); $wp_user[$value] = $matches[1]; } $wp_user[pass] = substr(str_shuffle('abcefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'), 0, 12); $sql = \" select mb_id from $g4[member_table] where mb_id='$wp_user[id]' \"; $row = sql_fetch($sql); if($row[mb_id]!=$wp_user[id]) { $sql = \" insert into $g4[member_table] set mb_id = '$wp_user[id]',mb_password = password('$wp_user[pass]'), mb_name = '$wp_user[nick]', mb_nick = '$wp_user[nick]', mb_email = '$wp_user[email]', mb_homepage = '$wp_user[url]', mb_datetime = '$g4[time_ymdhis]', mb_ip = '$_SERVER[REMOTE_ADDR]', mb_level = '$config[cf_register_level]' \"; sql_query($sql); }else{ $sql = \" update $g4[member_table] set mb_nick = '$wp_user[nick]', mb_email = '$wp_user[email]', mb_homepage = '$wp_user[url]' where mb_id = '$wp_user[id]' \"; sql_query($sql); } unset($row); $mb = get_member($wp_user[id]); // 회원아이디 세션 생성 set_session('ss_mb_id', $mb[mb_id]); // FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함 - 110106 set_session('ss_mb_key', md5($mb[mb_datetime] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'])); // 페이지를 재실행 echo \"\"; exit; } }else{ echo 'Connection failed'; exit; } } } ?>","comment":[{"@type":"Comment","author":{"@type":"Person","name":"오길호","url":"https://kilho.top/forum/bbs/new.php?mb_id=newkilho"},"datePublished":"2012-10-27T23:59:50+09:00","text":"최고관리자로 로그인 하였을 경우, 그누보드 자체 어드민 접근 등을 위해 로그아웃 시키지 않겠금 되어 있습니다. 13 라인을 참고해주세요. 그외 일반 회원인 경우 워드프레스 로그아웃 시 그누보드 접근할 경우 로그아웃 됩니다."}]}]}

워드프레스 그누보드 연동, 로그아웃 문제.

로그인까지는 성공 했습니다.
하지만, 워드프레스에서 로그아웃을 하자,
그누보드는 그대로 로그인이 살아 있었습니다.
 
무엇이 잘못 되었을까요?
--------------------------------------------------------------------------------
워드프레스
<? /********************************************************
* WordPress SSO(Single Site On) Helper Object
* by Oh Kilho (http://www.kilho.net)
*******************************************************/

include 'wp-load.php';

// $wp_cookie = $_COOKIE['wordpress_logged_in_'.md5(get_site_option('siteurl'))];
// $wp_cookie = $_COOKIE['wordpress_logged_in_'.md5('')];
$wp_user = $_POST['user'];
$wp_pass = $_POST['pass'];

if($wp_user&&$wp_pass)
{
if(user_pass_ok($wp_user, $wp_pass))
$user = get_user_by('login', $wp_user);

}else{
if($wp_cookie)
{

wp_set_current_user(wp_validate_auth_cookie($wp_cookie, 'logged_in'));
$user = wp_get_current_user();
}

}

if($user)
{
echo '<id>'.$user->user_login.'</id>';
echo '<nick>'.$user->display_name.'</nick>';
echo '<email>'.$user->user_email.'</email>';
echo '<url>'.$user->user_url.'</url>';
}
?>
 
그누보드 ------------------------------------------------------------------------
<?
 /*
 그누보드 확장 모듈 : 워드프레스 SSO 처리
 */$wp_server_domain = 'alex.webzero.kr';//'워드프레스 설치된 도메인'; // xxx.com
 $wp_server_addr = 'alex.webzero.kr';//'110.45.139.52';//'워드프레스 설치된 서버 IP'; // xxx.xxx.xxx.xxx
 $wp_server_path = '/whome/alex/alex.webzero.kr/wp2/';//'워드프레스 설치된 경로'; // 루트일 땐 '/' 로 작성
 
 $wp_cookie_name = 'wordpress_logged_in_'.md5('http://'.$wp_server_domain);
 $wp_cookie_value = $_COOKIE[$wp_cookie_name];
 
 if ($_SESSION['ss_mb_id'])
 {
  // 총 관리자인 경우 열외 - 그누보드를 자체적으로 살펴볼 권한을 줘야야징
  if(!$wp_cookie_value&&$is_admin != 'super')
  {
   // 이호경님 제안 코드
    session_unset(); // 모든 세션변수를 언레지스터 시켜줌
    session_destroy(); // 세션해제함
    
    // 페이지를 재실행
    
    echo "<script type='text/javascript'> window.location.reload(); </script>";
    exit;
   }
  }else{
   if($wp_cookie_value)
   {
    // 메인 서버에서 정보 취득
    $fp = fsockopen($wp_server_addr,80,$errno,$errstr,3);
    
    if($fp)
    {
     fputs($fp, "GET {$wp_server_path}wp-sso.php HTTP/1.1\r\n");
     fputs($fp, "Accept: */*\r\n");
     fputs($fp, "Accept-Language: ko\r\n");
     fputs($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1)\r\n");
     fputs($fp, "Host: $wp_server_domain\r\n");
     fputs($fp, "Connection: Close\r\n");
     fputs($fp, "Cookie: $wp_cookie_name=$wp_cookie_value\r\n");
     fputs($fp, "\r\n");
     
     $data = '';
     
     while(!feof($fp))
     {
      $data .= fgets($fp,1024);
     }
     
     fclose($fp);
     
     if($data)
     {
      foreach(array('id', 'nick', 'email', 'url', 'password') as $value)
      {
       preg_match('@<'.$value.'>(.*?)</'.$value.'>@',$data,$matches);
       $wp_user[$value] = $matches[1];
      }
      $wp_user[pass] = substr(str_shuffle('abcefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'), 0, 12);
      $sql = " select mb_id from $g4[member_table] where mb_id='$wp_user[id]' ";
      $row = sql_fetch($sql);
      if($row[mb_id]!=$wp_user[id])
      {
        $sql = " insert into $g4[member_table]
             set mb_id = '$wp_user[id]',mb_password = password('$wp_user[pass]'),
               mb_name = '$wp_user[nick]',
               mb_nick = '$wp_user[nick]',
               mb_email = '$wp_user[email]',
               mb_homepage = '$wp_user[url]',
               mb_datetime = '$g4[time_ymdhis]',
               mb_ip = '$_SERVER[REMOTE_ADDR]',
               mb_level = '$config[cf_register_level]' ";
        sql_query($sql);
      }else{
        $sql = " update $g4[member_table]
                set mb_nick = '$wp_user[nick]',
                mb_email = '$wp_user[email]',
                mb_homepage = '$wp_user[url]'
               where mb_id = '$wp_user[id]' ";
           sql_query($sql);
      }
      unset($row);
      
      $mb = get_member($wp_user[id]);
      
      // 회원아이디 세션 생성
      set_session('ss_mb_id', $mb[mb_id]);
      // FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함 - 110106
      set_session('ss_mb_key', md5($mb[mb_datetime] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']));
      
      // 페이지를 재실행
      echo "<script type='text/javascript'> window.location.reload(); </script>";
      exit;
     }
    }else{
     echo 'Connection failed';
     exit;
    }
   }
  }
 
 
 
 ?>
 
 
 

Comments

  1. 최고관리자로 로그인 하였을 경우, 그누보드 자체 어드민 접근 등을 위해 로그아웃 시키지 않겠금 되어 있습니다.
    13 라인을 참고해주세요.

    그외 일반 회원인 경우 워드프레스 로그아웃 시 그누보드 접근할 경우 로그아웃 됩니다.

Q&A

[문의/피드백] Windows 11 환경에서 SecretDNS 실행 시 …
문의남깁니다
openside 연결이 자주 끊깁니다
시크릿 DNS 몇몇 해외 사이트들에서 로딩이 길어지는 현…
문의납김깁니다.
시크릿비디오 1.2에서 1.3으로 바꾼 후 일부 사이트에서…
이런부분을 개선해주셨으면 좋겠습니다.
KTimer 절전 모드로 전환 문의
케이플레이어 업데이트 후 Trojan:Script/Wacatac.C!ml …
칼무리 캡쳐
시크릿비디오에 작동 문제 문의
바탕화면에 아이콘
인터넷에서 시크릿 DNS를 깔았는데요
월드뷰 기능건의 + @
클립 영상으로 바뀐 주소는 다운로드 안돼는데 희안하게
ㄴㅇㅂ tv 동영상이 주소가 V로 되는 것만 다운로드 되…
네이버 동영상 검색에 있는 tv 주소들 다운로드 되게 해…
집매니아 기능 건의
케이플레이어 기능건의 드립니다
예약종료와 끄지마를 보고 남기는 작은 건의
예약종료 건의
기능 건의
시크릿모드에서 자꾸 캡챠인증하라고 떠요
티비룸 한글이름 다운로드 실패로 뜨네요..
문의남깁니다
집매니아 추후 커맨드라인 지원 계획 있는지?
시크릿dns 4.0.3 dns 설정 버그 문의
SecretDNS v4.0.2 DoH 옵션으로 initiate 불가 Issue Re…
K플레이어 문의 남깁니다
K플레이어 기능 추가 건의합니다.