본문 바로가기
Program/PHP

[그누보드5] 그누보드를 로그인 전용 사이트로 바꾸기

by 한빛가람 2021. 12. 7.
반응형

그누보드로 사이트를 만들다 보면, 인트라넷 구축이나 기타 사유로 로그인만 가능한 사이트로 제작해야 하는 경우가 많습니다.

 

그럴 때 쓰면 아주 좋은 꿀팁입니다.

그누보드로 만든 사이트를 로그인 전용으로 바꾸기

 

1. /extend/ 폴더에 파일을 하나 생성합니다.

- only_login.extend.php

 

2. 생성한 파일 내용을 다음 내용으로 변경합니다.

<?php
if(!defined('_GNUBOARD_')) exit; // 개별 파일 접근 제한

/***
 *깔끔하게 써도 되지만, 이해를 위해서 더렵게 씁니당. The Love(???)
 */
if($is_guest){
  $_allow = [
    'allowList'=>[
      '/bbs/login.php',
      '/bbs/login_check.php'
    ],
    'path'=>$_SERVER['SCRIPT_NAME']
  ];
  
  if(array_search($_allow['path'], $_allow['allowList'])===FALSE){
    goto_url(G5_BBS_URL.'/login.php');
  }
  
  unset($_allow);
}

 

3. 로그인 전용으로 적용 된 사이트를 확인하시면 됩니다.

 

로그인 페이지로 가는 원리는 그누보드의 구조를 파악하면 쉽습니다.

is_guest 비로그인 사용자
is_member 회원, 관리자
is_admin 사이트 관리자, 게시판 관리자

is_guest로 조건을 주어 비로그인 사용자에게만 조건을 적용하게 했고,

허용 리스트 배열 내에서 현재 로그인 페이지 파일이름을 검색한 뒤 나오지 않으면 바로 로그인 페이지로 이동하게 처리하는 구조입니다.

 

이후 $_allow 배열의 재사용을 막기 위해 unset으로 배열을 메모리 상에서 제거합니다.

goto_url의 경우엔 그누보드 내장 함수입니다.

 

여기서 알아두시면 좋은 점이, 그누보드가 웹 폴더 최상위에 있는걸 전재로 작성한 소스코드로, 하위폴더에 그누보드를 설치한 경우 허용리스트의 /bbs/ 부분에 하위폴더명을 추가해줘야합니다.

크리에이티브 커먼즈 라이선스
한빛가람 필자가 게시한 대부분의 블로그 게시물은 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다. 게시물에 CCL이 적용되지 아니하다고 적혀있는 경우엔 본 라이선스 적용 대상이 아닙니다.

댓글0