워드프레스, 그누보드 연동

워드프레스, 그누보드 연동

현재 길호넷에서 워드프레스와 그누보드를 연동한 방식입니다.

사이트를 좀 더 안정화를 시킨 후 소스를 공개하려고 하였는데, 그누보드 사용자분의 요청(?)으로 급조하여 만든걸 올립니다. (http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=741180)

추후, 그누보드의 head.php, tail.php 에서 워드프레스에서 생성된 페이지를 직접 불러들이고, 캐쉬 처리 및 컨텐츠 영역을 상하로 나눈 후 출력하는것을 생각하고 있습니다.

  • 워드프레스 회원 DB 를 기반으로 그누보드와 연동되어, 게시판 글 작성시 워드프레스의 로그인에 따라 액션을 취합니다.
  • 그누보드를 gnu.kilho.net 로 사용하고 있습니다. 따라서 워드프레스에서 서브도메인과 쿠키를 공유할 수 있게 하여야 합니다.
    (길호넷에서는 “root Cookie” 라는 플러그인을 사용하였습니다)
  • 워드프레스와 그누보드가 각각의 서버로 운영되고 있습니다. 소스 내용 중 자신의 워드프레스가 설치된 서버IP, 워드프레스가 설치된 도메인 정보를 각각 수정하세요.
  • 워드프레스가 설치된 서버에 아래 소스를 “wp-sso.php” 로 저장합니다.
<?
	/********************************************************
	 * 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_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.'';
		echo '<nick>'.$user->display_name.'</nick>';
		echo '<email>'.$user->user_email.'</email>';
		echo '<url>'.$user->user_url.'</url>';
	}
?>

  • 그누보드가 설치된 서버의 “/extend/” 디렉토리에 아래 소스를 “wp-sso.php”로 저장합니다.
<?
/*
 그누보드 확장 모듈 : 워드프레스 SSO 처리
 */
$wp_server_domain = '워드프레스 설치된 도메인'; // xxx.com
$wp_server_addr = '워드프레스 설치된 서버 IP'; // xxx.xxx.xxx.xxx
$wp_server_path = '워드프레스 설치된 경로'; // 루트일 땐 '/' 로 작성

$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{
		echo 'Connection failed';
		exit;
	}
}
?>

Comments (12)

  • 김수명

    제가 찾고 있는 내용이네요?? 답변 꼭 부탁드립니다.

    제가 운영하고 있는 워드프레스 K-BOARD 게시판에

    학교서버에 등록되어 있는 계정을 가지고 있는 사람만

    글을 쓰게 하고 싶습니다. 도움 부탁드립니다.

    답변 꼭 부탁드립니다.

    2017년 5월 19일 at 4:10 오후
    • 오길호

      학교 서버의 계정을 관리할 수 없다면 불가능한 방법입니다. 현재 적은 내용은 워드프레스를 기본 베이스로 하여 타 솔루션과 연동하는 구조라 말씀하신 내용과는 다른것 같습니다 ^^

      2017년 5월 20일 at 3:52 오후
  • 맑은빛

    감사합니다 🙂

    2012년 7월 21일 at 1:58 오후
  • cshop

    오길호님께 질문을 드릴려고 로그인을 하려니 로그인이 되지 않습니다. 게시판에 글을 쓸수가 없어서 죄송하지만 이곳에 남깁니다.

    제가 5월달에 등록해서 받았던 비번은

    사용자 이름: cshop
    비밀번호: x6rnn9DBwHCi

    이렇게 되는데 로그인도 되지 않고 새 비번도 제 이메일로 발송되지 않네요…. 이메일 주소를 바꿔서 등록을 해도 새로 등록도 되지 않습니다.

    저는 몇년전부터 개인 홈피를 WP 로 쓰고 있었어서 오길호님께서 5월달에 연동 소스를 공개해 주셔서 매우 반가웠는데, 사용은 하지 않았었습니다. 아직 쓸일이 없었어서….

    오늘 설치해보니 작동이 되긴 되는데, 아후.. 제가 한국어가 서툴러서…

    http://hackya.com/dtd/extend/wp-sso.php 여기가 그누보드

    출력되는 것도 없고, 에러메세지도 뜨지 않습니다.

    http://hackya.com/blog/wp-sso.php 여기가 WP 입니다.

    testtesteonsalt@gmail.com (test 가 ID)

    여기서는 로그인 된 value (test) 가 두번 출력됩니다. ㅠㅠ

    저는 css 하고 .js/jQuery 밖에 할줄 아는게 없어서요…. php 는 아주 아주 기초적인 것 밖에 모릅니다. 그래서 이걸 어떻게 해결해야 할지도 모르겠네요….

    저는 예제와 달리 그냥 같은 웹사이트에서 블로그와 DTD (그누보드) 를 돌리고 있어서.. 이런 현상이 일어나는 것 같은데 (제 생각에는), 도움을 부탁드려도 될까요? 꾸벅….

    php 는 아주 기본적인 상식밖에 없는 관계로 제가 해결할 수 있는 부분이 아니라서… ㅠㅠ

    2012년 6월 24일 at 11:26 오전
    • 오길호

      길호넷을 서비스 받는 웹호스팅에서 메일 발송이 차단 된 듯하여 해당 업체에 문의를 해두었습니다.

      hackya.com 에서 로긴을 하고 확인을 해보려고 헀는데.
      회원가입이 되질 않아서 확인을 못하고 있습니다.

      비밀번호를 메일로 드렸으니, 좀 더 자세하게 질문게시판에 글 남겨주세요

      2012년 6월 24일 at 11:38 오전
      • cshop

        네. 보내주신 로그인 비번을 받아서 질문을 다시 올려 놓았습니다.

        감사합니다.

        2012년 6월 25일 at 1:32 오전
    • 오길호

      현재 메일발송 서버를 Google SMTP 를 이용하도록 하였습니다.
      사용중인 웹호스팅과 별개로 메일을 발송할 수 있도록 하였으니, 비밀번호 찾기를 하시면 정상적으로 됩니다.
      (모르고 있었는데, 감사합니다 ^^)

      2012년 6월 24일 at 11:47 오전
  • MWP

    안녕하세요. SIR에서 링크를 타고 왔습니다.
    워드프레스와 그누 연동 하는데, 조금 어렵네요..ㅠ
    제가 실력이 미천해서 어느 부분 설정이 잘못 되었는지 좀 봐주시면 정말 감사하겠습니다.

    1. gnuboard 폴더 내에 adm,bbs…죽 업로드하고, 서브도메인을 괄호와 같이 생성했습니다. (mydomain.com/gnuboard = gnuboard.mydomain.com)

    2. 워드프레스와 그누보드가 설치된 서버ip는 똑같습니다. DB는 별도로 신규 생성하지 않고, 기존의 DB에 함께 설치되어 있습니다.
    – 다시말하면, 그누보드 세팅시에 DB명을 기존 DB명과 동일하게 설치했습니다.

    3. 워드프레스에서 [root Cookie] 플러그인을 설치하고, 설정을 Allow Cookies to go across All Subdomains에 체크를 했습니다.

    4. 워드프레스가 설치된 FTP루트(wp-admin,wp-content… 폴더 및 파일들이 있는 루트)에 윗부분에 정리하신 wp-sso.php를 생성하여 업로드하였습니다.

    5. 그누보드가 설치된 /gnuboard/extend 폴더에 아래부분에 정리하신 wp-sso.php를 생성하여 업로드하였습니다.

    – 수정 설정한 부분
    $wp_server_domain = ‘mydomain.com’; //워드프레스가 설치된 도메인
    $wp_server_addr = ‘mydomain.com의 ip’; // 워드프레스가 설치된 서버의 IP

    위와 같이 했을 때, 현상이 이렇습니다.
    워드프레스에서 로그인 후에, mydomain.com/gnuboard 또는 gnuboard.mydomain.com 으로 접속했을 때,
    로그인이 되어 있지 않는데, 관련팁을 좀 주시면 감사하겠습니다.

    2012년 5월 8일 at 1:36 오전
    • 오길호

      mydomain.com/wp-sso.php 로 접속하였을때 404 에러가 뜨지 않는지 확인부탁드립니다.
      그외 말씀 하신대로 하셨다면, 정상적으로 작동이 되야 될텐데 이상하네요.
      (참, 추가 질문은 “질문게시판” 에 올려주세요)

      2012년 5월 8일 at 2:53 오전
    • 그누테스트

      질문게시판을 보고 해결하였습니다.

      오길호님 연동프로그램 정말 감사하네요. ㅎㅎ

      2012년 7월 31일 at 12:11 오전
  • cshop

    정말 감사합니다. ^^

    2012년 5월 6일 at 1:21 오전
  • 전진

    감사합니다. ^^

    2012년 5월 5일 at 6:29 오후

답글 남기기

이메일 주소는 공개되지 않습니다. (* 질문, 건의사항 등은 "질문게시판"을 이용해주세요)