테스트 사이트 - 개발 중인 베타 버전입니다

통합 검색에서 특정 그룹과 특정 게시판을 제외하고 싶어요 ㅠㅠ 도움부탁드립니다.. 채택완료

툥이 8년 전 조회 5,518

</p><p><?php</p><p>include_once('./_common.php');</p><p> </p><p>$tmp_gr_id = $gr_id;</p><p> </p><p>if(!$sfl) $sfl = 'wr_subject||wr_content';</p><p> </p><p>// Page ID</p><p>$pid = ($pid) ? $pid : 'search';</p><p>$at = apms_page_thema($pid);</p><p>include_once(G5_LIB_PATH.'/apms.thema.lib.php');</p><p> </p><p>// 스킨 체크</p><p>list($search_skin_path, $search_skin_url) = apms_skin_thema('search', $search_skin_path, $search_skin_url); </p><p> </p><p>// 설정값 불러오기</p><p>$is_search_sub = false;</p><p>@include_once($search_skin_path.'/config.skin.php');</p><p> </p><p>$g5['title'] = '전체검색 결과';</p><p> </p><p>if($is_search_sub) {</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>include_once(G5_PATH.'/head.sub.php');</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>if(!USE_G5_THEME) @include_once(THEMA_PATH.'/head.sub.php');</p><p>} else {</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>include_once('./_head.php');</p><p>}</p><p> </p><p>$skin_path = $search_skin_path;</p><p>$skin_url = $search_skin_url;</p><p> </p><p>$gr_id = $tmp_gr_id;</p><p> </p><p>$bo_list = array();</p><p>$search_table = Array();</p><p>$table_index = 0;</p><p>$write_pages = "";</p><p>$text_stx = "";</p><p>$srows = 0;</p><p> </p><p>$stx = strip_tags($stx);</p><p>//$stx = preg_replace('/[[:punct:]]/u', '', $stx); // 특수문자 제거</p><p>$stx = get_search_string($stx); // 특수문자 제거</p><p>if ($stx) {</p><p>    $stx = preg_replace('/\//', '\/', trim($stx));</p><p>    $sop = strtolower($sop);</p><p>    if (!$sop || !($sop == 'and' || $sop == 'or')) $sop = 'and'; // 연산자 and , or</p><p>    $srows = isset($_GET['srows']) ? (int)preg_replace('#[^0-9]#', '', $_GET['srows']) : 10;</p><p>    if (!$srows) $srows = 10; // 한페이지에 출력하는 검색 행수</p><p> </p><p>    $g5_search['tables'] = Array();</p><p>    $g5_search['read_level'] = Array();</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>$sql = " select gr_id, bo_table, bo_read_level, as_grade, as_equal, as_min, as_max from {$g5['board_table']} where bo_use_search <> '0' and bo_use_search <= '{$member['mb_level']}' and bo_list_level <= '{$member['mb_level']}' ";</p><p>    if ($gr_id)</p><p>        $sql .= " and gr_id = '{$gr_id}' ";</p><p>    $onetable = isset($onetable) ? $onetable : "";</p><p>    if ($onetable) // 하나의 게시판만 검색한다면</p><p>        $sql .= " and bo_table = '{$onetable}' ";</p><p>    $sql .= " order by bo_order, gr_id, bo_table ";</p><p>    $result = sql_query($sql);</p><p>    for ($i=0; $row=sql_fetch_array($result); $i++)</p><p>    {</p><p>        if ($is_admin != 'super')</p><p>        {</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>// 메뉴접근에 따른 검색차단</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>if(apms_auth($row['as_grade'], $row['as_equal'], $row['as_min'], $row['as_max'], 1)) {</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>continue;</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>}</p><p><span class="Apple-tab-span" style="white-space:pre">		</span> </p><p><span class="Apple-tab-span" style="white-space:pre">			</span>// 그룹접근 사용에 대한 검색 차단</p><p>            $sql2 = " select gr_use_access, gr_admin, as_show, as_grade, as_equal, as_min, as_max from {$g5['group_table']} where gr_id = '{$row['gr_id']}' ";</p><p>            $row2 = sql_fetch($sql2);</p><p>            // 그룹접근을 사용한다면</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>if (!$row2['as_show']) {</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>continue;</p><p>            } else if (apms_auth($row2['as_grade'], $row2['as_equal'], $row2['as_min'], $row2['as_max'], 1)) {</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>continue;</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>} else if ($row2['gr_use_access']) {</p><p>                // 그룹관리자가 있으며 현재 회원이 그룹관리자라면 통과</p><p>                if ($row2['gr_admin'] && $row2['gr_admin'] == $member['mb_id']) {</p><p>                    ;</p><p>                } else {</p><p>                    $sql3 = " select count(*) as cnt from {$g5['group_member_table']} where gr_id = '{$row['gr_id']}' and mb_id = '{$member['mb_id']}' and mb_id <> '' ";</p><p>                    $row3 = sql_fetch($sql3);</p><p>                    if (!$row3['cnt'])</p><p>                        continue;</p><p>                }</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>}</p><p>        }</p><p>        $g5_search['tables'][] = $row['bo_table'];</p><p>        $g5_search['read_level'][] = $row['bo_read_level'];</p><p>    }</p><p> </p><p>    $search_query = 'sfl='.urlencode($sfl).'&stx='.urlencode($stx).'&sop='.$sop;</p><p> </p><p> </p><p>    $text_stx = get_text(stripslashes($stx));</p><p> </p><p>    $op1 = '';</p><p> </p><p>    // 검색어를 구분자로 나눈다. 여기서는 공백</p><p>    $s = explode(' ', strip_tags($stx));</p><p> </p><p>    // 검색필드를 구분자로 나눈다. 여기서는 +</p><p>    $field = explode('||', trim($sfl));</p><p> </p><p>    $str = '(';</p><p>    for ($i=0; $i<count($s); $i++) {</p><p>        if (trim($s[$i]) == '') continue;</p><p> </p><p>        $search_str = $s[$i];</p><p> </p><p>        // 인기검색어</p><p>        insert_popular($field, $search_str);</p><p> </p><p>        $str .= $op1;</p><p>        $str .= "(";</p><p> </p><p>        $op2 = '';</p><p>        // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)</p><p>        for ($k=0; $k<count($field); $k++) {</p><p>            $str .= $op2;</p><p>            switch ($field[$k]) {</p><p>                case 'mb_id' :</p><p>                case 'wr_name' :</p><p>                    $str .= "$field[$k] = '$s[$i]'";</p><p>                    break;</p><p>                case 'wr_subject' :</p><p>                case 'wr_content' :</p><p>                    if (preg_match("/[a-zA-Z]/", $search_str))</p><p>                        $str .= "INSTR(LOWER({$field[$k]}), LOWER('{$search_str}'))";</p><p>                    else</p><p>                        $str .= "INSTR({$field[$k]}, '{$search_str}')";</p><p>                    break;</p><p>                default :</p><p>                    $str .= "1=0"; // 항상 거짓</p><p>                    break;</p><p>            }</p><p>            $op2 = " or ";</p><p>        }</p><p>        $str .= ")";</p><p> </p><p>        $op1 = " {$sop} ";</p><p> </p><p>    }</p><p>    $str .= ")";</p><p> </p><p>    $sql_search = $str;</p><p> </p><p>    $str_board_list = "";</p><p>    $board_count = 0;</p><p> </p><p>    $time1 = get_microtime();</p><p> </p><p><span class="Apple-tab-span" style="white-space:pre">	</span>$z = 0;</p><p>    $total_count = 0;</p><p>    for ($i=0; $i<count($g5_search['tables']); $i++) {</p><p>        $tmp_write_table   = $g5['write_prefix'] . $g5_search['tables'][$i];</p><p> </p><p>        //$sql = " select wr_id from {$tmp_write_table} where {$sql_search} ";</p><p>        //$result = sql_query($sql, false);</p><p>        //$row['cnt'] = @sql_num_rows($result);</p><p> </p><p>        $sql = " select count(wr_id) as cnt from {$tmp_write_table} where {$sql_search} ";</p><p>        $result = sql_fetch($sql, false);</p><p>        $row['cnt'] = (int)$result['cnt'];</p><p> </p><p>        $total_count += $row['cnt'];</p><p>        if ($row['cnt']) {</p><p>            $board_count++;</p><p>            $search_table[] = $g5_search['tables'][$i];</p><p>            $read_level[]   = $g5_search['read_level'][$i];</p><p>            $search_table_count[] = $total_count;</p><p> </p><p>            $sql2 = " select bo_subject, bo_mobile_subject from {$g5['board_table']} where bo_table = '{$g5_search['tables'][$i]}' ";</p><p>            $row2 = sql_fetch($sql2);</p><p>            $sch_class = "";</p><p>            $sch_all = "";</p><p>            if ($onetable == $g5_search['tables'][$i]) {</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>$sch_class = "class=sch_on";</p><p>            } else {</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>$sch_all = "class=sch_on";</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>            $bo_list[$z]['href'] = $_SERVER['SCRIPT_NAME'].'?'.$search_query.'&gr_id='.$gr_id.'&onetable='.$g5_search['tables'][$i];</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>$bo_list[$z]['name'] = (G5_IS_MOBILE && $row2['bo_mobile_subject']) ? $row2['bo_mobile_subject'] : $row2['bo_subject'];</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>$bo_list[$z]['cnt'] = $row['cnt'];</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>$z++;</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>}</p><p>            $str_board_list .= '<li><a href="'.$_SERVER['SCRIPT_NAME'].'?'.$search_query.'&gr_id='.$gr_id.'&onetable='.$g5_search['tables'][$i].'" '.$sch_class.'><strong>'.((G5_IS_MOBILE && $row2['bo_mobile_subject']) ? $row2['bo_mobile_subject'] : $row2['bo_subject']).'</strong><span class="cnt_cmt">'.$row['cnt'].'</span></a></li>';</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>}</p><p>    }</p><p> </p><p>    $rows = $srows;</p><p>    $total_page = ceil($total_count / $rows);  // 전체 페이지 계산</p><p>    if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)</p><p>    $from_record = ($page - 1) * $rows; // 시작 열을 구함</p><p> </p><p>    for ($i=0; $i<count($search_table); $i++) {</p><p>        if ($from_record < $search_table_count[$i]) {</p><p>            $table_index = $i;</p><p>            $from_record = $from_record - $search_table_count[$i-1];</p><p>            break;</p><p>        }</p><p>    }</p><p> </p><p>    $bo_subject = array();</p><p>    $list = array();</p><p> </p><p>    $k=0;</p><p>    for ($idx=$table_index; $idx<count($search_table); $idx++) {</p><p>        $sql = " select bo_subject, bo_mobile_subject from {$g5['board_table']} where bo_table = '{$search_table[$idx]}' ";</p><p>        $row = sql_fetch($sql);</p><p>        $bo_subject[$idx] = ((G5_IS_MOBILE && $row['bo_mobile_subject']) ? $row['bo_mobile_subject'] : $row['bo_subject']);</p><p> </p><p>        $tmp_write_table = $g5['write_prefix'] . $search_table[$idx];</p><p> </p><p>        $sql = " select * from {$tmp_write_table} where {$sql_search} order by wr_id desc limit {$from_record}, {$rows} ";</p><p>        $result = sql_query($sql);</p><p>        for ($i=0; $row=sql_fetch_array($result); $i++) {</p><p>            // 검색어까지 링크되면 게시판 부하가 일어남</p><p>            $list[$idx][$i] = $row;</p><p>            $list[$idx][$i]['href'] = './board.php?bo_table='.$search_table[$idx].'&wr_id='.$row['wr_parent'];</p><p> </p><p>            if ($row['wr_is_comment'])</p><p>            {</p><p>                $sql2 = " select wr_subject, wr_option from {$tmp_write_table} where wr_id = '{$row['wr_parent']}' ";</p><p>                $row2 = sql_fetch($sql2);</p><p>                //$row['wr_subject'] = $row2['wr_subject'];</p><p>                $row['wr_subject'] = get_text($row2['wr_subject']);</p><p>            }</p><p> </p><p>            $subject = apms_get_text($row['wr_subject']);</p><p>            if (strstr($sfl, 'wr_subject'))</p><p>                $subject = search_font($stx, $subject);</p><p> </p><p>            if ($read_level[$idx] <= $member['mb_level']) {</p><p> </p><p><span class="Apple-tab-span" style="white-space:pre">				</span>// 비밀글은 검색 불가</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>if (strstr($row['wr_option'].$row2['wr_option'], 'secret')) {</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>$content = '[비밀글 입니다.]';</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>} else {</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>// 확장 데이터</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>if($row['as_extend']) {</p><p><span class="Apple-tab-span" style="white-space:pre">						</span>$wr_extend = apms_unpack($row['wr_content']);</p><p><span class="Apple-tab-span" style="white-space:pre">						</span>$content = $wr_extend['content'];</p><p><span class="Apple-tab-span" style="white-space:pre">						</span>unset($wr_extend);</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>} else {</p><p><span class="Apple-tab-span" style="white-space:pre">						</span>$content = $row['wr_content'];</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>}</p><p><span class="Apple-tab-span" style="white-space:pre">				</span></p><p><span class="Apple-tab-span" style="white-space:pre">					</span>//$content = cut_str(strip_tags($row['wr_content']), 300, "…");</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>$content = apms_cut_text($content, 300);</p><p><span class="Apple-tab-span" style="white-space:pre">					</span>$content = str_replace(' ', ' ', $content);</p><p> </p><p><span class="Apple-tab-span" style="white-space:pre">					</span>if (strstr($sfl, 'wr_content'))</p><p><span class="Apple-tab-span" style="white-space:pre">						</span>$content = search_font($stx, $content);</p><p><span class="Apple-tab-span" style="white-space:pre">				</span>}</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>} else {</p><p>                $content = '[열람권한이 없습니다.]';</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>}</p><p> </p><p><span class="Apple-tab-span" style="white-space:pre">			</span>$list[$idx][$i]['bo_table'] = $search_table[$idx];</p><p>            $list[$idx][$i]['subject'] = $subject;</p><p>            $list[$idx][$i]['content'] = $content;</p><p>            $list[$idx][$i]['name'] = apms_sideview($row['mb_id'], get_text(cut_str($row['wr_name'], $config['cf_cut_name'])), $row['wr_email'], $row['wr_homepage'], $row['as_level']);</p><p>            $list[$idx][$i]['date'] = strtotime($row['wr_datetime']);</p><p> </p><p>            $k++;</p><p>            if ($k >= $rows)</p><p>                break;</p><p>        }</p><p>        sql_free_result($result);</p><p> </p><p>        if ($k >= $rows)</p><p>            break;</p><p> </p><p>        $from_record = 0;</p><p>    }</p><p> </p><p>    $write_pages = get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, $_SERVER['SCRIPT_NAME'].'?'.$search_query.'&gr_id='.$gr_id.'&srows='.$srows.'&onetable='.$onetable.'&page=');</p><p>    $write_page_rows = (G5_IS_MOBILE) ? $config['cf_mobile_pages'] : $config['cf_write_pages'];</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>$list_page = $_SERVER['SCRIPT_NAME'].'?'.$search_query.'&gr_id='.$gr_id.'&srows='.$srows.'&onetable='.$onetable.'&page=';</p><p>}</p><p> </p><p>$group_option = '';</p><p>$sql = " select gr_id, gr_subject, as_grade, as_equal, as_min, as_max from {$g5['group_table']} where as_show <> '0' order by gr_order, gr_id ";</p><p>$result = sql_query($sql);</p><p>for ($i=0; $row=sql_fetch_array($result); $i++) {</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>if(apms_auth($row['as_grade'], $row['as_equal'], $row['as_min'], $row['as_max'], 1)) {</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>continue;</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>}</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>$group_option .= "<option value=\"".$row['gr_id']."\"".get_selected($_GET['gr_id'], $row['gr_id']).">".$row['gr_subject']."</option>";</p><p>}</p><p> </p><p>$group_select = '<label for="gr_id" class="sound_only">게시판 그룹선택</label><select name="gr_id" id="gr_id" class="select"><option value="">전체 분류';</p><p>$group_select .= $group_option;</p><p>$group_select .= '</select>';</p><p> </p><p>if (!$sfl) $sfl = 'wr_subject';</p><p>if (!$sop) $sop = 'or';</p><p> </p><p>// 스킨설정</p><p>$wset = (G5_IS_MOBILE) ? apms_skin_set('search_mobile') : apms_skin_set('search');</p><p> </p><p>$setup_href = '';</p><p>if(is_file($skin_path.'/setup.skin.php') && ($is_demo || $is_designer)) {</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>$setup_href = './skin.setup.php?skin=search&ts='.urlencode(THEMA);</p><p>}</p><p> </p><p>include_once($skin_path.'/search.skin.php');</p><p> </p><p>if($is_search_sub) {</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>if(!USE_G5_THEME) @include_once(THEMA_PATH.'/tail.sub.php');</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>include_once(G5_PATH.'/tail.sub.php');</p><p>} else {</p><p><span class="Apple-tab-span" style="white-space:pre">	</span>include_once('./_tail.php');</p><p>}</p><p>?></p><p>

 

 

search.php 입니다.. 

여기서 그룹id가 aaa이라는 그룹과 게시판id가 bbb라는 게시판을 아예 읽어오지 못하도록 제외 시키고 싶어요. 어떻게 하면 좋을까요..? ㅠㅠ 어디를 수정해야할지 모르겠습니다.. 도움부탁드릴게요

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
8년 전

if ($gr_id)

    $sql .= " and gr_id = '{$gr_id}' ";

여기 바로 위에 추가
$sql .= " and gr_id != 'aaa' and bo_table != 'bbb' ";
if ($gr_id)
    $sql .= " and gr_id = '{$gr_id}' ";
아니면 제외하고 싶은 게시판 설정에서 전체 검색 사용 체크해제해도 됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

툥이
8년 전
항상 감사드립니다^^!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인