게시판 관리자에게만 게시판 노출하기
본문
한 게시판에 여러명의 관리자를 두기 위해 common.lib.php 에 아래와 같은 소스를 추가했습니다.
$board_admin = explode(",",$board['bo_admin']);
foreach($board_admin as $admin_id){
if ($admin_id == $mb_id){
$board['bo_admin'] = $admin_id;
return 'board';
}
}
그런데 게시판 목록을 불러올 때 관리자가 여러명 지정된 게시판은 불러오지 못하네요ㅠ
테스트게시판-관리자 test1, test2 이렇게 지정한 경우는
test1아이디로 접속 시 보이지 않고 test2로 접속 시에도 보이지 않습니다. (최고관리자로 접속할 땐 다 잘 보입니다.)
for문에서 continue 조건을 변경하면 될 것 같은데.. 잘 안되네요.. ㅠ
현재는 아래처럼 설정되어 있습니다.
<!-- 최신글 시작 { -->
<?php
// 최신글
$sql = " select *
from `{$g5['board_table']}` a left join `{$g5['group_table']}` b on (a.gr_id=b.gr_id)
where a.bo_device <> 'mobile' ";
if(!$is_admin)
$sql .= " and a.bo_use_cert = '' ";
$sql .= " order by b.gr_order, a.bo_order ";
$result = sql_query($sql);// 반복문 - 게시글을 반복해서 불러와라
for ($i=0; $row=sql_fetch_array($result); $i++) {
if ($i%2==1) $lt_style = "margin-left:20px"; // nth-child(2n+1) 과 동일한 계산
else $lt_style = "";
if ($row['bo_list_level'] > $member['mb_level']) // 회원 레벨보다 게시판 레벨이 높으면 보여주지 마!
continue; //조건이 맞지 않는 행은 continue를 사용하여 배열에 넣는것을 막는 경우
if ((!$row['bo_admin'] || ($row['bo_admin'] && $row['bo_admin'] != $member['mb_id'])) && $is_admin != 'super')
//게시판 관리자 값이 비어있거나 || 게시판 관리자인데 게시판 관리자가 지정한 회원이 아닌 경우 + 최고관리자가 아닐경우
// ! = not,
// $a != $b 변수a값과 변수b값이 같지 않으면 true (두 변수의 값을 비교할 때 쓰입니다)
// !$a 변수a값이 없거나 flase값을 갖거나 값이 0이거나 하면 true (하나의 변수 값을 조사할 때 쓰입니다)
continue;
?>
<div class="index_item">
<a class="main-board" href="<?php echo G5_BBS_URL ?>/board.php?bo_table=<?php echo $row['bo_table']; ?>">
<?php
// 이 함수가 바로 최신글을 추출하는 역할을 합니다.
// 사용방법 : latest(스킨, 게시판아이디, 출력라인, 글자수);
// 테마의 스킨을 사용하려면 theme/basic 과 같이 지정
//echo latest('theme/basic', $row['bo_table'], 5, 25);
echo $row['bo_subject'];
?>
</a>
</div>
<?php
}
?>
<!-- } 최신글 끝 -->
if ((!$row['bo_admin'] || ($row['bo_admin'] && $row['bo_admin'] != $member['mb_id'])) && $is_admin != 'super')
이 부분을 바꿔야 할 것 같은데.. 아무리 바꿔봐도 모르겠어요ㅠㅠ 도와주세요..
!-->!-->답변 2
조건이 잘못된 것 같습니다.
$row['bo_admin'] 이건 어디서 오는건지 모르지만
일단 게시판관리에 넣었던 관리자는 여러명이므로 $row['bo_admin']은 누구인지 모를 가능성이 있습니다.
검색을 하려면 strstr()로 검색해야 하지 않을까요?
현재 로그인한 사람이 관리자인지 보려면
$is_admin == 'board' 라고 해야 게시판 관리자로 넣은 사람이 맞는지가 확인 될 것 같습니다.
해당 아이디로 로그인한 페이지 상단에서
echo $is_admin을 찍어보시면 관리자 지정된 사람은 board가 떠야 하니까요.
그리고 관리자 검사는
$board_admin = explode(",",$board['bo_admin']);
if(in_array($mb_id, $board_admin)) {
return 'board';
}
이렇게 하시면 간단하겠네요.
!-->common.lib.php is_admin() 함수안에 관리자가 정의 되어야 합니다.