요기보드3   필수기초 선택과목 요기보드 그누보드 로그인

요기보드 Ver.3


관리자페이지

관리자페이지는 관리자 등급 이상인 회원들만 볼 수 있는 메뉴야.
우선 관리자 아이디로 로그인을 하면 상단 주메뉴 맨 우측에 [관리자] 라는 메뉴가 보이고, 여기를 클릭하면 관리자페이지로 들어 오면서, 가장 먼저 [최근게시글-admin_bbs.php] 를 보여 주고 있어.
우측 서브메뉴의 다른 메뉴를 가장 먼저 보여 주고 싶으면 menu_main.php 에서 [관리자] 버튼에 걸린링크 파일을 변경해 주면 되겠지?

관리자페이지

그리고 관리자 페이지의 부메뉴에 해당하는 모든 파일들은 admin 폴더에 저장하고 있는데, 이곳의 메뉴들은 다른 일반 사용자들이 보면 안되기 때문에 보안적인 측면에서 별도로 관리하기로 했어.
여러분의 웹사이트를 만들 때에는 이 admin 폴더의 이름을 그대로 사용하지 말고 다른 이름으로 변경하면 좀 더 안심 되겠지?
그리고 _config.php 에서 ADMIN_PATH 와 ADMIN_DIR 의 위치를 변경한 폴더 위치로 바꾸어 주면 돼.

이제 요기보드가 작동하는 흐름은 어느 정도 이해했을테니 가급적 간결하게 설명하도록 할께..

▶ 최근게시글
- admin_bbs.php

include_once('./_path.php');
if (!(isset($_SESSION['ssuno']) OR $_SESSION['sslevel'] >= ADMIN_LEVEL)) { // 관리자 레벨이 아니면 그냥 나간다.
    echo '

Not Found

'; echo 'Bad Command or requested URL was not found on this server.'; exit ; } $current_menu = '관리자' ; // 메인메뉴 $results_per_page = 20 ; // 페이지당 게시글 출력수 // 여기는 $catno 없음 - (모든 게시판의 댓글 포함한 최신글을 다 보여주는 메뉴이기 때문) include_once('../menu_sub.php');// 메인메뉴에 따른 부메뉴 include_once('../layout2.php'); echo '

게시판 최신글

'; // 상단제목 $isAdminMode = true; // 관리자 모드로 리스트 보여주기 $isComment = true; // 댓글 있으면 보여주기 $isList = true; // 하단에 리스트 다시 보여주기 include_once(YOGI_DIR . '/bbs.php');

위 쪽에 로그인을 안했거나, 로그인한 회원등급이 관리지 등급이 아니면 Not Found 화면만 보여주고 빠져 나가도록 했어.
이렇게 화면이 나오면 회원이 아니면서 관리자 페이지에 접근해 보려는 사람들이 "이런 주소가 없나?" 하고 착각해서 다시 시도하지 않도록 브라우저에서 주소 잘못 입력했을 때 나오는 메시지를 비슷하게 보여 주었어.
그냥 간단한 눈속임 이라고 할까?

그외 다른 부분들은 앞서 공부한 공지사항(notice.php), 게시판(free.php)과 비슷해.
다른 게시판과 다른 점이라면 bbs.php 를 include 하기 전에 아래 변수 옵션을 주었다는 점이야.
$isAdminMode = true; // 관리자 모드로 리스트 보여주기
이 변수는 bbs_list.php 에 갔을 때 게시글 출력을 약간 다르게 할 때 사용해.

생각해 보자구.
예를들어 자유게시판에서는 yg_bbs 테이블에서 SQL 쿼리문으로 게시글을 가져올 때 WHERE 절에서 catno=11 이고 parent=0 인 자료들만 가져 오고 있어.
yg_bbs 테이블에는 자유게시판의 글 뿐 만 아니라 모든 게시판의 글과 댓글까지 다 저장하고 있으니 자유게시판에 들어 갈 때는 자유게시판글(catno=11)과 원글(parent=0) 만 보여 줘야 하기 때문이지.

반면 관리자페이지의 [최근게시글]의 목적은 관리자가 여러 게시판에서 수시로 어떤 글들이 올라 왔는지, 또 어떤 댓글이 달렸는지 감시하는 것이니 특정 게시판 자료만 보이게 해서는 안되겠지?
bbs_list.php 에 한 번 가서 볼까?
- bbs_list.php

... 생략 ...
//******** 관리자 모드 (관리자 페이지에서 최신글 볼때 )************************************************************
if ($isAdminMode == true) {
    ... 생략 ...
    $query = "SELECT `bno`, `parent`, `datetime`, `subject`, `cmt`, `hit`, `writer` FROM yg_bbs WHERE (subject LIKE '%$search%' OR content LIKE '%$search%') ORDER BY `datetime` DESC" ;
    
    $result = mysqli_query($dbc, $query) or die('쿼리에러 bbs_list-요기3');
    while ($row = mysqli_fetch_array($result)) {
        ... 생략 ...
        if ($row['parent']) {
            echo $row['parent'].'&'.$pre_url.'">'.$row['subject'].'
'; echo '
' .substr($row['content'],0,200). '
'; // 댓글내용 조금만 보이게 } else { echo $row['bno'].'&'.$pre_url.'">'.$row['subject'].''; } ... 생략 ... } //******** 일반 사용자 모드 *************************************************************************************** } else { ... 생략 ... }

예상대로 여기서 if ($isAdminMode == true) 의 여부에 따라 관리자와 일반회원의 화면을 다르게 표시하고 있는 것을 볼 수 있어.

위쪽 관리자 모드에서는 SQL쿼리 문의 WHERE 절에 catno 나 parent 에 대한 조건이 없기 때문에 yg_bbs에 저장된 모든 데이터가 날짜역순(ORDER BY `datetime` DESC")으로 가져 오게 되어 있는 것을 볼 수 있어.
즉 원글, 댓글 모두 가져와 보여 준다는 거지.

그리고 가져온 데이터를 화면에 출력할 때에도 여기서는 자료가 댓글이면(if ($row['parent']) ) 제목(subject) 아래에 댓글의 내용도 200 자 (substr($row['content'],0,200))를 함께 보여 주도록 하고 있어.
substr() 은 PHP의 내장 함수로 변수내용의 어디부터(0), 어디까지(200) 만 뽑아 내는 함수야.
(PHP를 포함한 많은 컴퓨터 언어에서는 순서를 셀 때 0 부터 시작해. 즉 첫번째=0 , 둘째=1, 이런식이지..
그러므로 위 substr($row['content'],0,200)는 정확히 하자면 yg_bbs 테이블의 content 에서 첫번재 부터 201번째 내용까지 가져오라는 뜻이 돼... 그냥 알고 있으라고..)
충분히 이해 되지?

▶ 관리자 전용 게시판 (admin_only.php)
이 [관리자 전용 게시판]은 이전에 공부한 공지사항(notice.php) 와 똑같아.
단지 관리자 혼자 사용하기 위해 관리자메뉴에 있는 것이지.
그리고 일반회원이 주소줄에 입력해 들어 오는 것을 방지하기 위해 맨 윗줄에 최근게시글 처럼 관리자 등급인지 체크하는 기능이 추가된 것이 전부야.
아! 관리자 게시판의 catno 는 1 번으로 정했어.

▶ 회원정보 (admin_user.php)
[회원정보] 는 여러분의 홈페이지에 회원으로 가입한 회원들을 조회하고 등급을 변경하고, 간단한 메모사항을 적어 둘 수 있는 화면이야.
게시판에 광고글 만 올리는 사람을 강등 시키거나 탈퇴 시켜서 더이상 글을 올리지 못하게 하는 기능들은 여러분들도 많이 보았을 거야.
바로 이러한 작업을 하는 자리야.
요기보드가 다른 시스템과 다른 특징이라면 요기보드에서는 관리자가 회원 아이디도 변경할 수 있도록 했어.
보통의 웹보드의 회원테이블에서는 아이디가 회원테이블의 중심인데 반해 요기보드는 회원번호(uno)를 중심으로 하고 있어.

admin_user.php 회원관리 기능인 만큼 회원정보 리스트, 회원보기, 변경등의 작업을 yg_user 테이블에서 작업해.
그러니 bbs.php 를 include 해서는 안되겠지? bbs.php 는 yg_bbs 테이블을 위한 것이잖아.
그래서 회원정보는 adm_users.php 라는 별도의 파일을 include 하고 있는 것을 볼 수 있어.

이 adm_users.php 는 게시판에서 사용하는 bbs.php 와 흐름은 비슷한데 차이점이라면 yg_user 테이블을 사용하고 또 bbs.php 가 $action 변수에 따라 bbs_edit , bbs_view, bbs_list 등 필요한 모듈을 불러 오는데 반해 adm_users.php 는 수정, 보기, 리스트등의 모듈까지 몽땅 다 포함하고 있어.
이것은 이 모듈들이 여기저기서 사용될 경우가 거의 없고 오직 회원관리 메뉴 하나에서만 사용되기 때문에 굳이 나누지 않고 그냥 모두 하나의 php 안에 다 넣어서 구현했어.
이제는 여러분도 adm_users.php 를 에디터로 열어서 보면 내용을 충분히 이해할 수 있으리라 믿어..^^


목차제 목조회
284
160
126
114
120
112
69
82
64
64
80
97
114
48
67
67
68
85