list.php 조건문 문의드립니다.

list.php 조건문 문의드립니다.

QA

list.php 조건문 문의드립니다.

그누보드5(영카트) 버전

5.6.11

사용 PHP 버전

8.2

본문

안녕하세요.

 

board.php?bo_table=board1&filter=lv4 를 클릭하면 레벨4 회원이 작성한 게시물만 랜덤으로나오게

board.php?bo_table=board1&filter=lv3_4 를 클릭하면 레벨3,4 회원이 작성한 게시물만 랜덤으로나오게

board.php?bo_table=board1&filter=my 를 클릭하면 레벨상관없이 로그인한 회원이 작성한 게시물이 나오게
최고관리자는 위 어떤 링크를 눌러도 모든 게시물이 나오게 하려 하고 싶습니다.
board1 게시판 한정이구요..

 

 

아래는 bbs/list.php 소스입니다.



if ($bo_table === 'board1') {
    // 필터링 로직
    $filter = isset($_GET['filter']) ? $_GET['filter'] : '';
    // 비회원이 'my' 버튼을 클릭했을 때 처리 (비회원은 게시물 출력 안 됨)
    if (!$is_member && $filter === 'my') {
        $sql_search .= " AND 1=0 "; // 비회원은 게시물을 출력하지 않음
    }
    // 로그인한 사용자의 게시물만 출력 (my 필터)
    if ($filter === 'my' && $is_member) {
        $sql_search .= " AND mb_id = '{$member['mb_id']}' "; // 로그인한 사용자만 필터링
    } 
    // 레벨 4 사용자만 작성한 게시물 (lv4 필터)
    elseif ($filter === 'lv4') {
        // g5_member 테이블에서 레벨 4인 사용자들의 mb_id만 가져옴
        $sql_search .= " AND mb_id IN (SELECT mb_id FROM g5_member WHERE mb_level = 4) ";
        $sql_order = " RAND() "; // 랜덤 정렬
    } 
    // 레벨 3과 4 사용자만 작성한 게시물 (lv3_4 필터)
    elseif ($filter === 'lv3_4') {
        // g5_member 테이블에서 레벨 3 또는 4인 사용자들의 mb_id만 가져옴
        $sql_search .= " AND mb_id IN (SELECT mb_id FROM g5_member WHERE mb_level IN (3, 4)) ";
        $sql_order = " RAND() "; // 랜덤 정렬
    }
    // 최고 관리자는 모든 게시물 출력 (super admin)
    if ($is_admin == 'super') {
        $sql_search = ""; // 필터링을 제거
    }
}

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 ";
    if(!empty($notice_array))
        $sql .= " and wr_id not in (".implode(', ', $notice_array).") ";
    $sql .= " {$sql_order} limit {$from_record}, $page_rows ";
}

 

현재 lv4,lv3_4 를 클릭하면 아무게시물도 안나오고요..ㅠ

my를 클릭하면 누구나 다 전체 게시물이 나옵니다..ㅠ

더 중요한건

board1&filter=adsf

이렇게 필터명을 아무거나 치면 전체 게시물이 나옵니다.

어느부분이 잘못됐는지 고수님들의 고견 부탁드리옵니다...

이 질문에 댓글 쓰기 :

답변 2

저렇게만 해서는 안되고

 

1. if ($sca || $stx || $stx === '0' || $filrer) {     //검색이면 <===이 조건안에 넣어서 페이지 계산이 되도록 해야 합니다

2. if( !isset($filter) ) $filter=''; 1번 위쪽에 추가

3. 기존  $sql_search 다음에 위 코드를 넣으세요

4.  $qstr .= '&filter=' . $filter; 구문을 filter값이 있을 때 적용 되도록 추가하세요

======================================

 my를 클릭하면 누구나 다 전체 게시물 / 

더 중요한건 board1&filter=adsf 이렇게 필터명을 아무거나 치면 전체 게시물

<==이유는 이런 조건이 전혀 적용되지않기 때문입니다

if($is_search_bbs) <==이 조건이 true가 되어야 적용될텐데 이 값이 설정되는 곳

즉 위 1번 조건문 내에 있지않으니 $is_search_bbs 값이 false이기 때문

==================

filter조건이 쿼리에 적용 되는지 확인은 스킨상단에서 echo $sql;을 넣어서 확인

 

 

 

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT