2월 21, 2024

[그누보드] 관리자 로그인 안될 때 해결방법 (관리자 페이지 접속 불가할때)

그누보드로 커뮤니티를 제작하다가 스킨 변경을 해주었는데 갑자기 관리자 로그인이 되지 않는 현상이 발생했다.

 



관리자 페이지 오류 메세지

 

분명 아이디와 비밀번호를 잘 입력했는데 위와 같이 떠서 관리자 페이지에 접속되지 않아서 매우매우 당황스러웠다.

 

관리자페이지에 접속이 되어야지 홈페이지 제작을 이어나갈 수 있는데 그래서 홈페이지 초기화를 해야하나까지 생각을 했었다.

 

이 경우에는 그냥 새로운 회원으로 가입을 하여서 그 아이디에 관리자의 권한을 부여하는 식으로 문제를 해결했다.


우선,

<?
// 최고관리자
if ($member[mb_id] == 'admin1') $is_admin = 'super';


?>

위와 같은 식으로 php 파일을 생성해준다. 파일 제목은 상관없으며, 나는 newadmin.php로 했다. 기존에 admin같은 파일은 존재하기 때문에 FTP에서 잘 보고 겹치지 않는 이름으로 생성해주자.

 

위의 코드는 최고관리자의 권한을 id 'admin1'을 가진 사람에게 주자라는 뜻이다. 그러니깐 자신이 새로 회원가입할 때 만든 아이디를 admin1에 대신 입력해주면 되는 것이다.

 

그런 다음에 php 파일을 저장해주고 루트 디렉토리의 extend 폴더에다가 등록시켜놓자. 

그런 다음에 해당 아이디로 로그인해서 들어가면 다시 관리자 페이지로 이동하는 버튼이 보일 것이다. 이 방법을 사용하면 초기화를 하지 않아도 관리자 페이지로 들어가는 다른 방법이 생기는 것이다.

 

이 방법은 이렇게 관리자로그인이 안 될 때도 사용되지만, 단순히 관리자를 추가해주고 싶을 때도 유용하게 사용된다. 관리자페이지에 들어가서 일일히 관리자를 추가해주지 않아도 php 파일을 수정함으로써 한번에 해결할 수 있다.


이렇게 하면 새로 등록한 아이디가 관리자 페이지로 접근할 수 있는 권한은 부여되나, 최고관리자가 되었다는 뜻은 아니다.

기본환경설정 -> 최고관리자로 들어가서 바꾸어주어야 하는데, 처음에는 admin 계정만 있고 새로 추가한 아이디를 선택할 수 있는 칸이 보이지 않을 것이다.

 

이럴 경우, 또 extend 에 있는 코드를 수정해주는 것이 필요하다.

 

extend.user.config.php 파일에 들어가보면,

<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

?>

위와 같이 코드가 구성되어 있을 텐데, 이 부분을 다음과 같이 변경해주면 된다.

 

<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
//아래 부분의 코드를 추가
sql_query(" update {$g5['config_table']} set cf_admin = '새로만든 아이디' ");
sql_query(" update {$g5['member_table']} set mb_level = '10' where mb_id = '새로만든 아이디' ");
?>


이렇게 하고 다시 새로고침을 한 다음에 최고관리자로 들어가보면 내가 설정한 아이디값이 추가로 보이는 것을 알 수 있다. 

 

이것을 해준다음에 다시 코드를 원상복구시켜놓아야 한다.

다시,

<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
?>

원래 상태로 돌려놓아 php 파일을 올려두자. 이렇게 하면 최고관리자가 초기상태 admin에서 내가 설정한 아이디로 바뀐 것을 알 수 있다.


만약 최고관리자 권한을 주고 싶은 것이 아니라, 게시판관리자처럼 일부만 권한을 주고 싶을 때는 코드를 조금만 수정하면 된다.

// 게시판관리자
if ($bo_table == '게시판아이디')
{
    if ($member[mb_id] == 'id1') $is_admin = 'board';
   
    if ($is_admin == 'board') $board[bo_admin] = $member[mb_id];
}


위와 같이 코드를 작성해주면 게시판 관리자의 권한을 가진 사람 또한 추가를 해줄 수 있다.


 

마찬가지로, 그룹관리자의 권한을 주고 싶으면,


// 그룹관리자
if ($gr_id == 'groupid')
{
    if ($member[mb_id] == 'id1') $is_admin = 'group';
   }


위와 같이 코드를 조금만 수정해주면 된다.

 

위의 php 코드를 사용하여서 관리자 로그인에 난항을 겪을 때 슬기롭게 해결해보자.