게시판 리스트에서 비밀글 노출하지 않기 정보
게시판 리스트에서 비밀글 노출하지 않기본문
관리자가 게시글 작성시, 비밀글에 체크하면 일반회원에게 비밀글이 리스트에서 노출되지 않습니다.
단, 관리자에게는 보입니다.
일반회원 접속시
관리자접속시
bbs/list.php파일을 수정해 줍니다.
1.상단
비밀글을 설정하면 wr_option에 secret이 저장되더라고요. 그래서 관리자와 그 외 멤버를 구분하여 하단에 추가될 구문을 만들고, 목록생성시 목록넘버 때문에 숨겨진 목록 갯수를 구해줘서 빼줍니다.
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$secret = 'secret';
$secretSQL = " and wr_option NOT LIKE '%$secret%'";
$getSecretCount = "select COUNT(*) from {$write_table} WHERE wr_option LIKE '%$secret%'";
$secretRow = sql_fetch($getSecretCount);
$secretNumber = $secretRow['COUNT(*)'];
if ($is_admin) {
$secretSQL = "";
$secretNumber = 0;
}
2.mysql구문 추가 및 카운트조절
검색시 비밀글 제외를 시키기위하여 수정해줍니다
if ($sca || $stx || $stx === '0') { //검색이면
$is_search_bbs = true;
$secretNumber = 0;
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];
if (!$spt) $spt = $min_spt;
$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']}){$secretSQL}";
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
// 라엘님 제안 코드로 대체 http://sir.kr/g5_bug/2922
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
}else {
$sql_search = "";
$total_count = $board['bo_count_write']-$secretNumber;
}
if ($is_search_bbs) {
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_order} limit {$from_record}, $page_rows ";
} else {
$sql = " select * from {$write_table} where wr_is_comment = 0 {$secretSQL}";
if(!empty($notice_array))
$sql .= " and wr_id not in (".implode(', ', $notice_array).") ";
$sql .= " {$sql_order} limit {$from_record}, $page_rows ";
}
관리자에게만 노출되는 기능이지만, 특정권한이상 회원에게만 노출되는 기능으로 발전 시킬 수 있을 것 같습니다. 저처럼 초보분들께 조금이나마 도움이 되면 좋겠습니다.
7
댓글 12개
혹시 이렇게 처리하면 혹시 게시글이 많으면 뻗어버리진 않겟죠
일단 이걸로 테스트사이트에 적용하면서 지켜보겟읍니다
감사합니다.
덕분에 어려운 것 해결했습니다 ^^
이거 검색이나 분류하면 안돌아가는데 방법이 있을까요..ㅠ
분류 나오는 법!!
2.mysql구문 추가 및 카운트조절
검색시 비밀글 제외를 시키기위하여 수정해줍니다
if ($sca || $stx || $stx === '0') { //검색이면
$is_search_bbs = true;
$secretNumber = 0;
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];
if (!$spt) $spt = $min_spt;
$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']}){$secretSQL}";
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
// 라엘님 제안 코드로 대체 http://sir.kr/g5_bug/2922
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
}else {
$sql_search = "";
$total_count = $board['bo_count_write']-$secretNumber;
}
이 부분 때문에 오류가 생깁니다.
if ($sca || $stx || $stx === '0') { //검색이면
$is_search_bbs = true;
$secretNumber = 0;
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];
if (!$spt) $spt = $min_spt;
$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})){$secretSQL}";
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
// 라엘님 제안 코드로 대체 http://sir.kr/g5_bug/2922
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
$result = sql_query($sql);
$total_count = sql_num_rows($result);
}else {
$sql_search = "";
$total_count = $board['bo_count_write']-$secretNumber;
}
이거 넣으세요.
$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})){$secretSQL}";
이부분에 ")" 소괄호가 빠져있었어요!!