전체검색, 게시판내의 검색에서 아이디 검색 제외하기

전체검색, 게시판내의 검색에서 아이디 검색 제외하기

QA

전체검색, 게시판내의 검색에서 아이디 검색 제외하기

답변 2

본문

전체검색, 게시판내의 검색에서 아이디(mb_id) 검색 제외하려고 아래 2가지를 했습니다.

1) lib/get_data.lib.php 에서 function get_board_sfl_select_options($sfl), function get_qa_sfl_select_options($sfl) 함수에서 mb_id 관련된 부분 삭제

2) skin/search 에서도 mb_id관련 부분 삭제

 

를 했습니다. 그런데 주소창에서 &sfl=wr_subject 대신에 &sfl=mb_id 로 바꾸고 &stx= 에 아이디를 넣으면 검색이 되더라구요.

검색창에 &sfl= 에 아이디를 넣어도 검색이 되지 않게 하려면 어떻게 해야할까요?

이 질문에 댓글 쓰기 :

답변 2

lib/common.php의 get_sql_search 함수에서 

case "mb_id" :
                case "wr_name" :
                    $str .= " $field[$k] = '$s[$i]' ";
                    break;

부분이 있을텐데

mb_id 부분이랑 wr_name을 같이 하지 말고 그냥 따로해서

$str .= " 1 = 0 " 으로해서 검색을 못하게 하면 되실거 같습니다. 메뉴에서 빼셨다니 직접 검색을 막는거면 해당 정도만 해도 되지 않을까 싶네요

답변 감사합니다. 아래와 같이 했는데도 주소창에서 mb_id나 wr_email 으로 변경을 하면 검색이 되어서요.
        // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)
        for ($k=0; $k<count($field); $k++) {
            $str .= $op2;
            switch ($field[$k]) {
                case 'wr_name' :
                    $str .= "$field[$k] = '$s[$i]'";
                    break;
                case 'wr_subject' :
                case 'wr_content' :
                    if (preg_match("/[a-zA-Z]/", $search_str))
                        $str .= "INSTR(LOWER({$field[$k]}), LOWER('{$search_str}'))";
                    else
                        $str .= "INSTR({$field[$k]}, '{$search_str}')";
                    break;
                default :
                    //$str .= "1=0"; // 항상 거짓
if (preg_match("/[a-zA-Z]/", $search_str)) $str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))";
else $str .= "INSTR($field[$k], '$search_str')";
                    break;
            }
            $op2 = " or ";
        }

sir.kr에서는 주소창에서 변경해서 검색하는 부분을 막아 놓은거 같은데,
그누보드 데모 또는 최신 그누보드에서도 주소창에서 변경을 하면 검색이 됩니다.
아래처럼 sfl 에 wr_email을 입력을 해도 검색이 됩니다.
https://demo.sir.kr/gnuboard5/bbs/search.php?sfl=wr_email%7C%7Cwr_content&sop=and&stx=test

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 498
© SIRSOFT
현재 페이지 제일 처음으로